Skip to content

6. Continuous Integration and Continuous Deployment with GitHub Actions

6.1 Automation Strategy Overview

Continuous integration and continuous deployment are implemented through GitHub Actions using a workflow definition located at .github/workflows/workflow.yml. This workflow serves as the central automation mechanism of the project and orchestrates validation, documentation generation, and release management within a unified pipeline. By integrating these processes, the repository maintains consistency between code changes, documentation, and released artifacts, while reducing manual intervention and operational errors.

6.2 Workflow Architecture and Execution Model

The workflow is organized into distinct jobs, each corresponding to a specific stage of the CI/CD lifecycle. Job execution is controlled by repository events, such as pushes and pull requests, and by branch-specific conditions. The overall design follows a progressive execution model in which preliminary checks are completed first, establishing a stable baseline before documentation deployment and release publication are triggered. This structure ensures that only validated code advances to user-facing outputs.

6.3 Environment Initialization and Dependency Setup

The initial job is executed on every push and pull request and is responsible for preparing a reproducible execution environment. A Python runtime is provisioned to ensure consistent interpreter behavior across all stages of the pipeline. Subsequently, all dependencies defined in the pipeline group are installed, guaranteeing the availability of the tools required for validation, documentation building, and automation tasks. Any failure during this phase interrupts the workflow, preventing downstream jobs from running under incomplete or unreliable conditions.

6.4 Documentation Build and Deployment

When changes are integrated into the main branch, the workflow triggers a dedicated documentation job. In this stage, MkDocs is used to generate a static documentation site from the project sources, which is then automatically deployed to GitHub Pages. This process ensures that the published documentation accurately reflects the current state of the main codebase.

Documentation versioning is handled through mike, which allows multiple versions of the documentation to coexist. Each version corresponds to a specific software release, enabling users to consult documentation aligned with the version they are using. The entire build and deployment process is automated and requires no manual approval once the workflow conditions are satisfied.

6.5 Automated Release Management

Release creation is also restricted to the main branch and represents the final stage of the CI/CD pipeline. During this phase, the workflow determines the current project version and creates a corresponding GitHub release. Release notes are generated automatically based on changes since the previous release, providing users with a concise and structured summary of updates. Integrating release management into the workflow enforces a direct relationship between the repository state and published versions, reducing discrepancies between source code and distributed artifacts.

6.6 GitHub Pages Configuration Requirements

For documentation deployment to function correctly, GitHub Pages must be configured to use GitHub Actions as its publication source. This setting is applied in the repository Pages configuration. Once enabled, every push to the main branch automatically triggers the documentation build and deployment defined in the workflow, ensuring continuous alignment between the repository content and its publicly available technical documentation.