Skip to content

Commit d364522

Browse files
committed
add release workflow
1 parent bf02c2a commit d364522

File tree

4 files changed

+80
-15
lines changed

4 files changed

+80
-15
lines changed

.github/workflows/build_multi_arch_image.yml

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
812
jobs:
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:
@@ -49,7 +55,7 @@ jobs:
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"
@@ -61,7 +67,7 @@ jobs:
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 }}'

.github/workflows/pull_request.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,9 @@ jobs:
8686
echo "sha_short=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
8787
package_docker_image:
8888
uses: ./.github/workflows/build_multi_arch_image.yml
89+
needs:
90+
- get_issue_number
91+
- get_commit_id
8992
with:
9093
publish_image: false
94+
docker_tag: 'pr${{ needs.get_issue_number.outputs.issue_number }}-${{ needs.get_commit_id.outputs.sha_short }}'

.github/workflows/release.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: merge to main workflow
2+
on:
3+
push:
4+
branches: [main]
5+
6+
jobs:
7+
get_asdf_version:
8+
runs-on: ubuntu-22.04
9+
outputs:
10+
asdf_version: '${{ steps.asdf-version.outputs.version }}'
11+
tag_format: '${{ steps.load-config.outputs.TAG_FORMAT }}'
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
15+
- name: Get asdf version
16+
id: asdf-version
17+
run: >-
18+
echo "version=$(awk '!/^#/ && NF {print $1; exit}'
19+
.tool-versions.asdf)" >> "$GITHUB_OUTPUT"
20+
- name: Load config value
21+
id: load-config
22+
run: |
23+
TAG_FORMAT=$(yq '.TAG_FORMAT' .github/config/settings.yml)
24+
echo "TAG_FORMAT=$TAG_FORMAT" >> "$GITHUB_OUTPUT"
25+
quality_checks:
26+
uses: NHSDigital/eps-common-workflows/.github/workflows/quality-checks.yml@e31e25273fb87450be4ef763ddbed4f531c45f8e
27+
needs:
28+
- get_asdf_version
29+
with:
30+
asdfVersion: '${{ needs.get_asdf_version.outputs.asdf_version }}'
31+
secrets:
32+
SONAR_TOKEN: '${{ secrets.SONAR_TOKEN }}'
33+
tag_release:
34+
needs: [quality_checks, get_asdf_version]
35+
uses: NHSDigital/eps-common-workflows/.github/workflows/tag-release.yml@e31e25273fb87450be4ef763ddbed4f531c45f8e
36+
with:
37+
dry_run: false
38+
asdfVersion: ${{ needs.get_asdf_version.outputs.asdf_version }}
39+
branch_name: main
40+
tag_format: ${{ needs.get_asdf_version.outputs.tag_format }}
41+
secrets: inherit
42+
package_docker_image:
43+
needs: tag_release
44+
uses: ./.github/workflows/build_multi_arch_image.yml
45+
with:
46+
publish_image: true
47+
docker_tag: '${{ needs.tag_release.outputs.version_tag }}'

src/base/.devcontainer/scripts/root_install.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ fi
1818

1919
echo "Running apt-get update"
2020
apt-get update
21+
apt-get upgrade -y
2122

2223
# install necessary libraries for asdf and language runtimes
2324
echo "Installing necessary packages"

0 commit comments

Comments
 (0)