Skip to main content

CI Test

Evan Kohilas

A framework for static analysis testing of CI configurations.

Installation

Install using pipx install ci-test-toolkit to add ci-test to your PATH.

The tool can be run either via ci-test once installed or python -m ci_test from within the src folder.

Example

ci-test gitlab rule-snapshot <path_to_json> will create a snapshot of your ci configuration, by listing all rulesets and the jobs that will run for each of them.

This snapshot can then be used to generate diffs of the linking between jobs and their rules.

Input Generation

Currently the tool is setup to take input of the following form:

[
    {
        "name": "job-name",
        "rules": [
            {
                "if": "$CI_PIPELINE_SOURCE == 'push'"
            },
            {
                "if": "$CI_PIPELINE_SOURCE == 'merge_request_event'",
                "changes": [
                    "**/*.py"
                ]
            },
        ]
    }
]

This is easiest made using gitlab-ci-local

With node installed, run npx gitlab-ci-local --list-json > gitlab-ci-local.json in a project directory with a .gitlab-ci.yml file.

Then, run ci-test gitlab rule-snapshot gitlab-ci-local.json to create a collated snapshot.

TODO

  • Remove the dependency on gitlab-ci-local
  • Support GitHub configurations
  • Add more testing commands
  • Add better CLI
  • Add linting/formatting
  • Clean up for best practices

Contibuting

Please see CONTRIBUTING.md for a head start.

Pull requests welcome!

Release files for ci-test-toolkit 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ci-test-toolkit 0.0.1
File Size Uploaded
ci_test_toolkit-0.0.1.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ci-test-toolkit 0.0.1
File Interpreter ABI Platform
ci_test_toolkit-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 21.6 kB

Release files / ci_test_toolkit-0.0.1.tar.gz

Download URL ci_test_toolkit-0.0.1.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f989ee891f0bedad0a098fdb9fcaf19f9d0caf3913e0d89c8f1696028426ed56
BLAKE2b-256 checksum
How to use checksums
1713df21c97c3c1d1abb5a3c0c5f49f4081f87a66c2b9e4d865ddbaeca5c336f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.1

Release files / ci_test_toolkit-0.0.1-py3-none-any.whl

Download URL ci_test_toolkit-0.0.1-py3-none-any.whl
Size 11.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6af76cd08da757c743974e78c071940b1b1679dd0f3c66789caafaafc256909b
BLAKE2b-256 checksum
How to use checksums
5d9427f235f976976a50d2216c7737794a0a377e3dd414cf4a609a78e3f9e946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.1

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page