diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31023e4..aaa7056 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,13 +57,33 @@ jobs: path: coverage.xml # --------------------------------------------------------------- - # Job 2 — Build Docker images (only when Docker files change) + # Job 0 — Detect whether Docker-relevant files changed + # --------------------------------------------------------------- + changes: + runs-on: ubuntu-latest + outputs: + docker: ${{ steps.filter.outputs.docker }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + docker: + - 'docker/**' + - 'pyproject.toml' + - 'uv.lock' + - 'requirements.txt' + - '.github/workflows/ci.yml' + + # --------------------------------------------------------------- + # Job 2 — Build Docker images (only when Docker-relevant files change) # --------------------------------------------------------------- docker-build: runs-on: ubuntu-latest - needs: lint-and-test + needs: [lint-and-test, changes] if: > - github.event_name == 'pull_request' || + needs.changes.outputs.docker == 'true' || contains(github.event.head_commit.message, '[docker]') steps: