Skip to content

Commit 6efe8e2

Browse files
committed
create github actions image
1 parent 01e05b1 commit 6efe8e2

6 files changed

Lines changed: 67 additions & 19 deletions

File tree

.github/workflows/build_multi_arch_image.yml

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,17 @@ jobs:
131131
env:
132132
ARCHITECTURE: '${{ matrix.arch }}'
133133
DOCKER_TAG: '${{ inputs.docker_tag }}'
134-
- name: Push tagged image
134+
- name: Push tagged image and rebuild for github actions
135135
run: |
136136
echo "Pushing image..."
137137
docker push "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:${DOCKER_TAG}-${ARCHITECTURE}"
138138
echo "## PUSHED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:${DOCKER_TAG}-${ARCHITECTURE}" >> "$GITHUB_STEP_SUMMARY"
139+
140+
echo "Rebuilding image for github actions with tag githubactions-${DOCKER_TAG}-${ARCHITECTURE}"
141+
make build-githubactions-image BASE_IMAGE_NAME="${CONTAINER_NAME}" BASE_IMAGE_TAG="${DOCKER_TAG}-${ARCHITECTURE}" IMAGE_TAG="${DOCKER_TAG}-${ARCHITECTURE}" NO_CACHE="${{ inputs.NO_CACHE }}"
142+
echo "Pushing github actions image..."
143+
docker push "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-${DOCKER_TAG}-${ARCHITECTURE}"
144+
echo "## PUSHED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-${DOCKER_TAG}-${ARCHITECTURE}" >> "$GITHUB_STEP_SUMMARY"
139145
env:
140146
DOCKER_TAG: ${{ inputs.docker_tag }}
141147
CONTAINER_NAME: '${{ inputs.container_name }}'
@@ -144,9 +150,14 @@ jobs:
144150
if: ${{ inputs.tag_latest }}
145151
run: |
146152
docker tag "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:${DOCKER_TAG}-${ARCHITECTURE}" "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:latest-${ARCHITECTURE}"
147-
echo "Pushing image..."
153+
echo "Pushing latest image..."
148154
docker push "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:latest-${ARCHITECTURE}"
149155
echo "## PUSHED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:latest-${ARCHITECTURE}" >> "$GITHUB_STEP_SUMMARY"
156+
157+
docker tag "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-${DOCKER_TAG}-${ARCHITECTURE}" "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-latest-${ARCHITECTURE}"
158+
echo "Pushing github actions latest image..."
159+
docker push "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-latest-${ARCHITECTURE}"
160+
echo "## PUSHED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-latest-${ARCHITECTURE}" >> "$GITHUB_STEP_SUMMARY"
150161
env:
151162
DOCKER_TAG: ${{ inputs.docker_tag }}
152163
CONTAINER_NAME: '${{ inputs.container_name }}'
@@ -172,6 +183,7 @@ jobs:
172183
run: |
173184
BUILD_TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
174185
export BUILD_TIMESTAMP
186+
echo "Creating combined image for tag ${DOCKER_TAG}"
175187
docker buildx imagetools create \
176188
--annotation "index:org.opencontainers.image.source=https://github.com/NHSDigital/eps-devcontainers" \
177189
--annotation "index:org.opencontainers.image.description=EPS devcontainer ${CONTAINER_NAME}:${DOCKER_TAG}" \
@@ -184,17 +196,39 @@ jobs:
184196
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:${DOCKER_TAG}-amd64" \
185197
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:${DOCKER_TAG}-arm64"
186198
echo "## PUSHED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:${DOCKER_TAG}" >> "$GITHUB_STEP_SUMMARY"
199+
200+
echo "Creating combined image for tag githubactions-${DOCKER_TAG}"
201+
docker buildx imagetools create \
202+
--annotation "index:org.opencontainers.image.source=https://github.com/NHSDigital/eps-devcontainers" \
203+
--annotation "index:org.opencontainers.image.description=EPS devcontainer ${CONTAINER_NAME}:${DOCKER_TAG}" \
204+
--annotation "index:org.opencontainers.image.licenses=MIT" \
205+
--annotation "index:org.opencontainers.image.version=${DOCKER_TAG}" \
206+
--annotation "index:org.opencontainers.image.containerName=${CONTAINER_NAME}" \
207+
--annotation "index:org.opencontainers.image.created=${BUILD_TIMESTAMP}" \
208+
--annotation "index:org.opencontainers.image.authors=NHS England EPS Team" \
209+
--tag "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-${DOCKER_TAG}" \
210+
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-${DOCKER_TAG}-amd64" \
211+
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-${DOCKER_TAG}-arm64"
212+
echo "## PUSHED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-${DOCKER_TAG}" >> "$GITHUB_STEP_SUMMARY"
187213
env:
188214
DOCKER_TAG: ${{ inputs.docker_tag }}
189215
CONTAINER_NAME: '${{ inputs.container_name }}'
190216

