layout: home title: Overview permalink: /
Gitlab Compliance
Gitlab Compliance is a BDD compliance testing and documentation generation toolkit for GitLab CI/CD pipelines and project settings. It runs Gherkin policies against `.gitlab-ci.yml` and optional GitLab API settings. You can also generate markdown documentation for your Gitlab pipelines.
Source code - coming soon: MaturityBuilder/gitlab-compliance.
Get started
Get started{ .md-button .md-button-primary } Usage{ .md-button } BDD grammar{ .md-button }
gitlab-compliance supports two core workflows from the same pipeline YAML:
| Workflow | Command | What it does |
|---|---|---|
| Compliance | check |
Run Gherkin policies against .gitlab-ci.yml (and optional GitLab API settings) |
| Documentation | generate |
Build Markdown, swagger-markdown, or HTML reference docs from .gitlab-ci.yml |
pip install gitlab-compliance
# Validate pipeline configuration against policies
gitlab-compliance check -f policies/ -p .gitlab-ci.yml
# Generate pipeline documentation (filter and group output as needed)
gitlab-compliance generate -i .gitlab-ci.yml --format swagger-markdown -o pipeline-reference.md
gitlab-compliance generate -i .gitlab-ci.yml --exclude variables,image --group-by stage
See Usage for the full CLI (including demos) and
Generate pipeline documentation for output
formats, --exclude, and --group-by.
- compliance: Ensure pipeline YAML and project settings follow your security standards and custom policies
- behaviour driven development: Policies are readable Gherkin scenarios that developers and security teams share
- portable: Install from
pip. See Installation - pre-merge: Validate configuration before changes land on protected branches
- YAML and API: Offline checks against pipeline files; optional GitLab API checks for project settings and CI variables
- easy to integrate: Run in GitLab CI or local git hooks
- segregation of duty: Keep policy packs in a separate repository or OCI registry
- documentation: Generate Markdown or HTML reference docs from
.gitlab-ci.yml
Idea
gitlab-compliance focuses on negative
testing — catching
misconfigurations and policy violations — rather than proving that a job runs
successfully end to end.
GitLab CI pipelines are defined in YAML that composes jobs, includes, variables,
and workflow rules. What was missing is a lightweight way to assert that this
configuration follows organizational standards before merge. GitLab offers
native compliance features in higher tiers; gitlab-compliance provides an
open, portable alternative inspired by
terraform-compliance and
Conftest.
For example, a policy might require that no job uses a floating latest image
tag:
if a job defines an image, it must not use the :latest tag
translates into:
Given I have any job defined
When it has image
Then its image must not match ":latest$"
The image value comes from your pipeline YAML:
scan:
image: python:3.12
build:
image: docker:latest # violates the policy above
In CI, this scenario runs against .gitlab-ci.yml (and resolved local includes)
so merge requests cannot introduce violations.
See Examples for more sample use cases.
Supporting / Requirements
- Python: 3.12 (see Installing via pip)
- Pipeline file:
.gitlab-ci.ymlor another path passed with-p - API checks (optional): GitLab token plus
--projector--groupfor settings and CI variable policies
Full CLI options: Usage. Step grammar: BDD Reference.
How can you support the project?
Contributions are welcome — see Contributing.
Metadata
Release files for gitlab-compliance 2.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gitlab_compliance-2.6.0.tar.gz | 126.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gitlab_compliance-2.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 287.4 kB
Release files / gitlab_compliance-2.6.0.tar.gz
| Download URL | gitlab_compliance-2.6.0.tar.gz |
|---|---|
| Size | 126.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
80a57bf3abbcabd7396c11ac274a1621e6f097eba57befb6049e0098605337e7
|
|
BLAKE2b-256 checksum How to use checksums |
2ec7378381ea4c47bbe169d9b4a81b8099e8a5957d0df6d63f89868a6364edea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / gitlab_compliance-2.6.0-py3-none-any.whl
| Download URL | gitlab_compliance-2.6.0-py3-none-any.whl |
|---|---|
| Size | 160.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a656ffbcfbdb46c4e980d1a99f7a85b4c2a3e65313459d1575f2b559c2e2f6db
|
|
BLAKE2b-256 checksum How to use checksums |
865a1b1d794a4fe746ccf3e29576f162c16adde540ab77c140175257b851cb80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency log