|
1 |
| -name: Build Docker images (nightly) |
| 1 | +name: Test, build, and push Docker images |
2 | 2 |
|
3 | 3 | on:
|
| 4 | + pull_request: # During PRs, we just check if the changes Dockerfiles can be successfully built |
| 5 | + branches: |
| 6 | + - main |
| 7 | + paths: |
| 8 | + - "docker/**" |
4 | 9 | workflow_dispatch:
|
5 | 10 | schedule:
|
6 | 11 | - cron: "0 0 * * *" # every day at midnight
|
7 | 12 |
|
8 | 13 | concurrency:
|
9 |
| - group: docker-image-builds |
10 |
| - cancel-in-progress: false |
| 14 | + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |
| 15 | + cancel-in-progress: true |
11 | 16 |
|
12 | 17 | env:
|
13 | 18 | REGISTRY: diffusers
|
14 | 19 | CI_SLACK_CHANNEL: ${{ secrets.CI_DOCKER_CHANNEL }}
|
15 | 20 |
|
16 | 21 | jobs:
|
17 |
| - build-docker-images: |
| 22 | + test-build-docker-images: |
18 | 23 | runs-on: ubuntu-latest
|
| 24 | + if: github.event_name == 'pull_request' |
| 25 | + steps: |
| 26 | + - name: Set up Docker Buildx |
| 27 | + uses: docker/setup-buildx-action@v1 |
| 28 | + |
| 29 | + - name: Check out code |
| 30 | + uses: actions/checkout@v3 |
| 31 | + |
| 32 | + - name: Find Changed Dockerfiles |
| 33 | + id: file_changes |
| 34 | + uses: jitterbit/get-changed-files@v1 |
| 35 | + with: |
| 36 | + format: 'space-delimited' |
| 37 | + token: ${{ secrets.GITHUB_TOKEN }} |
| 38 | + |
| 39 | + - name: Build Changed Docker Images |
| 40 | + run: | |
| 41 | + CHANGED_FILES="${{ steps.file_changes.outputs.all }}" |
| 42 | + for FILE in $CHANGED_FILES; do |
| 43 | + if [[ "$FILE" == docker/*Dockerfile ]]; then |
| 44 | + DOCKER_PATH="${FILE%/Dockerfile}" |
| 45 | + DOCKER_TAG=$(basename "$DOCKER_PATH") |
| 46 | + echo "Building Docker image for $DOCKER_TAG" |
| 47 | + docker build -t "$DOCKER_TAG" "$DOCKER_PATH" |
| 48 | + fi |
| 49 | + done |
| 50 | + if: steps.file_changes.outputs.all != '' |
19 | 51 |
|
| 52 | + build-and-push-docker-images: |
| 53 | + runs-on: ubuntu-latest |
| 54 | + if: github.event_name != 'pull_request' |
| 55 | + |
20 | 56 | permissions:
|
21 | 57 | contents: read
|
22 | 58 | packages: write
|
|
0 commit comments