Skip to content

Latest commit

 

History

History
136 lines (82 loc) · 7.61 KB

File metadata and controls

136 lines (82 loc) · 7.61 KB
graph LR
    Workflow_Orchestrator["Workflow Orchestrator"]
    Environment_Bootstrap["Environment Bootstrap"]
    Build_Job["Build Job"]
    Artifact_Publisher["Artifact Publisher"]
    Lint_Job["Lint Job"]
    Sanity_Job["Sanity Job"]
    Unit_Galaxy_Job["Unit‑Galaxy Job"]
    Coverage_Job["Coverage Job"]
    All_Green_Aggregator["All‑Green Aggregator"]
    Unclassified["Unclassified"]
    Workflow_Orchestrator -- "needs" --> Build_Job
    Workflow_Orchestrator -- "needs" --> All_Green_Aggregator
    Environment_Bootstrap -- "provides runtime for" --> Build_Job
    Environment_Bootstrap -- "provides runtime for" --> Lint_Job
    Environment_Bootstrap -- "provides runtime for" --> Sanity_Job
    Environment_Bootstrap -- "provides runtime for" --> Unit_Galaxy_Job
    Environment_Bootstrap -- "provides runtime for" --> Coverage_Job
    Build_Job -- "produces" --> Artifact_Publisher
    Lint_Job -- "needs" --> Build_Job
    Sanity_Job -- "needs" --> Build_Job
    Unit_Galaxy_Job -- "needs" --> Build_Job
    Coverage_Job -- "needs" --> Build_Job
    Artifact_Publisher -- "provides" --> Lint_Job
    Artifact_Publisher -- "provides" --> Sanity_Job
    Artifact_Publisher -- "provides" --> Unit_Galaxy_Job
    Artifact_Publisher -- "provides" --> Coverage_Job
    All_Green_Aggregator -- "needs" --> Lint_Job
    All_Green_Aggregator -- "needs" --> Sanity_Job
    All_Green_Aggregator -- "needs" --> Unit_Galaxy_Job
    All_Green_Aggregator -- "needs" --> Coverage_Job
    All_Green_Aggregator -- "reports" --> Workflow_Orchestrator
Loading

CodeBoardingDemoContact

Details

The CI Pipeline Subsystem – The GitHub‑Actions CI pipeline is encapsulated in the .github/workflows/ directory. The Workflow Orchestrator defines the triggers (push, PR, schedule, manual) and the job dependency graph. A single Environment Bootstrap step installs a reproducible Python 3.x interpreter and the matching Ansible version, guaranteeing a uniform runtime for all downstream jobs. The Build Job compiles the Ansible collection into a tarball, which the Artifact Publisher stores as a GitHub‑Actions artifact. Three consumer jobs – Lint, Sanity and Unit‑Galaxy – each retrieve the built collection from the artifact store and perform static analysis, sanity checks, and unit‑test execution (with coverage) respectively; the Coverage Job then forwards the generated coverage.xml to Codecov. Finally, the All‑Green Aggregator inspects the results of all validation jobs and emits a single success/failure status that the orchestrator reports back to GitHub. External reusable workflows (ansible‑lint.yaml, sanity.yaml, unit.yaml) are imported as black‑box jobs, keeping the subsystem self‑contained while allowing reuse of community‑maintained validation logic.

Workflow Orchestrator

Declares triggers, concurrency, and the job matrix; wires the job dependency graph for the CI pipeline.

Related Classes/Methods:

Environment Bootstrap

Installs the requested Python version and Ansible, providing a consistent runtime for all downstream jobs.

Related Classes/Methods:

Build Job

Executes ansible‑galaxy collection build to produce a collection tarball (*.tar.gz).

Related Classes/Methods:

Artifact Publisher

Uploads the built collection tarball to the GitHub‑Actions artifact store for later consumption.

Related Classes/Methods:

Lint Job

Runs ansible‑lint against the built collection to enforce style and best‑practice rules.

Related Classes/Methods:

Sanity Job

Executes Ansible’s sanity test suite (module import, documentation checks, etc.) on the built collection.

Related Classes/Methods:

Unit‑Galaxy Job

Runs the collection’s Python‑level unit tests (pytest) with coverage enabled.

Related Classes/Methods:

Coverage Job

Publishes the coverage.xml generated by the Unit‑Galaxy job to Codecov.

Related Classes/Methods:

All‑Green Aggregator

Inspects results of all validation jobs and emits a single success/failure status for the whole pipeline.

Related Classes/Methods:

Unclassified

Component for all unclassified files and utility functions (Utility functions/External Libraries/Dependencies)

Related Classes/Methods: None