Skip to main content

A framework for static analysis testing of CI configurations.

Project description

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!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ci_test-0.0.6.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ci_test-0.0.6-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file ci_test-0.0.6.tar.gz.

File metadata

  • Download URL: ci_test-0.0.6.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ci_test-0.0.6.tar.gz
Algorithm Hash digest
SHA256 a7bd33e2af4c9946c28ada346e1ff46ab93127ee786478e15959f04c00fd15ef
MD5 edc74465f379d16dada8918adcc11aff
BLAKE2b-256 f5ea4ef715f40ab8cca785240efb92ec7ccd921ff68931cc50bca3f4d528cd2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ci_test-0.0.6.tar.gz:

Publisher: python-package.yml on ekohilas/ci-test

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ci_test-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: ci_test-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ci_test-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a707a7d1b8e0991d211cb21f623b43f5421a0253ecfc7cb9b90ad5f38753368a
MD5 0b6148824aa108b69f028da36f042d2d
BLAKE2b-256 db352aa3a6510a65bebaa4148595c34477d6052ddd53fb9a9e791e58b7967a17

See more details on using hashes here.

Provenance

The following attestation bundles were made for ci_test-0.0.6-py3-none-any.whl:

Publisher: python-package.yml on ekohilas/ci-test

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page