Skip to content

feat: 🐳 multi-stage Docker builds, immutable release pipeline, CHANGELOG automation #26

feat: 🐳 multi-stage Docker builds, immutable release pipeline, CHANGELOG automation

feat: 🐳 multi-stage Docker builds, immutable release pipeline, CHANGELOG automation #26

Workflow file for this run

name: smoke-test
# Orchestrator: generates the image matrix via ci_matrix.py, then calls
# _docker-pipeline.yml for each image in smoke-only mode (no push).
on:
push:
branches: [main]
paths:
- 'Dockerfile'
- 'scripts/smoke-test-docker.sh'
- 'scripts/ci_matrix.py'
- '.github/workflows/smoke-test.yml'
- '.github/workflows/_docker-pipeline.yml'
pull_request:
paths:
- 'Dockerfile'
- 'scripts/smoke-test-docker.sh'
- 'scripts/ci_matrix.py'
- '.github/workflows/smoke-test.yml'
- '.github/workflows/_docker-pipeline.yml'
schedule:
- cron: '0 */12 * * *' # every 12 hours
workflow_dispatch:
permissions:
contents: read
concurrency:
group: smoke-test-${{ github.ref }}
cancel-in-progress: true
jobs:
# ── Job 1: Generate matrix ─────────────────────────────────────────────────
generate-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: 🐍 Generate image matrix
id: matrix
run: |
JSON=$(python scripts/ci_matrix.py --target docker)
echo "json=$JSON" >> "$GITHUB_OUTPUT"
# ── Job 2: Smoke (one run per image in the matrix) ─────────────────────────
smoke:
name: smoke (${{ matrix.image.name }})
needs: generate-matrix
strategy:
fail-fast: false
matrix:
image: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }}
uses: ./.github/workflows/_docker-pipeline.yml
with:
name: ${{ matrix.image.name }}
dockerfile: ${{ matrix.image.dockerfile }}
context: ${{ matrix.image.context }}
check_set: ${{ matrix.image.check_set }}
push: false
secrets: inherit