Skip to content

Commit 30fedcb

Browse files
raballewclaude
andcommitted
fix: drop container image digest pinning, unify toolchain versions, migrate to Fedora
- Disable pinDigests in Renovate -- most registries prune untagged manifests within weeks, making pinned digests counterproductive - Rename renovate.json to renovate.jsonc to formally support comments - Centralize uv version in .uv-version -- Containerfiles install via curl at build time, CI workflows and e2e scripts read the same file - Migrate controller images from UBI9 to Fedora, install Go from .go-version via go.dev (replaces ubi9/go-toolset) - Use fedora-minimal for controller/operator runtime stages - Pin all Fedora images to registry.fedoraproject.org - Parameterize Python version from .py-version in devfile Containerfiles - Replace hardcoded podman fallback image in build_fits.sh with a Containerfile managed by Renovate natively - Bump Fedora from 43 to 44 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent bb33d4b commit 30fedcb

17 files changed

Lines changed: 100 additions & 61 deletions

File tree

.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: 10 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/bundle.Containerfile
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
@@ -70,6 +70,9 @@ jobs:
7070
with:
7171
fetch-depth: 0
7272

73+
- id: go
74+
run: echo "version=$(cat .go-version)" >> "$GITHUB_OUTPUT"
75+
7376
- name: Check if this image should be built
7477
id: check
7578
if: github.event_name == 'pull_request'
@@ -191,6 +194,7 @@ jobs:
191194
cache-from: type=gha
192195
cache-to: type=gha,mode=max
193196
build-args: |
197+
GO_VERSION=${{ steps.go.outputs.version }}
194198
GIT_VERSION=${{ env.PEP440_VERSION }}
195199
GIT_COMMIT=${{ steps.build-args.outputs.git_commit }}
196200
BUILD_DATE=${{ steps.build-args.outputs.build_date }}

.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
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: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,12 @@ jobs:
4545
fetch-depth: 0
4646
fetch-tags: true
4747

48+
- id: uv
49+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
4850
- name: Install uv
4951
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
5052
with:
51-
version: "0.11.6"
53+
version: ${{ steps.uv.outputs.version }}
5254
python-version-file: .py-version
5355

5456
- name: Setup Pages
@@ -81,10 +83,12 @@ jobs:
8183
fetch-depth: 0
8284
fetch-tags: true
8385

86+
- id: uv
87+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
8488
- name: Install uv
8589
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
8690
with:
87-
version: "0.11.6"
91+
version: ${{ steps.uv.outputs.version }}
8892
python-version-file: .py-version
8993

9094
- name: Verify generated gRPC docs are up to date
@@ -103,10 +107,12 @@ jobs:
103107
fetch-depth: 0
104108
fetch-tags: true
105109

110+
- id: uv
111+
run: echo "version=$(cat .uv-version)" >> "$GITHUB_OUTPUT"
106112
- name: Install uv
107113
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
108114
with:
109-
version: "0.11.6"
115+
version: ${{ steps.uv.outputs.version }}
110116
python-version-file: .py-version
111117

112118
- 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@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.19"
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.19"
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

