1919 # should be used to transfer images between jobs. Forked and dependabot builds don't
2020 # have permission to push to registry.
2121 use_registry : ${{ ! (github.event_name == 'pull_request' && (github.event.pull_request.head.repo.full_name != github.repository || startsWith(github.head_ref, 'dependabot/'))) }}
22+ COMPOSE_VERSION : 2.40.3
2223
2324jobs :
2425 # builds all docker images in parallel
2526 build-docker :
26- runs-on : ubuntu-22 .04
27+ runs-on : ubuntu-24 .04
2728
2829 strategy :
2930 matrix :
3435 - image : unbound
3536 dockerfile : docker/Dockerfile
3637 target : unbound
37- - image : linttest
38+ - image : tools
3839 dockerfile : docker/Dockerfile
39- target : linttest
40+ target : tools
4041 - image : test-runner
4142 dockerfile : docker/test-runner.Dockerfile
4243 target :
5152 target :
5253
5354 outputs :
54- internetnl_version : ${{ steps.get_version.outputs.internetnl_version }}
55+ release : ${{ steps.get_version.outputs.release }}
56+ scm_version : ${{ steps.get_version.outputs.scm_version }}
5557
5658 steps :
5759 - name : Debug info
@@ -83,10 +85,14 @@ jobs:
8385 id : get_version
8486 run : |
8587 pip -q install setuptools_scm
86- # '+' and '/' is not supported in Docker Image tags
88+ # determine version number from Git information
8789 scm_version=$(echo 'from setuptools_scm import get_version; print(get_version(version_scheme="release-branch-semver"))' | python)
8890 branch_version_suffix=${GITHUB_HEAD_REF:+-$GITHUB_HEAD_REF}
89- echo "internetnl_version=$scm_version$branch_version_suffix" | tr '+' '-'| tr '/' '-' | tee -a "$GITHUB_OUTPUT"
91+ # release is the version used for the docker image tag
92+ # '+' and '/' is not supported in Docker Image tags, so replace those from the SCM version with '-'
93+ echo "release=$scm_version$branch_version_suffix" | tr '+' '-'| tr '/' '-' | tee -a "$GITHUB_OUTPUT"
94+ # scm_version is valid PEP 440 and used as SETUPTOOLS_SCM_PRETEND_VERSION in Docker builds
95+ echo "scm_version=$scm_version$branch_version_suffix" | tee -a "$GITHUB_OUTPUT"
9096 # generate docker image tag used for PR specific caching and PR specific auto deploy
9197 echo "github_ref_name_slug=${{github.ref_name}}" | tr '+' '-'| tr '/' '-' | tee -a "$GITHUB_OUTPUT"
9298
@@ -123,7 +129,7 @@ jobs:
123129 # tag image with current setuptools_scm generated version
124130 # and tag with PR source branch (eg: feature-x)
125131 tags : |
126- ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.internetnl_version }}
132+ ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.release }}
127133 ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.github_ref_name_slug }}
128134 # use latest build from main, or image previously build by this PR for caching
129135 cache-from : |
@@ -135,7 +141,8 @@ jobs:
135141 # pass in version information
136142 build-args : |
137143 BUILDKIT_INLINE_CACHE=1
138- RELEASE=${{ steps.get_version.outputs.internetnl_version }}
144+ SCM_VERSION=${{ steps.get_version.outputs.scm_version }}
145+ RELEASE=${{ steps.get_version.outputs.release }}
139146
140147 - name : Build ${{ matrix.image }} (for main)
141148 # build for pushes to the main branch
@@ -150,7 +157,7 @@ jobs:
150157 # tag image with current setuptools_scm generated version
151158 # and tag with current branch name (eg: main)
152159 tags : |
153- ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.internetnl_version }}
160+ ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.release }}
154161 ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:main
155162 # use latest build from main for caching
156163 cache-from : |
@@ -161,7 +168,8 @@ jobs:
161168 # pass in version information
162169 build-args : |
163170 BUILDKIT_INLINE_CACHE=1
164- RELEASE=${{ steps.get_version.outputs.internetnl_version }}
171+ SCM_VERSION=${{ steps.get_version.outputs.scm_version }}
172+ RELEASE=${{ steps.get_version.outputs.release }}
165173
166174 - name : Build ${{ matrix.image }} (for release)
167175 # build for tagged releases
@@ -175,7 +183,7 @@ jobs:
175183 target : ${{ matrix.target }}
176184 # tag image with current setuptools_scm generated version and tag 'latest'
177185 tags : |
178- ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.internetnl_version }}
186+ ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.release }}
179187 ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:latest
180188 # use latest build from main for caching
181189 cache-from : |
@@ -186,7 +194,8 @@ jobs:
186194 # pass in version information
187195 build-args : |
188196 BUILDKIT_INLINE_CACHE=1
189- RELEASE=${{ steps.get_version.outputs.internetnl_version }}
197+ SCM_VERSION=${{ steps.get_version.outputs.scm_version }}
198+ RELEASE=${{ steps.get_version.outputs.release }}
190199
191200 - name : Build ${{ matrix.image }} (for forked PR's or dependabot)
192201 # build for forked PR's that don't have permissions to push to the container registry or dependabot PR's
@@ -200,7 +209,7 @@ jobs:
200209 target : ${{ matrix.target }}
201210 # tag image with current setuptools_scm generated version
202211 tags : |
203- ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.internetnl_version }}
212+ ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.release }}
204213 # use latest build from main for caching
205214 cache-from : |
206215 ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:main
@@ -209,12 +218,13 @@ jobs:
209218 # makes build images better usable as cache by allowing individual layers to be pulled from cache
210219 # pass in version information
211220 build-args : |
212- RELEASE=${{ steps.get_version.outputs.internetnl_version }}
221+ SCM_VERSION=${{ steps.get_version.outputs.scm_version }}
222+ RELEASE=${{ steps.get_version.outputs.release }}
213223
214224 - name : Save image to disk (for forked PR's or dependabot)
215225 # trigger only for forked PR's that don't have permissions to push to the container registry
216226 if : ${{ env.use_registry == 'false' }}
217- run : docker save ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.internetnl_version }} | gzip > "${{ matrix.image }}.tar.gz"
227+ run : docker save ${{ env.DOCKER_REGISTRY }}/${{ matrix.image }}:${{ steps.get_version.outputs.release }} | gzip > "${{ matrix.image }}.tar.gz"
218228
219229 - name : Upload image as build artifact (for forked PR's or dependabot)
220230 # trigger only for forked PR's that don't have permissions to push to the container registry
@@ -227,7 +237,7 @@ jobs:
227237 retention-days : 1
228238
229239 docs :
230- runs-on : ubuntu-22 .04
240+ runs-on : ubuntu-24 .04
231241 needs : [build-docker]
232242 steps :
233243 - name : Branch deployment docs
@@ -242,7 +252,7 @@ jobs:
242252 --volume /opt/Internet.nl:/opt/Internet.nl \\
243253 --network none \\
244254 --env DOCKER_REGISTRY=${{ env.DOCKER_REGISTRY }} \\
245- ${{ env.DOCKER_REGISTRY }}/util:${{ needs.build-docker.outputs.internetnl_version }} \\
255+ ${{ env.DOCKER_REGISTRY }}/util:${{ needs.build-docker.outputs.release }} \\
246256 /deploy.sh
247257 EOF
248258
@@ -253,7 +263,7 @@ jobs:
253263
254264 env :
255265 # used in `compose.yaml` files to determine version of images to pull
256- RELEASE : " ${{ needs.build-docker.outputs.internetnl_version }}"
266+ RELEASE : " ${{ needs.build-docker.outputs.release }}"
257267 PY_COLORS : " 1"
258268
259269 steps :
@@ -272,7 +282,7 @@ jobs:
272282 sudo apt-get update
273283
274284 # upgrade Docker
275- sudo apt install --upgrade docker-ce docker-compose-plugin=2.33.0 \*
285+ sudo apt install --upgrade docker-ce docker-compose-plugin=$COMPOSE_VERSION \*
276286
277287 - name : Debug info
278288 run : |
@@ -374,11 +384,11 @@ jobs:
374384 lintcheck :
375385 name : lint/check
376386 needs : [build-docker]
377- runs-on : ubuntu-22 .04
387+ runs-on : ubuntu-24 .04
378388
379389 env :
380390 # used in `compose.yaml` files to determine version of images to pull
381- RELEASE : " ${{ needs.build-docker.outputs.internetnl_version }}"
391+ RELEASE : " ${{ needs.build-docker.outputs.release }}"
382392
383393 steps :
384394 - name : Debug info
@@ -433,7 +443,7 @@ jobs:
433443
434444 env :
435445 # used in `compose.yaml` files to determine version of images to pull
436- RELEASE : " ${{ needs.build-docker.outputs.internetnl_version }}"
446+ RELEASE : " ${{ needs.build-docker.outputs.release }}"
437447 PY_COLORS : " 1"
438448
439449 steps :
@@ -452,7 +462,7 @@ jobs:
452462 sudo apt-get update
453463
454464 # upgrade Docker
455- sudo apt install --upgrade docker-ce docker-compose-plugin=2.33.0 \*
465+ sudo apt install --upgrade docker-ce docker-compose-plugin=$COMPOSE_VERSION \*
456466
457467 - name : Debug info
458468 run : |
@@ -521,7 +531,7 @@ jobs:
521531
522532 env :
523533 # used in `compose.yaml` files to determine version of images to pull
524- RELEASE : " ${{ needs.build-docker.outputs.internetnl_version }}"
534+ RELEASE : " ${{ needs.build-docker.outputs.release }}"
525535
526536 steps :
527537 - name : Install specific Docker/Compose versions that are known to work
@@ -539,7 +549,7 @@ jobs:
539549 sudo apt-get update
540550
541551 # upgrade Docker
542- sudo apt install --upgrade docker-ce docker-compose-plugin=2.33.0 \*
552+ sudo apt install --upgrade docker-ce docker-compose-plugin=$COMPOSE_VERSION \*
543553
544554 - name : Debug info
545555 run : |
@@ -638,7 +648,7 @@ jobs:
638648
639649 env :
640650 # used in `compose.yaml` files to determine version of images to pull
641- RELEASE : " ${{ needs.build-docker.outputs.internetnl_version }}"
651+ RELEASE : " ${{ needs.build-docker.outputs.release }}"
642652 PY_COLORS : " 1"
643653
644654 steps :
@@ -657,7 +667,7 @@ jobs:
657667 sudo apt-get update
658668
659669 # upgrade Docker
660- sudo apt install --upgrade docker-ce docker-compose-plugin=2.33.0 \*
670+ sudo apt install --upgrade docker-ce docker-compose-plugin=$COMPOSE_VERSION \*
661671
662672 - name : Debug info
663673 run : |
@@ -725,7 +735,7 @@ jobs:
725735
726736 - name : Collect Docker Compose logs
727737 if : always()
728- run : make logs-all-dump env=test > docker-compose.log
738+ run : make logs-all-dump env=batch- test > docker-compose.log
729739
730740 - uses : test-summary/action@v2.3
731741 with :
0 commit comments