ALGD
JetBrains IDE plugin · GitLab CI/CD

See the pipeline GitLab will run, before you push.

Prerun for GitLab reads .gitlab-ci.yml and everything it includes, and shows you the configuration GitLab will actually run: merged, linted and simulated, offline, inside IntelliJ IDEA and the other JetBrains IDEs.

Get it on JetBrains Marketplace or in the IDE: Settings → Plugins → search “Prerun”

Rules simulatormerge request feature/cart → main
e2e · stage test · manual
  1. rule 1if: $CI_MERGE_REQUEST_LABELS =~ /run-e2e/false
  2. rule 2if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCHfalse
  3. rule 3changes: e2e/**/*matched
→ added with when: manual, allow_failure: true

The commits you no longer need to push

“Will this job run on my merge request?”
Pick the trigger, branch, changed files and variables. The rules simulator lists every job’s outcome and the exact rule, with the values it compared, that decided it.
“Where did this line come from?”
Merged YAML resolves include:, extends:, !reference, anchors and << merge keys. A coloured dot beside each line names its file; click it or press F4 to jump there.
“Why didn’t deploy start on the tag?”
The simulator catches needs on jobs that never run for that trigger, and says the pipeline would fail to be created, before GitLab does.
“Is this a typo or a keyword?”
Offline lint in the editor, for the root file and every included file: undefined stages, bad needs, circular extends, broken rules:if expressions with the column, and “did you mean”.
IntelliJ IDEA with Prerun's Merged YAML tab open under the editor. Each merged line has a coloured dot for its source file; a tooltip on line 54 reads: From ci/defaults.yml:8 (via extends .node).
Plate 1 Merged YAML under the editor. Line 54 came from ci/defaults.yml through extends: .node, and the dot says so.
Prerun's Rules Simulator tab: a merge request from feature/cart to main. A table lists five jobs with their stage, result and the rule that decided each one; below it, the step-by-step evaluation for the e2e job.
Plate 2 Rules simulator on a merge request to main: every job, its result, and the rule and values that decided it.
Rules simulator for tag v1.0.0, reporting that deploy:production needs a job that does not run on tags, so the pipeline would fail to be created.
Plate 3 On a tag, deploy:production needs a job that never runs on tags. Prerun says so before GitLab refuses the pipeline.
Prerun's Pipeline Graph tab: stages as columns, needs as arrows, with jobs skipped on a push to main struck out.
Plate 4 Pipeline graph with the last simulation overlaid; skipped jobs are struck out.
Prerun lint warnings highlighted in the editor and listed in the Lint tab, including a misspelled keyword with a did-you-mean suggestion and problems located in included files.
Plate 5 Offline lint in the editor and the Lint tab, with positions inside included files.

Free and Pro

Free, for anyone

  • Merged YAML with the source of every line and Go to Source
  • Offline lint in the editor and a Lint tab, across included files
  • Job gutter icons with stage, extends chain and needs
  • Local and wildcard includes, include:rules, CI/CD inputs, same-repository components, mapped local checkouts of other projects

Pro, licensed through JetBrains Marketplace

  • Rules simulator: push, merge request, tag, schedule, web, API, trigger and parent pipelines, with explanations and final variables in precedence order
  • Pipeline graph: stages as columns, needs as arrows, the simulation overlaid
  • Remote includes: remote:, template:, project: and component: fetched on demand into a local cache
  • Private projects through a GitLab token kept in the IDE password safe

Pro prices, trials and refunds are set and handled by JetBrains Marketplace; the plugin’s Marketplace page shows the current price.

Runs on your machine

Prerun works on the files in your project, in the IDE. It sends nothing about your code, your configuration or how you use it, and has no telemetry. It touches the network only when you click Fetch for remote includes, and then only the addresses in your configuration and the GitLab instance you set, gitlab.com or self-managed. Details: privacy and licence agreement.

Where it can be wrong

Prerun predicts what GitLab will do; it is a guide, not a guarantee. The known gaps, so you can judge its answers:

Requirements

IntelliJ IDEA (Community or Ultimate), PyCharm, WebStorm, GoLand and the other IntelliJ-based IDEs, version 2024.3 or newer, with the bundled YAML plugin enabled. Windows, macOS and Linux.