99 type : string
1010
1111concurrency :
12- group : build-${{ github.workflow }}
13- cancel-in-progress : true
12+ group : build-${{ github.workflow }}-${{ inputs.talos_version }}
13+ cancel-in-progress : false
1414
1515env :
1616 KERNEL_IMAGE : ghcr.io/${{ github.repository_owner }}/talos-ufs-kernel
2929 kernel_image : ${{ steps.meta.outputs.kernel_image }}
3030 steps :
3131 - name : Checkout
32- uses : actions/checkout@v7
32+ uses : actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
3333
3434 - name : Clone siderolabs/talos
3535 run : |
@@ -63,10 +63,10 @@ jobs:
6363 git -C /tmp/pkgs apply --3way "${{ github.workspace }}/patches/kernel-config.patch"
6464
6565 - name : Set up Docker Buildx
66- uses : docker/setup-buildx-action@v4
66+ uses : docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
6767
6868 - name : Log in to GHCR
69- uses : docker/login-action@v4
69+ uses : docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4
7070 with :
7171 registry : ghcr.io
7272 username : ${{ github.actor }}
@@ -114,7 +114,7 @@ jobs:
114114 installer_image : ${{ steps.meta.outputs.installer_image }}
115115 steps :
116116 - name : Checkout
117- uses : actions/checkout@v7
117+ uses : actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
118118
119119 - name : Set image tags
120120 id : meta
@@ -123,9 +123,18 @@ jobs:
123123 echo "imager_image=${IMAGER_IMAGE}:${TAG}" >> "$GITHUB_OUTPUT"
124124 echo "installer_image=${INSTALLER_IMAGE}:${TAG}" >> "$GITHUB_OUTPUT"
125125
126+ - name : Log in to GHCR
127+ uses : docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4
128+ with :
129+ registry : ghcr.io
130+ username : ${{ github.actor }}
131+ password : ${{ secrets.GITHUB_TOKEN }}
132+
126133 - name : Check if talos images already exist
127134 id : check-talos
128135 run : |
136+ # skopeo reads ~/.docker/config.json, so the GHCR login above lets it
137+ # inspect the project's private packages instead of always missing.
129138 if skopeo inspect "docker://${IMAGER_IMAGE}:${{ inputs.talos_version }}" &>/dev/null && \
130139 skopeo inspect "docker://${INSTALLER_IMAGE}:${{ inputs.talos_version }}" &>/dev/null; then
131140 echo "exists=true" >> "$GITHUB_OUTPUT"
@@ -170,21 +179,14 @@ jobs:
170179
171180 - name : Set up Docker Buildx (with insecure local registry)
172181 if : steps.check-talos.outputs.exists == 'false'
173- uses : docker/setup-buildx-action@v4
182+ uses : docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
174183 with :
175184 buildkitd-config-inline : |
176185 [registry."localhost:5000"]
177186 http = true
178187 insecure = true
179188 driver-opts : network=host
180189
181- - name : Log in to GHCR
182- uses : docker/login-action@v4
183- with :
184- registry : ghcr.io
185- username : ${{ github.actor }}
186- password : ${{ secrets.GITHUB_TOKEN }}
187-
188190 - name : Build imager to local registry
189191 if : steps.check-talos.outputs.exists == 'false'
190192 working-directory : /tmp/talos
@@ -267,10 +269,10 @@ jobs:
267269 issues : write
268270 steps :
269271 - name : Checkout
270- uses : actions/checkout@v7
272+ uses : actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
271273
272274 - name : Log in to GHCR
273- uses : docker/login-action@v4
275+ uses : docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4
274276 with :
275277 registry : ghcr.io
276278 username : ${{ github.actor }}
@@ -290,12 +292,15 @@ jobs:
290292 cd output
291293 sha256sum metal-amd64.iso > metal-amd64.iso.sha256
292294
295+ - name : Verify UFS drivers in ISO
296+ run : |
297+ ./scripts/verify-build.sh output/metal-amd64.iso
298+
293299 - name : Create GitHub Release
294300 env :
295301 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
296302 run : |
297303 TAG="${{ inputs.talos_version }}-ufs"
298- OWNER="${{ github.repository_owner }}"
299304
300305 gh release create "${TAG}" \
301306 --repo "${GITHUB_REPOSITORY}" \
@@ -316,9 +321,9 @@ jobs:
316321 ## Container Images
317322
318323 ```
319- ghcr.io/OWNER_PLACEHOLDER /talos-ufs-installer:VERSION_PLACEHOLDER
320- ghcr.io/OWNER_PLACEHOLDER /talos-ufs-imager:VERSION_PLACEHOLDER
321- ghcr.io/OWNER_PLACEHOLDER /talos-ufs-kernel:VERSION_PLACEHOLDER
324+ ghcr.io/${{ github.repository_owner }} /talos-ufs-installer:${{ inputs.talos_version }}
325+ ghcr.io/${{ github.repository_owner }} /talos-ufs-imager:${{ inputs.talos_version }}
326+ ghcr.io/${{ github.repository_owner }} /talos-ufs-kernel:${{ inputs.talos_version }}
322327 ```
323328
324329 ## Installation
@@ -330,14 +335,14 @@ jobs:
330335 ```yaml
331336 machine:
332337 install:
333- image: ghcr.io/OWNER_PLACEHOLDER /talos-ufs-installer:VERSION_PLACEHOLDER
338+ image: ghcr.io/${{ github.repository_owner }} /talos-ufs-installer:${{ inputs.talos_version }}
334339 ```
335340
336341 ## Custom ISO Generation
337342
338343 ```bash
339344 docker run --rm -t -v /dev:/dev --privileged \
340- ghcr.io/OWNER_PLACEHOLDER /talos-ufs-imager:VERSION_PLACEHOLDER \
345+ ghcr.io/${{ github.repository_owner }} /talos-ufs-imager:${{ inputs.talos_version }} \
341346 metal --system-extension-image <extension-image>
342347 ```
343348
@@ -352,12 +357,6 @@ jobs:
352357 output/metal-amd64.iso \
353358 output/metal-amd64.iso.sha256
354359
355- # Replace placeholders in release notes
356- gh release edit "${TAG}" \
357- --repo "${GITHUB_REPOSITORY}" \
358- --notes "$(gh release view "${TAG}" --repo "${GITHUB_REPOSITORY}" --json body --jq .body | \
359- sed "s/OWNER_PLACEHOLDER/${OWNER}/g; s/VERSION_PLACEHOLDER/${{ inputs.talos_version }}/g")"
360-
361360 - name : Auto-close patch failure issues
362361 if : success()
363362 env :
0 commit comments