Skip to content

Commit da10b72

Browse files
committed
Sign published image manifests with cosign
Add keyless cosign signing for the published multi-arch manifests, including the canonical version tags and latest. The workflow now requests the OIDC token permission needed for GitHub-backed signing and signs the final manifest digests after publication.
1 parent 33f203f commit da10b72

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
@@ -21,6 +21,10 @@ on:
2121
env:
2222
IMAGE_NAME: ${{ inputs.image_name || vars.IMAGE_NAME || 'nikolaik/python-nodejs' }}
2323

24+
permissions:
25+
contents: read
26+
id-token: write
27+
2428
jobs:
2529
generate-matrix:
2630
name: Generate build matrix
@@ -116,6 +120,13 @@ jobs:
116120

117121
- name: Set up Docker Buildx
118122
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
123+
- name: Install Cosign
124+
uses: sigstore/cosign-installer@v4.0.0
125+
126+
- name: Sign multi-arch manifest
127+
run: |
128+
digest="$(docker buildx imagetools inspect "${IMAGE_NAME}:${{ matrix.key }}" | awk '/^Digest:/ {print $2}')"
129+
cosign sign --yes "${IMAGE_NAME}@${digest}"
119130
120131
- name: Add digest to build context
121132
run: |
@@ -148,6 +159,8 @@ jobs:
148159
merge-multiple: true
149160
- name: Set up Docker Buildx
150161
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
162+
- name: Install Cosign
163+
uses: sigstore/cosign-installer@v4.0.0
151164
- name: Login to Docker Hub
152165
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4
153166
with:
@@ -157,6 +170,10 @@ jobs:
157170
run: |
158171
latest_tag="$(uv run dpn latest-key --builds-dir builds/)"
159172
docker buildx imagetools create --tag "${IMAGE_NAME}:latest" "${IMAGE_NAME}:${latest_tag}"
173+
- name: Sign latest manifest
174+
run: |
175+
digest="$(docker buildx imagetools inspect "${IMAGE_NAME}:latest" | awk '/^Digest:/ {print $2}')"
176+
cosign sign --yes "${IMAGE_NAME}@${digest}"
160177
161178
release:
162179
name: Update versions.json and README.md

0 commit comments

Comments
 (0)