npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@buildbutler/gitlab-ci

v1.0.8

Published

Build Butler GitLab CI reporter — posts pipeline data to BuildButler

Readme

BuildButler GitLab CI Integration

Reports GitLab CI pipeline data (builds, stages, test results, runners) to BuildButler.

Quick Start

1. Add your API key to GitLab CI/CD variables

In your GitLab project: Settings → CI/CD → Variables

| Variable | Value | Protected | Masked | |---|---|---|---| | BUILDBUTLER_API_KEY | Your API key from BuildButler | ✓ | ✓ |

2. Add the BuildButler job to your .gitlab-ci.yml

include:
  - remote: 'https://raw.githubusercontent.com/railflow/buildbutler/main/integrations/gitlab-ci/buildbutler.gitlab-ci.yml'

buildbutler:
  extends: .buildbutler-report

That's it. The job runs in the .post stage so it always executes after your pipeline completes.

Configuration

All configuration is via CI/CD variables:

| Variable | Required | Default | Description | |---|---|---|---| | BUILDBUTLER_API_KEY | Yes | — | Your BuildButler API key | | BUILDBUTLER_API_URL | No | https://api.buildbutler.dev | API endpoint (self-hosted installs) | | TEST_RESULTS_GLOB | No | "" | Glob for JUnit XML files, e.g. build/test-results/**/*.xml | | GITLAB_API_TOKEN | No | — | PAT with read_api scope — enables full runner fleet reporting |

Test Results

To report JUnit XML test results, set TEST_RESULTS_GLOB:

buildbutler:
  extends: .buildbutler-report
  variables:
    TEST_RESULTS_GLOB: "build/test-results/**/*.xml"

Artifacts must be available in the .post stage. Use artifacts: when: always on your test job:

test:
  script: ./gradlew test
  artifacts:
    when: always
    paths:
      - build/test-results/**/*.xml
    reports:
      junit: build/test-results/**/*.xml

Runner Reporting

By default, only the current runner is reported (using CI_RUNNER_DESCRIPTION from the environment — no token needed).

For full runner fleet visibility, add a GitLab PAT with read_api scope:

GITLAB_API_TOKEN = <your-personal-access-token>

What Gets Reported

  • Build: pipeline status, duration, branch, commit SHA, trigger source
  • Pipeline stages: each CI job name, status, and duration
  • Runner: current runner description, tags, and architecture
  • Test results: parsed from JUnit XML files (pass/fail/skip counts + individual test cases)

Self-Hosted GitLab

Set CI_SERVER_URL is automatically picked up from the GitLab CI environment. For self-hosted instances, CI_API_V4_URL is also pre-configured by GitLab — no extra setup needed.

Publishing a New Version

cd integrations/gitlab-ci
# bump version in package.json, then:
npm run build
npm publish --access public

Requires npm login as an owner of the @buildbutler org (npm login).

How Deduplication Works

Each pipeline produces a deterministic UUID from CI_PROJECT_PATH + CI_PIPELINE_ID. Re-running the reporter script for the same pipeline upserts the existing record rather than creating a duplicate.