@@ -5,12 +5,17 @@ name: Build and push docker image
55 publish_image :
66 required : true
77 type : boolean
8+ docker_tag :
9+ required : true
10+ type : string
11+
812jobs :
913 build_image :
1014 permissions :
1115 id-token : write
1216 runs-on : ' ${{ matrix.runner }}'
1317 strategy :
18+ fail-fast : false
1419 matrix :
1520 include :
1621 - arch : amd64
@@ -33,12 +38,13 @@ jobs:
3338 run : >
3439 make build-base-image
3540
36- docker tag ghcr.io/nhsdigital/eps-devcontainer-base:latest "ghcr.io/nhsdigital/eps-devcontainers:latest -${ARCHITECTURE}"
41+ docker tag ghcr.io/nhsdigital/eps-devcontainer-base:latest "ghcr.io/nhsdigital/eps-devcontainers:{DOCKER_TAG} -${ARCHITECTURE}"
3742
3843 docker save "ghcr.io/nhsdigital/eps-devcontainers:latest-${ARCHITECTURE}" -o "eps-devcontainer-base-latest-${ARCHITECTURE}.img"
3944 env :
4045 GH_TOKEN : ' ${{ github.token }}'
4146 ARCHITECTURE : ' ${{ matrix.arch }}'
47+ DOCKER_TAG : ' ${{ inputs.docker_tag }}'
4248 - uses : actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
4349 name : Upload docker images
4450 with :
4955 uses : aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8
5056 with :
5157 scan-type : " image"
52- image-ref : " ghcr.io/nhsdigital/eps-devcontainers:latest -${{ matrix.arch }}"
58+ image-ref : " ghcr.io/nhsdigital/eps-devcontainers:${{ inputs.docker_tag }} -${{ matrix.arch }}"
5359 severity : " CRITICAL,HIGH"
5460 scanners : " vuln"
5561 vuln-type : " os,library"
6167 - name : Show docker vulnerability output
6268 if : always()
6369 run : |
64- echo "Scan output for ghcr.io/nhsdigital/eps-devcontainers:latest -${ARCHITECTURE}"
70+ echo "Scan output for ghcr.io/nhsdigital/eps-devcontainers:${{ inputs.docker_tag }} -${ARCHITECTURE}"
6571 if [ -f dependency_results_docker.txt ]; then
6672 cat dependency_results_docker.txt
6773 fi
@@ -102,26 +108,33 @@ jobs:
102108 name : eps-devcontainer-base-latest-arm64.img
103109 - name : Load and push multi-arch image
104110 run : >
105- echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{
106- github.actor }} --password-stdin
107-
111+ echo "${GITHUB_TOKEN}" | docker login ghcr.io -u "${GITHUB_ACTOR}" --password-stdin
108112 echo "loading images"
109-
110113 docker load -i eps-devcontainer-base-latest-amd64.img
111-
112114 docker load -i eps-devcontainer-base-latest-arm64.img
113115
114- echo "pushing images"
116+ echo "Tagging latest images"
117+ docker tag "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}-amd64" "ghcr.io/nhsdigital/eps-devcontainers:latest-amd64"
118+ docker tag "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}-arm64" "ghcr.io/nhsdigital/eps-devcontainers:latest-arm64"
115119
120+ echo "pushing images"
121+ docker push "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}-amd64"
122+ docker push "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}-arm64"
116123 docker push ghcr.io/nhsdigital/eps-devcontainers:latest-amd64
117-
118124 docker push ghcr.io/nhsdigital/eps-devcontainers:latest-arm64
119125
120126 echo "creating manifest"
127+ docker manifest create "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}" \
128+ --amend "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}-amd64" \
129+ --amend "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}-arm64"
130+ docker manifest create "ghcr.io/nhsdigital/eps-devcontainers:latest" \
131+ --amend "ghcr.io/nhsdigital/eps-devcontainers:latest-amd64" \
132+ --amend "ghcr.io/nhsdigital/eps-devcontainers:latest-arm64"
121133
122- docker manifest create ghcr.io/nhsdigital/eps-devcontainers:latest \
123- --amend ghcr.io/nhsdigital/eps-devcontainers:latest-amd64 \
124- --amend ghcr.io/nhsdigital/eps-devcontainers:latest-arm64
125134 echo "pushing manifest"
126-
127- docker manifest push ghcr.io/nhsdigital/eps-devcontainers:latest
135+ docker manifest push "ghcr.io/nhsdigital/eps-devcontainers:${DOCKER_TAG}"
136+ docker manifest push "ghcr.io/nhsdigital/eps-devcontainers:latest"
137+ env :
138+ DOCKER_TAG : ' ${{ inputs.docker_tag }}'
139+ GITHUB_TOKEN : ' ${{ secrets.GITHUB_TOKEN }}'
140+ GITHUB_ACTOR : ' ${{ github.actor }}'
0 commit comments