Modern QA2026Automated Quality Gate Pipeline — tiles
Log inJoin
18 / 67 · 06 Observability-Driven Testing · A/B Tests as Quality Gates← prev⊞ allnext →☰ Read as one page

3.5Automated Quality Gate Pipeline

Integrate quality gates into your deployment pipeline:

# .github/workflows/canary-quality-gate.yml
name: Canary Quality Gate
on:
  workflow_dispatch:
    inputs:
      canary_version:
        description: 'Docker image tag for canary'
        required: true

jobs:
  canary-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Deploy canary (5% traffic)
        run: |
          kubectl set image deployment/app-canary \
            app=${{ inputs.canary_version }}
          kubectl patch virtualservice app-vs --type merge -p '
            {"spec":{"http":[{"route":[
              {"destination":{"host":"app-stable"},"weight":95},
              {"destination":{"host":"app-canary"},"weight":5}
            ]}]}}'

      - name: Wait for observation window
        run: sleep 900  # 15 minutes

      - name: Run quality gate analysis
        run: |
          python scripts/quality_gate.py \
            --prometheus-url ${{ secrets.PROMETHEUS_URL }} \
            --control-label "version=stable" \
            --canary-label "version=${{ inputs.canary_version }}" \
            --window 15m

      - name: Promote or rollback
        if: always()
        run: |
          if [ "${{ steps.quality-gate.outcome }}" == "success" ]; then
            echo "Promoting canary to stable"
            kubectl set image deployment/app-stable \
              app=${{ inputs.canary_version }}
          else
            echo "Rolling back canary"
            kubectl scale deployment/app-canary --replicas=0
          fi