controller/Makefile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ run-router: manifests generate fmt vet ## Run a router from your host.
123123
.PHONY: docker-build
124124
docker-build: ## Build docker image with the manager.
125125
$(CONTAINER_TOOL) build \
126+
--build-arg GO_VERSION=$(shell cat ../.go-version) \
126127
--build-arg GIT_VERSION=$(GIT_VERSION) \
127128
--build-arg GIT_COMMIT=$(GIT_COMMIT) \
128129
--build-arg BUILD_DATE=$(BUILD_DATE) \
@@ -141,8 +142,8 @@ docker-push: ## Push docker image with the manager.
141142
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
142143
.PHONY: docker-buildx
143144
docker-buildx: ## Build and push docker image for the manager for cross-platform support
144-
# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
145-
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
145+
# copy existing Containerfile and insert --platform=${BUILDPLATFORM} into Containerfile.cross, and preserve the original Containerfile
146+
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Containerfile > Containerfile.cross
146147
- $(CONTAINER_TOOL) buildx create --name jumpstarter-controller-builder
147148
$(CONTAINER_TOOL) buildx use jumpstarter-controller-builder
148149
- $(CONTAINER_TOOL) buildx build --push --platform=$(PLATFORMS) \
@@ -151,9 +152,9 @@ docker-buildx: ## Build and push docker image for the manager for cross-platform
151152
--build-arg BUILD_DATE=$(BUILD_DATE) \
152153
--tag ${DOCKER_REPO}:${DOCKER_TAG} \
153154
--tag ${DOCKER_REPO}:latest \
154-
-f Dockerfile.cross .
155+
-f Containerfile.cross .
155156
- $(CONTAINER_TOOL) buildx rm jumpstarter-controller-builder
156-
rm Dockerfile.cross
157+
rm Containerfile.cross
157158

158159
.PHONY: build-installer
159160
build-installer: manifests generate kustomize ## Generate a consolidated YAML with CRDs and deployment.

controller/deploy/operator/Makefile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,11 @@ run: manifests generate fmt vet ## Run a controller from your host.
172172
.PHONY: docker-build
173173
docker-build: ## Build docker image with the manager.
174174
$(CONTAINER_TOOL) build \
175+
--build-arg GO_VERSION=$(shell cat ../../../.go-version) \
175176
--build-arg GIT_VERSION=$(GIT_VERSION) \
176177
--build-arg GIT_COMMIT=$(GIT_COMMIT) \
177178
--build-arg BUILD_DATE=$(BUILD_DATE) \
178-
-t ${IMG} ../../ -f ../../Dockerfile.operator
179+
-t ${IMG} ../../ -f ../../Containerfile.operator
179180

180181
.PHONY: docker-push
181182
docker-push: ## Push docker image with the manager.
@@ -190,17 +191,17 @@ docker-push: ## Push docker image with the manager.
190191
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
191192
.PHONY: docker-buildx
192193
docker-buildx: ## Build and push docker image for the manager for cross-platform support
193-
# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
194-
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' ../../Dockerfile.operator > ../../Dockerfile.operator.cross
194+
# copy existing Containerfile and insert --platform=${BUILDPLATFORM} into Containerfile.cross, and preserve the original Containerfile
195+
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' ../../Containerfile.operator > ../../Containerfile.operator.cross
195196
- $(CONTAINER_TOOL) buildx create --name jumpstarter-operator-builder
196197
$(CONTAINER_TOOL) buildx use jumpstarter-operator-builder
197198
- $(CONTAINER_TOOL) buildx build --push --platform=$(PLATFORMS) \
198199
--build-arg GIT_VERSION=$(GIT_VERSION) \
199200
--build-arg GIT_COMMIT=$(GIT_COMMIT) \
200201
--build-arg BUILD_DATE=$(BUILD_DATE) \
201-
--tag ${IMG} -f ../../Dockerfile.operator.cross ../../
202+
--tag ${IMG} -f ../../Containerfile.operator.cross ../../
202203
- $(CONTAINER_TOOL) buildx rm jumpstarter-operator-builder
203-
rm ../../Dockerfile.operator.cross
204+
rm ../../Containerfile.operator.cross
204205

205206
.PHONY: build-installer
206207
build-installer: manifests generate kustomize ## Generate a consolidated YAML with CRDs and deployment.
@@ -347,7 +348,7 @@ contribute: bundle ## Update community-operators repos with the current bundle.
347348

348349
.PHONY: bundle-build
349350
bundle-build: ## Build the bundle image.
350-
$(CONTAINER_TOOL) build -f bundle.Dockerfile -t $(BUNDLE_IMG) .
351+
$(CONTAINER_TOOL) build -f bundle.Containerfile -t $(BUNDLE_IMG) .
351352

352353
.PHONY: bundle-push
353354
bundle-push: ## Push the bundle image.

0 commit comments

Comments
 (0)