GitLab CI Test
Testing GitLab CI pipelines using gitlab-ci-local.
Warning
This project will use your docker socket to run the pipeline. Using this tool on untrusted pipelines will lead to arbitrary code execution.
Prerequisites
Setup
- Create a folder for your test project
- In the folder, create a
.gitlab-ci.yml file with the pipeline
- If you want to test a template, it should be stored as
templates/*.yml in your current working directory and referenced in the pipeline:
include:
- local: templates/template.yml
Usage
Javascript file
- Create a js file describing your test:
it("My project pipeline is successful", async () => {
const jobs = await runPipeline("project-path", {
variables: {
KEY: "value",
},
})
assert.ok(isSuccess(jobs))
})
- Run
gitlab-ci-test <test-file.js>
See test/example.test.js for a complete example.
Yaml file
- Create a yaml file describing your test:
description: My project pipeline is successful
project: project-path
asserts:
- test: "success"
---
KEY: VALUE
- In the template project root, run
gitlab-ci-test <test-file.yml>
Result object
The context used for assertions has the following structure:
{
success: boolean,
run_jobs: ["node-build"],
jobs: {
"node-build": {
stdout: "line\nline",
stderr: "line\nline",
artifacts: {
exists: (path) => boolean,
},
},
}
}
See all yaml files in test folder for a complete example.