8 Commits

Author SHA1 Message Date
benvin fa7c53a925 Merge pull request 'feat: add uv to fedora base images' (#7) from benvin/fedora-uv into main
ci/woodpecker/tag/docker/3 Pipeline was successful
ci/woodpecker/tag/docker/2 Pipeline was successful
ci/woodpecker/tag/docker/4 Pipeline was successful
ci/woodpecker/tag/docker/1 Pipeline was successful
Reviewed-on: #7
2026-10-05 14:14:59 +11:00
unkin-agent 59f56024eb feat: add uv to fedora base images
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build-matrix/3 Pipeline was successful
ci/woodpecker/pr/build-matrix/4 Pipeline was successful
ci/woodpecker/pr/build-matrix/2 Pipeline was successful
ci/woodpecker/pr/build-matrix/1 Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
2026-10-05 13:59:14 +11:00
benvin 55fb671096 Merge pull request 'feat: add fedora 42/43/44 base images' (#6) from benvin/fedora-distros into main
ci/woodpecker/tag/docker/3 Pipeline was successful
ci/woodpecker/tag/docker/4 Pipeline was successful
ci/woodpecker/tag/docker/2 Pipeline was successful
ci/woodpecker/tag/docker/1 Pipeline was successful
Reviewed-on: #6
2026-10-03 15:42:57 +10:00
unkin-agent 3eb0c83bba Restore fedora44 matrix base image
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build-matrix/4 Pipeline was successful
ci/woodpecker/pr/build-matrix/2 Pipeline was successful
ci/woodpecker/pr/build-matrix/3 Pipeline was successful
ci/woodpecker/pr/build-matrix/1 Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
2026-10-03 15:38:52 +10:00
unkin-agent c9f3787b08 Break fedora44 matrix entry to exercise the build gate
ci/woodpecker/pr/build-matrix/4 Pipeline failed
ci/woodpecker/pr/pre-commit Pipeline failed
ci/woodpecker/pr/build-matrix/2 Pipeline was successful
ci/woodpecker/pr/build-matrix/3 Pipeline was successful
ci/woodpecker/pr/build-matrix/1 Pipeline was successful
ci/woodpecker/pr/build unknown status
2026-10-03 15:37:00 +10:00
unkin-agent 95f449a875 Gate the build context on every matrix entry via an aggregator workflow
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build-matrix/2 Pipeline was successful
ci/woodpecker/pr/build-matrix/3 Pipeline was successful
ci/woodpecker/pr/build-matrix/4 Pipeline was successful
ci/woodpecker/pr/build-matrix/1 Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
2026-10-03 15:34:47 +10:00
unkin-agent 68e27e2560 Disable dnf zchunk; artifactapi ignores Range
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build/2 Pipeline was successful
ci/woodpecker/pr/build/4 Pipeline was successful
ci/woodpecker/pr/build/3 Pipeline was successful
ci/woodpecker/pr/build/1 Pipeline was successful
2026-10-03 09:54:48 +10:00
unkin-agent 976fb0b3a9 Add fedora 42/43/44 base images
ci/woodpecker/pr/build/3 Pipeline failed
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build/4 Pipeline was successful
ci/woodpecker/pr/build/2 Pipeline was successful
ci/woodpecker/pr/build/1 Pipeline was successful
2026-10-03 09:49:11 +10:00
15 changed files with 228 additions and 25 deletions
+44
View File
@@ -0,0 +1,44 @@
when:
- event: pull_request
matrix:
include:
# One entry per distro. Adding a distro: add distros/<name>/ and one entry here.
# BASE_IMAGE must match the distro's distro.env; ci/check-distros.sh enforces it.
- DISTRO: alma9
IMAGE: almalinux9
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/almalinux:9"
- DISTRO: fedora42
IMAGE: fedora42
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:42"
- DISTRO: fedora43
IMAGE: fedora43
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:43"
- DISTRO: fedora44
IMAGE: fedora44
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:44"
steps:
- name: build
image: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/plugin-docker-buildx:latest"
settings:
# registry is what gets the internal CA into the buildkit container: the plugin
# writes a buildkit.toml pointing at /etc/docker/certs.d/<registry>/ca.crt only
# when it is set. The plugin has no buildkit_config setting.
registry: artifactapi.k8s.syd1.au.unkin.net
repo: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/${IMAGE}"
target: image
dry_run: true
build_args:
BASE_IMAGE: "${BASE_IMAGE}"
DISTRO: "${DISTRO}"
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 1Gi
cpu: 1
limits:
memory: 4Gi
cpu: 2
+9 -22
View File
@@ -1,35 +1,22 @@
# Branch protection requires ci/woodpecker/pr/build; matrix entries report build-matrix/<n>.
when: when:
- event: pull_request - event: pull_request
matrix: depends_on:
include: - build-matrix
# One entry per distro. Adding a distro: add distros/<name>/ and one entry here.
# BASE_IMAGE must match the distro's distro.env; ci/check-distros.sh enforces it.
- DISTRO: alma9
IMAGE: almalinux9
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/almalinux:9"
steps: steps:
- name: build - name: build
image: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/plugin-docker-buildx:latest" image: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/plugin-docker-buildx:latest"
settings: commands:
# registry is what gets the internal CA into the buildkit container: the plugin - echo "all build-matrix entries passed"
# writes a buildkit.toml pointing at /etc/docker/certs.d/<registry>/ca.crt only
# when it is set. The plugin has no buildkit_config setting.
registry: artifactapi.k8s.syd1.au.unkin.net
repo: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/${IMAGE}"
target: image
dry_run: true
build_args:
BASE_IMAGE: "${BASE_IMAGE}"
DISTRO: "${DISTRO}"
backend_options: backend_options:
kubernetes: kubernetes:
serviceAccountName: default serviceAccountName: default
resources: resources:
requests: requests:
memory: 1Gi memory: 64Mi
cpu: 1 cpu: 100m
limits: limits:
memory: 4Gi memory: 128Mi
cpu: 2 cpu: 250m
+9
View File
@@ -9,6 +9,15 @@ matrix:
- DISTRO: alma9 - DISTRO: alma9
IMAGE: almalinux9 IMAGE: almalinux9
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/almalinux:9" BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/almalinux:9"
- DISTRO: fedora42
IMAGE: fedora42
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:42"
- DISTRO: fedora43
IMAGE: fedora43
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:43"
- DISTRO: fedora44
IMAGE: fedora44
BASE_IMAGE: "artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:44"
steps: steps:
- name: docker - name: docker
+2 -1
View File
@@ -5,7 +5,7 @@ ARG DISTRO=alma9
COPY distros/${DISTRO}/ /tmp/distro/ COPY distros/${DISTRO}/ /tmp/distro/
# DL3041: versions are pinned by the estate dnf repos, not here. SC2086: $PACKAGES is a # DL3041: versions are pinned by the estate dnf repos, not here. SC2086: $PACKAGES is a
# word list on purpose. DL4006: the only pipe ends in sha256sum, whose status is the # word list on purpose. DL4006: the only pipe ends in sha256sum, whose status is the
# pipeline's, and set -e catches it. # pipeline's, and set -e catches it. zchunk is off because artifactapi ignores Range requests.
# hadolint ignore=DL3041,DL4006,SC2086 # hadolint ignore=DL3041,DL4006,SC2086
RUN set -eux; \ RUN set -eux; \
. /tmp/distro/distro.env; \ . /tmp/distro/distro.env; \
@@ -14,6 +14,7 @@ RUN set -eux; \
echo "$CA_RPM_SHA256 /tmp/ca.rpm" | sha256sum -c -; \ echo "$CA_RPM_SHA256 /tmp/ca.rpm" | sha256sum -c -; \
rpm -i /tmp/ca.rpm; \ rpm -i /tmp/ca.rpm; \
cp /tmp/distro/yum.repos.d/*.repo /etc/yum.repos.d/; \ cp /tmp/distro/yum.repos.d/*.repo /etc/yum.repos.d/; \
sed -i '/^\[main\]/a zchunk=False' /etc/dnf/dnf.conf; \
dnf makecache; \ dnf makecache; \
dnf update -y; \ dnf update -y; \
dnf install -y $PACKAGES; \ dnf install -y $PACKAGES; \
+4 -1
View File
@@ -7,6 +7,9 @@ built. Published as `artifactapi.k8s.syd1.au.unkin.net/docker-internal/<image>:<
| distro | image | from | | distro | image | from |
| --- | --- | --- | | --- | --- | --- |
| `alma9` | `almalinux9` | `dockerhub/library/almalinux:9` | | `alma9` | `almalinux9` | `dockerhub/library/almalinux:9` |
| `fedora42` | `fedora42` | `dockerhub/library/fedora:42` |
| `fedora43` | `fedora43` | `dockerhub/library/fedora:43` |
| `fedora44` | `fedora44` | `dockerhub/library/fedora:44` |
Each image bootstraps the internal CA, installs the estate dnf repository Each image bootstraps the internal CA, installs the estate dnf repository
configuration pointed at artifactapi, and installs the base package set. configuration pointed at artifactapi, and installs the base package set.
@@ -15,7 +18,7 @@ configuration pointed at artifactapi, and installs the base package set.
1. `distros/<name>/distro.env` — `BASE_IMAGE`, `IMAGE`, `CA_RPM_URL`, `CA_RPM_SHA256`, `PACKAGES`. 1. `distros/<name>/distro.env` — `BASE_IMAGE`, `IMAGE`, `CA_RPM_URL`, `CA_RPM_SHA256`, `PACKAGES`.
2. `distros/<name>/yum.repos.d/*.repo` — repository configuration for that distro. 2. `distros/<name>/yum.repos.d/*.repo` — repository configuration for that distro.
3. One `include` entry in each of `.woodpecker/{build,docker}.yaml`. 3. One `include` entry in each of `.woodpecker/{build-matrix,docker}.yaml`.
The `check-distros` pre-commit hook fails if step 1 or 3 is incomplete. The `check-distros` pre-commit hook fails if step 1 or 3 is incomplete.
+1 -1
View File
@@ -4,7 +4,7 @@
set -uo pipefail set -uo pipefail
KEYS="BASE_IMAGE IMAGE CA_RPM_URL CA_RPM_SHA256 ESTATE_REPO PACKAGES" KEYS="BASE_IMAGE IMAGE CA_RPM_URL CA_RPM_SHA256 ESTATE_REPO PACKAGES"
WORKFLOWS=(.woodpecker/build.yaml .woodpecker/docker.yaml) WORKFLOWS=(.woodpecker/build-matrix.yaml .woodpecker/docker.yaml)
fail=0 fail=0
for d in distros/*/; do for d in distros/*/; do
+13
View File
@@ -0,0 +1,13 @@
# fedora42 — Fedora 42
# Pulled through the artifactapi dockerhub remote; see distros/alma9/distro.env.
BASE_IMAGE="artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:42"
IMAGE="fedora42"
# Internal CA bootstrap over HTTP, verified against the rpm-vendor-f42 repodata pkgid.
CA_RPM_URL="http://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor-f42/Packages/unkin-ca-certificates-2026.10.2-1.fc42.x86_64.rpm"
CA_RPM_SHA256="4c93bc95e0365565ee708247b9593997131d647d40a69e6f8bf9482f21026f9a"
# Estate local repo used to prove HTTPS trust and dnf reachability.
ESTATE_REPO="rpm-vendor-f42"
PACKAGES="git jq make python3 python3-pip uv wget"
+13
View File
@@ -0,0 +1,13 @@
[fedora]
name=Fedora 42 - x86_64
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora-archive/releases/42/Everything/x86_64/os
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-42-primary
enabled=1
gpgcheck=1
[updates]
name=Fedora 42 - x86_64 - Updates
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora-archive/updates/42/Everything/x86_64
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-42-primary
enabled=1
gpgcheck=1
+27
View File
@@ -0,0 +1,27 @@
[rpm-internal-f42]
name=rpm-internal-f42 repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-internal-f42/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-vendor-f42]
name=rpm-vendor-f42 repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor-f42/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-internal]
name=rpm-internal repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-internal/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-vendor]
name=rpm-vendor repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor/
enabled=1
gpgcheck=0
metadata_expire=60
+13
View File
@@ -0,0 +1,13 @@
# fedora43 — Fedora 43
# Pulled through the artifactapi dockerhub remote; see distros/alma9/distro.env.
BASE_IMAGE="artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:43"
IMAGE="fedora43"
# Internal CA bootstrap over HTTP, verified against the rpm-vendor-f43 repodata pkgid.
CA_RPM_URL="http://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor-f43/Packages/unkin-ca-certificates-2026.10.2-1.fc43.x86_64.rpm"
CA_RPM_SHA256="5c80725659a0cd4228cf834dced0025ceac34f042a1715faff72a68363f61404"
# Estate local repo used to prove HTTPS trust and dnf reachability.
ESTATE_REPO="rpm-vendor-f43"
PACKAGES="git jq make python3 python3-pip uv wget"
+13
View File
@@ -0,0 +1,13 @@
[fedora]
name=Fedora 43 - x86_64
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora/releases/43/Everything/x86_64/os
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-43-primary
enabled=1
gpgcheck=1
[updates]
name=Fedora 43 - x86_64 - Updates
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora/updates/43/Everything/x86_64
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-43-primary
enabled=1
gpgcheck=1
+27
View File
@@ -0,0 +1,27 @@
[rpm-internal-f43]
name=rpm-internal-f43 repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-internal-f43/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-vendor-f43]
name=rpm-vendor-f43 repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor-f43/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-internal]
name=rpm-internal repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-internal/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-vendor]
name=rpm-vendor repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor/
enabled=1
gpgcheck=0
metadata_expire=60
+13
View File
@@ -0,0 +1,13 @@
# fedora44 — Fedora 44
# Pulled through the artifactapi dockerhub remote; see distros/alma9/distro.env.
BASE_IMAGE="artifactapi.k8s.syd1.au.unkin.net/dockerhub/library/fedora:44"
IMAGE="fedora44"
# Internal CA bootstrap over HTTP, verified against the rpm-vendor-f44 repodata pkgid.
CA_RPM_URL="http://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor-f44/Packages/unkin-ca-certificates-2026.10.2-1.fc44.x86_64.rpm"
CA_RPM_SHA256="19929d13dd7a0542af3bf1dce736568b87159914b0261d7a9965edfd58dfc9cd"
# Estate local repo used to prove HTTPS trust and dnf reachability.
ESTATE_REPO="rpm-vendor-f44"
PACKAGES="git jq make python3 python3-pip uv wget"
+13
View File
@@ -0,0 +1,13 @@
[fedora]
name=Fedora 44 - x86_64
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora/releases/44/Everything/x86_64/os
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-44-primary
enabled=1
gpgcheck=1
[updates]
name=Fedora 44 - x86_64 - Updates
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora/updates/44/Everything/x86_64
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-44-primary
enabled=1
gpgcheck=1
+27
View File
@@ -0,0 +1,27 @@
[rpm-internal-f44]
name=rpm-internal-f44 repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-internal-f44/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-vendor-f44]
name=rpm-vendor-f44 repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor-f44/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-internal]
name=rpm-internal repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-internal/
enabled=1
gpgcheck=0
metadata_expire=60
[rpm-vendor]
name=rpm-vendor repository
baseurl=https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor/
enabled=1
gpgcheck=0
metadata_expire=60