Skip to content

Commit ad8c1f0

Browse files
fix(docker): simplify artifact extraction
1 parent 33893a3 commit ad8c1f0

1 file changed

Lines changed: 42 additions & 37 deletions

File tree

.github/workflows/__call-docker.yml

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
# Comma separated list of platforms to run for PR events, i.e. `# platforms_pr: linux/amd64`. This will take
1212
# precedence over the `# platforms: ` directive.
1313
# `# artifacts: `
14-
# `true` to build in two steps, stopping at `artifacts` build stage and extracting the image from there to the
15-
# GitHub runner.
14+
# `true` to extract artifacts from the `/artifacts` directory to the GitHub runner.
1615

1716
name: Docker (called)
1817
permissions:
@@ -121,6 +120,33 @@ jobs:
121120
fail-fast: false
122121
matrix: ${{ fromJson(needs.check_dockerfiles.outputs.matrix) }}
123122
steps:
123+
124+
# TODO: remove me
125+
- name: Testing Artifacts
126+
run: |
127+
# create directory tree
128+
mkdir -p artifacts
129+
mkdir -p image/artifacts
130+
touch image/artifacts/test.txt
131+
touch image/artifacts/test2.txt
132+
133+
# artifacts will be in sub directories named after the docker target platform, e.g. `linux_amd64`
134+
# so move files to the artifacts directory
135+
# https://unix.stackexchange.com/a/52816
136+
echo "::group::Moving artifacts"
137+
find \
138+
./image \
139+
-mindepth 2 \
140+
-maxdepth 3 \
141+
-type d \
142+
-name 'artifacts' \
143+
-exec mv {}/* artifacts/ \;
144+
echo "::endgroup::"
145+
146+
echo "::group::Artifacts"
147+
ls -la ./artifacts/
148+
echo "::endgroup::"
149+
124150
- name: Maximize build space
125151
if: inputs.maximize_build_space
126152
uses: easimon/maximize-build-space@v10
@@ -259,29 +285,6 @@ jobs:
259285
username: ${{ secrets.GH_BOT_NAME }}
260286
password: ${{ secrets.GH_BOT_TOKEN }}
261287

262-
- name: Build artifacts
263-
if: steps.prepare.outputs.artifacts == 'true'
264-
id: build_artifacts
265-
uses: docker/build-push-action@v6
266-
with:
267-
context: ./
268-
file: ${{ matrix.dockerfile }}
269-
target: artifacts
270-
outputs: type=local,dest=artifacts
271-
push: false
272-
platforms: ${{ steps.prepare.outputs.platforms }}
273-
build-args: |
274-
BRANCH=${{ steps.prepare.outputs.branch }}
275-
BUILD_DATE=${{ steps.prepare.outputs.build_date }}
276-
BUILD_VERSION=${{ inputs.release_tag }}
277-
COMMIT=${{ inputs.release_commit }}
278-
CLONE_URL=${{ steps.prepare.outputs.clone_url }}
279-
RELEASE=${{ inputs.publish_release }}
280-
tags: ${{ steps.prepare.outputs.tags }}
281-
cache-from: type=local,src=/tmp/.buildx-cache
282-
cache-to: type=local,dest=/tmp/.buildx-cache
283-
no-cache-filters: ${{ steps.prepare.outputs.no_cache_filters }}
284-
285288
- name: Build and push
286289
id: build
287290
uses: docker/build-push-action@v6
@@ -301,34 +304,36 @@ jobs:
301304
cache-from: type=local,src=/tmp/.buildx-cache
302305
cache-to: type=local,dest=/tmp/.buildx-cache
303306
no-cache-filters: ${{ steps.prepare.outputs.no_cache_filters }}
307+
outputs: ${{ steps.prepare.outputs.artifacts == 'true' && 'type=local,dest=image' || '' }}
304308

305309
- name: Arrange Artifacts
306310
if: steps.prepare.outputs.artifacts == 'true'
307-
working-directory: artifacts
308311
run: |
309-
# debug directory
310-
echo "Current directory: $(pwd)"
311-
echo "Directory contents: $(ls -Ra)"
312+
# create artifacts directory
313+
mkdir -p artifacts
312314
313315
# artifacts will be in sub directories named after the docker target platform, e.g. `linux_amd64`
314316
# so move files to the artifacts directory
315317
# https://unix.stackexchange.com/a/52816
318+
echo "::group::Moving artifacts"
316319
find \
317-
./ \
318-
-maxdepth 2 \
320+
./image \
319321
-mindepth 2 \
320-
-type f \
321-
-not -name 'provenance.json' \
322-
-exec mv -t ./ -n '{}' +
322+
-maxdepth 3 \
323+
-type d \
324+
-name 'artifacts' \
325+
-exec mv {}/* artifacts/ \;
326+
echo "::endgroup::"
323327
324-
# remove provenance file
325-
rm -f ./provenance.json
328+
echo "::group::Artifacts"
329+
ls -la ../artifacts/
330+
echo "::endgroup::"
326331
327332
- name: Upload Artifacts
328333
if: steps.prepare.outputs.artifacts == 'true'
329334
uses: actions/upload-artifact@v4
330335
with:
331-
name: Docker${{ matrix.tag }}
336+
name: build-Docker${{ matrix.tag }}
332337
path: artifacts/
333338
if-no-files-found: error
334339

0 commit comments

Comments
 (0)