Skip to content

Commit 590da7b

Browse files
authored
fix: drop container image digest pinning, unify uv version, bump Fedora to 44 (#781)
## Summary ### Drop container image digest pinning - Disable `pinDigests` in Renovate config -- most container registries prune untagged manifests within weeks, so pinned digests break reproducibility instead of guaranteeing it and force an unsustainable biweekly update cycle - Keep `helpers:pinGitHubActionDigests` for GitHub Action commit-SHA pinning (those are permanent, not pruned) - Rename `renovate.json` to `renovate.jsonc` to formally support comments, add rationale for the `pinDigests` decision ### Unify uv version management - Add `.uv-version` as single source of truth for the uv toolchain version - Dockerfiles install uv via `curl` reading `.uv-version` at build time -- no hardcoded image tags or `ARG` defaults - CI workflows read `.uv-version` into a step output and pass it to `setup-uv` - E2e scripts (`setup-e2e.sh`, `compat/setup.sh`) pin the curl installer to `.uv-version` - Renovate tracks `.uv-version` via a custom regex manager using the `github-releases` datasource - Fixes a cross-platform build bug: the old `COPY --from=uv` copied the build-platform binary into the target-platform product stage ### Bump Fedora 43 to 44 - `python/Dockerfile`, `python/Dockerfile.utils`, `.github/workflows/build-oci-bundle.yaml` - `build_fits.sh` podman fallback: replaced hardcoded `fedora:44` with a `Containerfile` so Renovate's native dockerfile manager tracks it (no custom regex needed)
1 parent a8120be commit 590da7b

24 files changed

Lines changed: 132 additions & 81 deletions

.devcontainer/Containerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM mcr.microsoft.com/devcontainers/base:2.1.9-bookworm
2+
3+
ENV PYTHONUNBUFFERED=True
4+
ENV UV_LINK_MODE=copy
5+
6+
WORKDIR /opt
7+
8+
COPY --from=ghcr.io/astral-sh/uv:0.11.19 /uv /uvx /bin/
9+
COPY ./.py-version ./.python-version
10+
11+
RUN apt-get update && apt-get install -y iperf3 libusb-dev

.devcontainer/Dockerfile

Lines changed: 0 additions & 13 deletions
This file was deleted.

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "uv",
33
"build": {
44
"context": "..",
5-
"dockerfile": "Dockerfile"
5+
"dockerfile": "Containerfile"
66
},
77
"postCreateCommand": "cd python && make sync",
88
"postStartCommand": "cd python && uv python pin $(cat ../.py-version) && uv run pre-commit install",

.github/workflows/build-images.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ jobs:
3232
# Controller images
3333
- image_name: jumpstarter-dev/jumpstarter-controller
3434
label: jumpstarter-controller
35-
dockerfile: controller/Dockerfile
35+
dockerfile: controller/Containerfile
3636
context: controller
3737
- image_name: jumpstarter-dev/jumpstarter-operator
3838
label: jumpstarter-operator
39-
dockerfile: controller/Dockerfile.operator
39+
dockerfile: controller/Containerfile.operator
4040
context: controller
4141
- image_name: jumpstarter-dev/jumpstarter-operator-bundle
4242
label: jumpstarter-operator-bundle
43-
dockerfile: controller/deploy/operator/bundle.Dockerfile
43+
dockerfile: controller/deploy/operator/Containerfile.bundle
4444
context: controller/deploy/operator
4545
generate_bundle: true
4646
- image_name: jumpstarter-dev/microshift/bootc
@@ -50,16 +50,16 @@ jobs:
5050
# Python images (use repo root context for .git access needed by hatch-vcs)
5151
- image_name: jumpstarter-dev/jumpstarter
5252
label: jumpstarter
53-
dockerfile: python/Dockerfile
53+
dockerfile: python/Containerfile
5454
context: .
5555
- image_name: jumpstarter-dev/jumpstarter-utils
5656
label: jumpstarter-utils
57-
dockerfile: python/Dockerfile.utils
57+
dockerfile: python/Containerfile.utils
5858
context: python
5959
- image_name: jumpstarter-dev/jumpstarter-dev
6060
label: jumpstarter-dev
6161
dockerfile: python/.devfile/Containerfile
62-
context: python
62+
context: .
6363
- image_name: jumpstarter-dev/jumpstarter-devspace
6464
label: jumpstarter-devspace
6565
dockerfile: python/.devfile/Containerfile.client

.github/workflows/build-oci-bundle.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
jobs:
77
build-fits:
88
runs-on: ubuntu-24.04-arm
9-
container: fedora:43@sha256:762d73ba1c455232b0272c5d445a34f36c4b9f421cbc05ce8102552325b6a222
9+
container: registry.fedoraproject.org/fedora:44
1010
steps:
1111
- name: Checkout repository
1212
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

.github/workflows/documentation.yaml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,13 @@ jobs:
4545
fetch-depth: 0
4646
fetch-tags: true
4747

48+
- id: uv
49+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
50+
working-directory: .
4851
- name: Install uv
4952
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
5053
with:
51-
version: "0.11.21"
54+
version: ${{ steps.uv.outputs.version }}
5255
python-version-file: .py-version
5356

5457
- name: Setup Pages
@@ -81,10 +84,13 @@ jobs:
8184
fetch-depth: 0
8285
fetch-tags: true
8386

87+
- id: uv
88+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
89+
working-directory: .
8490
- name: Install uv
8591
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
8692
with:
87-
version: "0.11.21"
93+
version: ${{ steps.uv.outputs.version }}
8894
python-version-file: .py-version
8995

9096
- name: Verify generated gRPC docs are up to date
@@ -103,10 +109,13 @@ jobs:
103109
fetch-depth: 0
104110
fetch-tags: true
105111

112+
- id: uv
113+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
114+
working-directory: .
106115
- name: Install uv
107116
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
108117
with:
109-
version: "0.11.21"
118+
version: ${{ steps.uv.outputs.version }}
110119
python-version-file: .py-version
111120

112121
- name: Check documentation links

.github/workflows/e2e.yaml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
7171
with:
7272
path: /tmp/controller-image.tar
73-
key: controller-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Dockerfile', 'controller/go.mod', 'controller/go.sum', 'controller/cmd/**', 'controller/api/**', 'controller/internal/**') }}
73+
key: controller-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Containerfile', 'controller/go.mod', 'controller/go.sum', 'controller/cmd/**', 'controller/api/**', 'controller/internal/**') }}
7474

7575
- name: Build controller image
7676
if: steps.cache.outputs.cache-hit != 'true'
@@ -115,7 +115,7 @@ jobs:
115115
path: |
116116
/tmp/operator-image.tar
117117
/tmp/operator-install.yaml
118-
key: operator-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Dockerfile.operator', 'controller/go.mod', 'controller/go.sum', 'controller/deploy/operator/**', 'controller/api/**', 'controller/internal/**') }}
118+
key: operator-image-${{ matrix.arch }}-${{ hashFiles('controller/Makefile', 'controller/Containerfile.operator', 'controller/go.mod', 'controller/go.sum', 'controller/deploy/operator/**', 'controller/api/**', 'controller/internal/**') }}
119119

120120
- name: Build operator image and installer manifest
121121
if: steps.cache.outputs.cache-hit != 'true'
@@ -144,9 +144,12 @@ jobs:
144144
with:
145145
fetch-depth: 0
146146

147+
- id: uv
148+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
147149
- name: Install uv
148150
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
149151
with:
152+
version: ${{ steps.uv.outputs.version }}
150153
python-version-file: .py-version
151154

152155
- name: Cache python wheels
@@ -187,9 +190,12 @@ jobs:
187190
- name: Checkout repository
188191
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
189192

193+
- id: uv
194+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
190195
- name: Install uv
191196
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
192197
with:
198+
version: ${{ steps.uv.outputs.version }}
193199
python-version-file: .py-version
194200

195201
- name: Install Go
@@ -245,9 +251,12 @@ jobs:
245251
- name: Checkout repository
246252
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
247253

254+
- id: uv
255+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
248256
- name: Install uv
249257
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
250258
with:
259+
version: ${{ steps.uv.outputs.version }}
251260
python-version-file: .py-version
252261

253262
- name: Install Go
@@ -281,9 +290,12 @@ jobs:
281290
- name: Checkout repository
282291
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
283292

293+
- id: uv
294+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
284295
- name: Install uv
285296
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
286297
with:
298+
version: ${{ steps.uv.outputs.version }}
287299
python-version-file: .py-version
288300

289301
- name: Install Go

.github/workflows/lint.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
- 'python/**'
3939
- '.github/workflows/lint.yaml'
4040
renovate:
41-
- 'renovate.json'
41+
- 'renovate.jsonc'
4242
- '.github/workflows/lint.yaml'
4343
4444
lint-go:
@@ -94,10 +94,12 @@ jobs:
9494
steps:
9595
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
9696

97+
- id: uv
98+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
9799
- name: Install uv
98100
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
99101
with:
100-
version: "0.11.21"
102+
version: ${{ steps.uv.outputs.version }}
101103
python-version-file: .py-version
102104

103105
- name: Run ty

.github/workflows/python-tests.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,12 @@ jobs:
5353
with:
5454
fetch-depth: 0
5555

56-
- name: Install the latest version of uv
56+
- id: uv
57+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
58+
- name: Install uv
5759
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
5860
with:
59-
version: "0.11.21"
61+
version: ${{ steps.uv.outputs.version }}
6062
python-version: ${{ matrix.python-version }}
6163

6264
- name: Install Qemu (Linux)

.uv-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.11.19

0 commit comments

Comments
 (0)