Skip to content

Commit c97bccf

Browse files
committed
[GHA] Only rebuild image if Dockerfile changed
1 parent 0e374da commit c97bccf

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

.github/workflows/build.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,39 @@ jobs:
2626
id-token: write
2727

2828
steps:
29+
- name: Checkout
30+
uses: actions/checkout@v4
31+
32+
- name: Check for Docker changes
33+
id: changes
34+
run: |
35+
if git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep '^\.devcontainer/Dockerfile'; then
36+
echo "changed=true" >> $GITHUB_OUTPUT
37+
else
38+
echo "changed=false" >> $GITHUB_OUTPUT
39+
fi
40+
2941
- name: Log in to Container registry
42+
if: ${{ steps.changes.outputs.changed == 'true' }}
3043
uses: docker/login-action@v3
3144
with:
3245
registry: ${{ env.REGISTRY }}
3346
username: ${{ github.actor }}
3447
password: ${{ secrets.GITHUB_TOKEN }}
3548

3649
- name: Extract metadata for Docker
50+
if: ${{ steps.changes.outputs.changed == 'true' }}
3751
id: meta
3852
uses: docker/metadata-action@v5
3953
with:
4054
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
4155

4256
- name: Set up Docker Buildx
57+
if: ${{ steps.changes.outputs.changed == 'true' }}
4358
uses: docker/setup-buildx-action@v3
4459

4560
- name: Build Docker image
61+
if: ${{ steps.changes.outputs.changed == 'true' }}
4662
id: push
4763
uses: docker/build-push-action@v6
4864
with:
@@ -54,6 +70,7 @@ jobs:
5470
cache-to: type=gha,mode=max
5571

5672
- name: Generate artifact attestation
73+
if: ${{ steps.changes.outputs.changed == 'true' }}
5774
uses: actions/attest-build-provenance@v3
5875
with:
5976
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

0 commit comments

Comments
 (0)