Skip to content

Commit d6f86c4

Browse files
authored
refactor(docker-build): add steps for cached and non-cached builds (#60)
1 parent bd91b81 commit d6f86c4

File tree

2 files changed

+50
-10
lines changed

2 files changed

+50
-10
lines changed

Diff for: .github/workflows/docker-build-push-multi-platform.yml

+26-5
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,32 @@ jobs:
9696
username: ${{ inputs.registry-username }}
9797
password: ${{ secrets.registry-password }}
9898

99-
- name: Build and push by digest
100-
id: build
99+
- name: Build and push by digest (cached)
100+
if: ${{ inputs.build-cache }}
101+
id: build-cache
101102
uses: docker/build-push-action@v6
102103
with:
103104
cache-from: type=gha,scope=${{ inputs.build-cache-key }}-${{ env.PLATFORM_PAIR }}
104-
cache-to: type=gha,scope=${{ inputs.build-cache-key }}-${{ env.PLATFORM_PAIR }},mode=max
105+
cache-to: type=gha,scope=${{ inputs.build-cache-key }}-${{ env.PLATFORM_PAIR }},mode=min
106+
context: ${{ inputs.build-context }}
107+
file: ${{ inputs.build-file }}
108+
labels: ${{ steps.meta.outputs.labels }}
109+
outputs: type=image,name=${{ inputs.registry-image }},push-by-digest=true,name-canonical=true,push=true
110+
platforms: ${{ matrix.builder.platform }}
111+
provenance: ${{ inputs.build-provenance }}
112+
113+
- name: Export digest (cached)
114+
if: ${{ inputs.build-cache == 'true' }}
115+
run: |
116+
mkdir -p ${{ runner.temp }}/digests
117+
digest="${{ steps.build-cache.outputs.digest }}"
118+
touch "${{ runner.temp }}/digests/${digest#sha256:}"
119+
120+
- name: Build and push by digest (no cache)
121+
if: ${{ ! inputs.build-cache }}
122+
id: build-no-cache
123+
uses: docker/build-push-action@v6
124+
with:
105125
context: ${{ inputs.build-context }}
106126
file: ${{ inputs.build-file }}
107127
labels: ${{ steps.meta.outputs.labels }}
@@ -110,10 +130,11 @@ jobs:
110130
platforms: ${{ matrix.builder.platform }}
111131
provenance: ${{ inputs.build-provenance }}
112132

113-
- name: Export digest
133+
- name: Export digest (no cache)
134+
if: ${{ inputs.build-cache == 'false' }}
114135
run: |
115136
mkdir -p ${{ runner.temp }}/digests
116-
digest="${{ steps.build.outputs.digest }}"
137+
digest="${{ steps.build-no-cache.outputs.digest }}"
117138
touch "${{ runner.temp }}/digests/${digest#sha256:}"
118139
119140
- name: Upload digest

Diff for: .github/workflows/docker-build-push-multi-registry.yml

+24-5
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,31 @@ jobs:
111111
- name: Set up Docker Buildx
112112
uses: docker/setup-buildx-action@v3
113113

114-
- name: Build and push by digest
115-
id: build
114+
- name: Build and push by digest (cached)
115+
if: ${{ inputs.build-cache }}
116+
id: build-cache
116117
uses: docker/build-push-action@v6
117118
with:
118119
cache-from: type=gha,scope=${{ inputs.build-cache-key }}-${{ env.PLATFORM_PAIR }}
119-
cache-to: type=gha,scope=${{ inputs.build-cache-key }}-${{ env.PLATFORM_PAIR }},mode=max
120+
cache-to: type=gha,scope=${{ inputs.build-cache-key }}-${{ env.PLATFORM_PAIR }},mode=min
121+
context: ${{ inputs.build-context }}
122+
file: ${{ inputs.build-file }}
123+
labels: ${{ steps.meta.outputs.labels }}
124+
outputs: type=image,"name=${{ inputs.dockerhub-repo }},${{ inputs.quay-repo }}",push-by-digest=true,name-canonical=true,push=true
125+
platforms: ${{ matrix.builder.platform }}
126+
provenance: false
127+
128+
- name: Export digest (cached)
129+
run: |
130+
mkdir -p ${{ runner.temp }}/digests
131+
digest="${{ steps.build-cache.outputs.digest }}"
132+
touch "${{ runner.temp }}/digests/${digest#sha256:}"
133+
134+
- name: Build and push by digest (no cache)
135+
if: ${{ inputs.build-cache }}
136+
id: build-no-cache
137+
uses: docker/build-push-action@v6
138+
with:
120139
context: ${{ inputs.build-context }}
121140
file: ${{ inputs.build-file }}
122141
labels: ${{ steps.meta.outputs.labels }}
@@ -125,10 +144,10 @@ jobs:
125144
platforms: ${{ matrix.builder.platform }}
126145
provenance: false
127146

128-
- name: Export digest
147+
- name: Export digest (no cache)
129148
run: |
130149
mkdir -p ${{ runner.temp }}/digests
131-
digest="${{ steps.build.outputs.digest }}"
150+
digest="${{ steps.build-no-cache.outputs.digest }}"
132151
touch "${{ runner.temp }}/digests/${digest#sha256:}"
133152
134153
- name: Upload digest

0 commit comments

Comments
 (0)