191217
- name: Push multi-arch latest image
192218
if: ${{ inputs.tag_latest }}
193219
run: |
220+
echo "Creating combined image for tag latest"
194221
docker buildx imagetools create -t "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:latest" \
195222
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:latest-amd64" \
196223
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:latest-arm64"
197224
echo "## PUSHED COMBINED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:latest" >> "$GITHUB_STEP_SUMMARY"
225+
226+
echo "Creating combined image for tag githubactions-latest"
227+
docker buildx imagetools create -t "ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-latest" \
228+
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-latest-amd64" \
229+
"ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-latest-arm64"
230+
echo "## PUSHED COMBINED IMAGE : ghcr.io/nhsdigital/eps-devcontainers/${CONTAINER_NAME}:githubactions-latest" >> "$GITHUB_STEP_SUMMARY"
231+
198232
env:
199233
DOCKER_TAG: ${{ inputs.docker_tag }}
200234
CONTAINER_NAME: '${{ inputs.container_name }}'

Makefile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
CONTAINER_PREFIX=ghcr.io/nhsdigital/eps-devcontainers/
22

3-
ifneq ($(strip $(PLATFORM)),)
4-
PLATFORM_FLAG=--platform $(PLATFORM)
5-
endif
6-
73
ifeq ($(strip $(NO_CACHE)),true)
84
NO_CACHE_FLAG=--no-cache
95
endif
@@ -33,6 +29,16 @@ build-image: guard-CONTAINER_NAME guard-BASE_VERSION_TAG guard-BASE_FOLDER guard
3329
--cache-from "${CONTAINER_PREFIX}$${CONTAINER_NAME}:latest" \
3430
--image-name "${CONTAINER_PREFIX}$${CONTAINER_NAME}:$${IMAGE_TAG}"
3531

32+
build-githubactions-image: guard-BASE_IMAGE_NAME guard-BASE_IMAGE_TAG guard-IMAGE_TAG
33+
docker buildx build \
34+
-f src/githubactions/Dockerfile \
35+
$(NO_CACHE_FLAG) \
36+
--build-arg BASE_IMAGE_NAME="$${BASE_IMAGE_NAME}" \
37+
--build-arg BASE_IMAGE_TAG="$${BASE_IMAGE_TAG}" \
38+
--load \
39+
-t "${CONTAINER_PREFIX}$${BASE_IMAGE_NAME}:githubactions-$${IMAGE_TAG}" \
40+
.
41+
3642
scan-image: guard-CONTAINER_NAME guard-BASE_FOLDER
3743
@combined="src/$${BASE_FOLDER}/$${CONTAINER_NAME}/.trivyignore_combined.yaml"; \
3844
common="src/common/.trivyignore.yaml"; \

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,13 @@ CONTAINER_NAME=fhir_facade_api \
169169
make build-image
170170
```
171171

172+
Github actions image
173+
```
174+
BASE_IMAGE_NAME=base \
175+
BASE_IMAGE_TAG=local-build \
176+
IMAGE_TAG=local-build \
177+
make build-githubactions-image
178+
```
172179
## Scanning images
173180
You can use these commands to scan images
174181
Base image
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
include build.mk
2-
include check.mk
3-
include trivy.mk
1+
include ./build.mk
2+
include ./check.mk
3+
include ./trivy.mk

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,3 @@ curl -L https://raw.githubusercontent.com/NHSDigital/software-engineering-qualit
7171
wget -O /tmp/ruleset.zip https://github.com/aws-cloudformation/aws-guard-rules-registry/releases/download/1.0.2/ruleset-build-v1.0.2.zip >/dev/null 2>&1
7272
mkdir -p "${SCRIPTS_DIR}/cfnguard_rulesets"
7373
unzip /tmp/ruleset.zip -d "${SCRIPTS_DIR}/cfnguard_rulesets" >/dev/null 2>&1
74-
75-
# fix user and group ids for vscode user to be 1001 so it can be used by github actions
76-
requested_uid=1001
77-
requested_gid=1001
78-
current_uid="$(id -u vscode)"
79-
current_gid="$(id -g vscode)"
80-
if [ "${current_gid}" != "${requested_gid}" ]; then groupmod -g "${requested_gid}" vscode; fi
81-
if [ "${current_uid}" != "${requested_uid}" ]; then usermod -u "${requested_uid}" -g "${requested_gid}" vscode; fi
82-
83-
chown -R vscode:vscode /home/vscode

src/githubactions/Dockerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
ARG BASE_IMAGE_NAME=base
2+
ARG BASE_IMAGE_TAG=latest
3+
FROM ghcr.io/nhsdigital/eps-devcontainers/${BASE_IMAGE_NAME}:${BASE_IMAGE_TAG}
4+
5+
RUN requested_uid=1001 \
6+
&& requested_gid=1001 \
7+
&& current_uid="$(id -u vscode)" \
8+
&& current_gid="$(id -g vscode)" \
9+
&& if [ "${current_gid}" != "${requested_gid}" ]; then groupmod -g "${requested_gid}" vscode; fi \
10+
&& if [ "${current_uid}" != "${requested_uid}" ]; then usermod -u "${requested_uid}" -g "${requested_gid}" vscode; fi \
11+
&& chown -R vscode:vscode /home/vscode

0 commit comments

Comments
 (0)