Skip to content

Commit 5622b71

Browse files
committed
ci: give docker refresh job ability to handle more than one os
1 parent b79fea7 commit 5622b71

File tree

1 file changed

+55
-17
lines changed

1 file changed

+55
-17
lines changed

.github/workflows/docker-refresh.yml

Lines changed: 55 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,47 +5,62 @@ on:
55
branches:
66
- master
77
paths:
8-
- scripts/ci/Dockerfile
8+
- .github/workflows/docker-refresh.yml
9+
- scripts/ci/Dockerfile*
910
workflow_dispatch:
1011
schedule:
1112
- cron: '0 1 * * *'
1213

1314
env:
1415
DOCKER_REGISTRY: "docker.internal.networkradius.com"
15-
DOCKER_IMAGE_NAME: "docker.internal.networkradius.com/self-hosted"
16-
DOCKER_BASE_IMAGE: "ubuntu:20.04"
17-
DOCKER_EXTRA_IMAGES: "mariadb postgres 4teamwork/389ds"
1816

1917
jobs:
20-
build-image:
18+
process-images:
2119
timeout-minutes: 20
2220

2321
runs-on: self-hosted
2422
if: github.event_name == 'workflow_dispatch' || github.repository_owner == 'FreeRADIUS'
2523

26-
name: "build-docker-image"
24+
strategy:
25+
fail-fast: false
26+
matrix:
27+
os:
28+
- base_image: ubuntu:24.04
29+
image_name: docker.internal.networkradius.com/self-hosted-ubuntu24
30+
extra_tags:
31+
- docker.internal.networkradius.com/self-hosted
32+
dockerfile: scripts/ci/Dockerfile
33+
34+
- base_image: ubuntu:20.04
35+
image_name: docker.internal.networkradius.com/self-hosted-ubuntu20
36+
dockerfile: scripts/ci/Dockerfile-ubuntu20
37+
38+
- base_image: mariadb
39+
- base_image: postgres
40+
- base_image: 4teamwork/389ds
41+
42+
name: "process-images"
2743

2844
steps:
2945

3046
- uses: actions/checkout@v4
3147
with:
3248
lfs: false
3349

34-
- name: Fetch and label images
50+
- name: Fetch and label image
3551
shell: bash
52+
env:
53+
DOCKER_BASE_IMAGE: ${{ matrix.os.base_image }}
3654
run: |
3755
docker pull "$DOCKER_BASE_IMAGE"
3856
echo "FROM $DOCKER_BASE_IMAGE" | docker build --label preserve=true -t "$DOCKER_REGISTRY/$DOCKER_BASE_IMAGE" -
39-
for IMAGE in $DOCKER_EXTRA_IMAGES; do \
40-
docker pull "$IMAGE"; \
41-
echo "FROM $IMAGE" | docker build --label preserve=true -t "$DOCKER_REGISTRY/$IMAGE" -; \
42-
done
4357
4458
- name: Create build dependency package
59+
if: ${{ matrix.os.image_name && matrix.os.dockerfile }}
4560
uses: addnab/docker-run-action@v3
4661
with:
4762
options: -v ${{ github.workspace }}:/work
48-
image: ${{ env.DOCKER_BASE_IMAGE }}
63+
image: ${{ matrix.os.base_image }}
4964
run: |
5065
apt-get update
5166
export DEBIAN_FRONTEND=noninteractive
@@ -59,9 +74,13 @@ jobs:
5974
chown $(stat -c'%u:%g' .git) *
6075
6176
- name: Build main Docker image
77+
if: ${{ matrix.os.image_name && matrix.os.dockerfile }}
6278
shell: bash
79+
env:
80+
DOCKER_IMAGE_NAME: ${{ matrix.os.image_name }}
81+
DOCKERFILE: ${{ matrix.os.dockerfile }}
6382
run: |
64-
docker build --no-cache -f scripts/ci/Dockerfile -t "$DOCKER_IMAGE_NAME" --label preserve=true .
83+
docker build --no-cache -f "$DOCKERFILE" -t "$DOCKER_IMAGE_NAME" --label preserve=true .
6584
6685
- name: Docker login
6786
uses: docker/login-action@v2
@@ -70,11 +89,30 @@ jobs:
7089
password: ${{ secrets.DOCKER_REPO_UPDATE_PASSWORD }}
7190
registry: ${{ env.DOCKER_REGISTRY }}
7291

73-
- name: Push images to local registry
92+
- name: Push base image to local registry
7493
shell: bash
94+
env:
95+
DOCKER_BASE_IMAGE: ${{ matrix.os.base_image }}
7596
run: |
76-
docker push "$DOCKER_IMAGE_NAME"
7797
docker push "$DOCKER_REGISTRY/$DOCKER_BASE_IMAGE"
78-
for IMAGE in $DOCKER_EXTRA_IMAGES; do \
79-
docker push "$DOCKER_REGISTRY/$IMAGE"; \
98+
99+
- name: Push main image to local registry
100+
if: ${{ matrix.os.image_name && matrix.os.dockerfile }}
101+
shell: bash
102+
env:
103+
DOCKER_IMAGE_NAME: ${{ matrix.os.image_name }}
104+
DOCKER_BASE_IMAGE: ${{ matrix.os.base_image }}
105+
run: |
106+
docker push "$DOCKER_IMAGE_NAME"
107+
108+
- name: Create and push alternative tags
109+
if: ${{ matrix.os.image_name && matrix.os.extra_tags }}
110+
shell: bash
111+
env:
112+
DOCKER_IMAGE_NAME: ${{ matrix.os.image_name }}
113+
DOCKER_TAGS: ${{ matrix.os.extra_tags }}
114+
run: |
115+
for TAG in $DOCKER_TAGS; do \
116+
docker image tag "$DOCKER_IMAGE_NAME" "$TAG"; \
117+
docker push "$TAG"; \
80118
done

0 commit comments

Comments
 (0)