GitLab CI Monitor
Monitor your GitLab pipelines in real time, right inside VS Code — across every repository in your workspace, in both the Explorer and the Source Control panels.
Inspired by and based on gitlab-pipelines by jameswain (ISC). See NOTICE.
Features
Requirements
The extension activates when a workspace folder contains a .gitlab-ci.yml file.
Configuration
Non-secret options live in settings.json, keyed by your git remote host (for gitlab.com it is gitlab.com):
"GitLabPipelines": {
"gitlab.com": {
"interval": 5000,
"notifyOnFailed": true
}
}
| Field |
Required |
Default |
Meaning |
interval |
|
5000 |
Refresh interval in milliseconds. |
notifyOnFailed |
|
true |
Show a notification when a pipeline fails. |
The domain and project are derived from each repo's git remote, so one entry per domain serves every repository hosted there.
The configuration key is intentionally GitLabPipelines for drop-in compatibility with the original extension.
Token (required)
A GitLab Personal Access Token
with read_api scope (or api if you want retry/cancel) is required. It is resolved from the
first source that has it, most secure first:
- VS Code Secret Storage (recommended). Run “GitLab CI: Set GitLab Token (Secret Storage)”
from the Command Palette and paste the token. It is stored in the OS keychain, never in a file.
Use “Clear GitLab Token (Secret Storage)” to remove it.
settings.json — a legacy plaintext "token": "<pat>" under your host still works, but is
discouraged. If one is present and Secret Storage has none, the extension copies it into Secret
Storage on startup and tells you that you can delete the plaintext entry.
GITLAB_TOKEN environment variable — used when VS Code is launched from a shell where it is
exported. Handy for keeping the token out of any settings file entirely.
Commands
All commands are under the GitLab CI category in the Command Palette:
| Command |
What it does |
| Refresh |
Re-poll every watched repository now. |
| Set GitLab Token (Secret Storage) |
Store a token for a host in the OS keychain. |
| Clear GitLab Token (Secret Storage) |
Remove a stored token for a host. |
| Retry / Cancel pipeline |
Also available as inline buttons in the tree. |
| View job log |
From a job's context menu; opens a cleaned, read-only trace. |
| Open in GitLab |
Click a pipeline or job. |
Development
npm install # dev dependencies only — the extension has zero runtime deps
npm run compile # type-check and build the extension into out/
npm run lint # ESLint (flat config, typescript-eslint)
npm run format # apply Prettier; npm run format:check verifies formatting
npm test # run the unit suite (node:test) — see test/
CI (GitHub Actions) runs lint, format check, type-check, tests, and a dependency audit on
every push. ESLint owns code quality and Prettier owns formatting (eslint-config-prettier
keeps them from fighting).
Releasing
Pushing a SemVer tag that matches package.json (e.g. v0.1.7) triggers the
release workflow: it re-runs the full quality gate, builds
the .vsix with @vscode/vsce, and attaches it to a generated GitHub Release.
Publishing to the marketplaces is opt-in — each publish step runs only when its token
secret is configured in the repository:
| Secret |
Publishes to |
VSCE_PAT |
VS Code Marketplace (vsce publish) |
OVSX_PAT |
Open VSX (ovsx publish) |
npm run package # build a .vsix locally (same command the release job runs)
The pure, VS Code-independent logic (git-remote parsing, log cleaning, job ordering, the
GitLab HTTP client) lives in dedicated modules and is covered by npm test; the runner is
Node's built-in node:test, so there are no extra test dependencies.
Credits
Derived from gitlab-pipelines by jameswain, licensed under ISC.
License
ISC