Skip to content

ADR-011 - CI/CD Platform

Statusaccepted
Date2025-04-07
Decision MakersDardan Bujupaj (AX), Marc Gähwiler (AX), Markus Brenner (Griesser)

Context

Deployments play a crucial role in efficient and reliable software delivery, directly impacting development velocity and product quality. Testing environments must be updated promptly to ensure that tests can be executed in a timely manner, preventing bottlenecks in the development pipeline. Furthermore, deployments must be performed in a consistent, reproducible manner to guarantee identical results across various environments, from development to production, thereby minimizing environment-specific issues and reducing troubleshooting time.

The CI/CD Pipeline should allow to automate as much of the ADR-009 - Deployment Process, while making manual approvals and interventions as easy as possible.

Decision

We have selected Azure DevOps Pipelines as our comprehensive CI/CD platform for all deployments and automated testing needs. This enterprise-grade solution provides a unified environment where build, test, and deployment processes are seamlessly integrated, ensuring consistent and reliable software delivery across all environments. Azure DevOps Pipelines offers robust pipeline definition capabilities through YAML, enabling infrastructure-as-code practices for our deployment workflows.

The platform facilitates transparent visibility into deployment statuses and test results across development, QA, and operations teams through its intuitive dashboard and comprehensive reporting features. By centralizing both code repositories and deployment pipelines within the same ecosystem, we achieve enhanced traceability between code changes and their corresponding deployments, simplifying monitoring, troubleshooting, and auditing processes.

Consequences

  • Azure DevOps Pipelines need to be implemented:
    • Automatically deploy changes to the development environment
    • Deploy to Integration Test environment manually (Triggered by AX)
    • Run tests on the Integration Test environment
    • Deploy to User Acceptance Test environment after successful Integration Tests
    • Deploy to Production environment manually (after approval by Griesser, Triggered by AX)

Alternatives

  • Manual deployments: This will need too much manual intervention in the long run and is too error prone