11name : Docker
22
3- # This workflow uses actions that are not certified by GitHub.
4- # They are provided by a third-party and are governed by
5- # separate terms of service, privacy policy, and support
6- # documentation.
7-
83on :
94 push :
105 branches : ["master"]
@@ -25,70 +20,50 @@ jobs:
2520 permissions :
2621 contents : read
2722 packages : write
28- # This is used to complete the identity challenge
29- # with sigstore/fulcio when running outside of PRs.
3023 id-token : write
3124
3225 steps :
33- - name : Checkout repository
34- uses : actions/checkout@v4
35-
36- # Install the cosign tool except on PR
37- # https://github.com/sigstore/cosign-installer
38- - name : Install cosign
39- if : github.event_name != 'pull_request'
40- uses : sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0
41- with :
42- cosign-release : " v2.2.4"
43-
44- # Set up BuildKit Docker container builder to be able to build
45- # multi-platform images and export cache
46- # https://github.com/docker/setup-buildx-action
47- - name : Set up Docker Buildx
48- uses : docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
49-
50- # Login against a Docker registry except on PR
51- # https://github.com/docker/login-action
52- - name : Log into registry ${{ env.REGISTRY }}
53- if : github.event_name != 'pull_request'
54- uses : docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
55- with :
56- registry : ${{ env.REGISTRY }}
57- username : ${{ github.actor }}
58- password : ${{ secrets.GITHUB_TOKEN }}
59-
60- # Extract metadata (tags, labels) for Docker
61- # https://github.com/docker/metadata-action
62- - name : Extract Docker metadata
63- id : meta
64- uses : docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0
65- with :
66- images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
26+ - name : Checkout repository
27+ uses : actions/checkout@v6.0.2
28+
29+ - name : Install cosign
30+ if : github.event_name != 'pull_request'
31+ uses : sigstore/cosign-installer@v4.1.1
6732
68- # Build and push Docker image with Buildx (don't push on PR)
69- # https://github.com/docker/build-push-action
70- - name : Build and push Docker image
71- id : build-and-push
72- uses : docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
73- with :
74- context : .
75- push : ${{ github.event_name != 'pull_request' }}
76- tags : ${{ steps.meta.outputs.tags }}
77- labels : ${{ steps.meta.outputs.labels }}
78- cache-from : type=gha
79- cache-to : type=gha,mode=max
33+ - name : Set up QEMU
34+ uses : docker/setup-qemu-action@v4.0.0
8035
81- # Sign the resulting Docker image digest except on PRs.
82- # This will only write to the public Rekor transparency log when the Docker
83- # repository is public to avoid leaking data. If you would like to publish
84- # transparency data even for private images, pass --force to cosign below.
85- # https://github.com/sigstore/cosign
86- - name : Sign the published Docker image
87- if : ${{ github.event_name != 'pull_request' }}
88- env :
89- # https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
90- TAGS : ${{ steps.meta.outputs.tags }}
91- DIGEST : ${{ steps.build-and-push.outputs.digest }}
92- # This step uses the identity token to provision an ephemeral certificate
93- # against the sigstore community Fulcio instance.
94- run : echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST}
36+ - name : Set up Docker Buildx
37+ uses : docker/setup-buildx-action@v4.0.0
38+
39+ - name : Log into registry ${{ env.REGISTRY }}
40+ if : github.event_name != 'pull_request'
41+ uses : docker/login-action@v4.0.0
42+ with :
43+ registry : ${{ env.REGISTRY }}
44+ username : ${{ github.actor }}
45+ password : ${{ secrets.GITHUB_TOKEN }}
46+
47+ - name : Extract Docker metadata
48+ id : meta
49+ uses : docker/metadata-action@v6.0.0 # v5.0.0
50+ with :
51+ images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
52+
53+ - name : Build and push Docker image
54+ id : build-and-push
55+ uses : docker/build-push-action@v7.0.0
56+ with :
57+ context : .
58+ push : ${{ github.event_name != 'pull_request' }}
59+ tags : ${{ steps.meta.outputs.tags }}
60+ labels : ${{ steps.meta.outputs.labels }}
61+ cache-from : type=gha
62+ cache-to : type=gha,mode=max
63+
64+ - name : Sign the published Docker image
65+ if : ${{ github.event_name != 'pull_request' }}
66+ env :
67+ TAGS : ${{ steps.meta.outputs.tags }}
68+ DIGEST : ${{ steps.build-and-push.outputs.digest }}
69+ run : echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST}
0 commit comments