# ACDL Central Deployment Pipeline Contract (v1.5) # # This is the single source of truth for the deployment pipeline. It # declares the stages that run when a consumer submits a contract: # validate-contract -> resolve-stack -> terraform-plan -> checkov -> # confidence -> apply (dev only) # # Consumers reference this pipeline via `uses: acdl/pipelines/deploy.yaml@v1` # in their contract YAML. The platform (scripts/run_platform.sh) implements # these stages. # # Validated against schemas/deploy-pipeline.schema.json. name: acdl-deploy environment: dev triggers: push: [main] pull_request: [main] runner: ubuntu-latest python_version: "3.12" stages: - name: validate-contract description: Validate the consumer contract against the contract schema command: python3 -c "import jsonschema, yaml; jsonschema.validate(yaml.safe_load(open('contracts/static-asset.yaml')), json.load(open('schemas/contract.schema.json')))" required: true - name: resolve-stack description: Resolve the contract to a Target Stack instance via the contract resolver command: python3 core/contract_resolver.py contracts/static-asset.yaml /tmp/acdl-stack.json required: true - name: terraform-plan description: Compile the stack to Terraform and run terraform plan command: bash scripts/run_platform.sh --plan-only contracts/static-asset.yaml required: true - name: checkov description: Run Checkov policy checks on the emitted Terraform command: checkov -f terraform/spike/main.tf --framework terraform -o json --soft-fail required: false - name: confidence description: Compute the confidence signal from policy + validation inputs command: python3 core/confidence_signal.py /tmp/acdl-deploy-inputs.json dev required: true - name: apply description: Apply the Terraform plan (dev environment only, autonomous per ยง10) command: terraform -chdir=terraform/spike apply -auto-approve -lock=false required: false