Skip to content

Commit 3ae4cee

Browse files
eoinfennessyclaude
andcommitted
refactor: generate lock files with hashes for midstream and downstream builds
Replace the unpinned requirements.txt with two lock files produced by `uv pip compile --generate-hashes`: one for midstream (PyPI, with --torch-backend=cpu) and one for downstream (RHAI index, for Konflux hermetic builds). This ensures reproducible installs with hash verification on both build paths. Key changes: - build.py generates requirements-lock.txt (midstream) and requirements-lock-konflux.txt (downstream) based on build.env config - Use UV_TORCH_BACKEND=cpu + UV_CONFIG_FILE=/dev/null in Containerfile to avoid multi-index hash incompleteness (uv#14000) - Add build/run.sh wrapper to run build.py inside the base image container for consistent Linux-native resolution - Move pymilvus/milvus-lite constraints to distribution/constraints.txt - Update CI workflows to use the new lock files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 03a02da commit 3ae4cee

13 files changed

Lines changed: 5439 additions & 150 deletions

.github/workflows/create-or-update-release-branch.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ jobs:
127127
id: commit
128128
run: |
129129
git add build/build.env Containerfile \
130-
distribution/requirements.txt distribution/README.md
130+
distribution/requirements-lock.txt distribution/requirements-lock-konflux.txt \
131+
distribution/README.md
131132
if git diff --cached --quiet; then
132133
echo "::notice::No changes to commit — version may already be set to ${TAG}"
133134
else

.github/workflows/redhat-distro-container.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ jobs:
115115
if: contains(fromJSON('["workflow_dispatch", "schedule"]'), github.event_name)
116116
env:
117117
OGX_VERSION: ${{ env.OGX_COMMIT_SHA }}
118-
run: uv run --with ruamel.yaml build/build.py
118+
run: ./build/run.sh
119119

120120
- name: Build image for testing (${{ matrix.arch }})
121121
id: build
@@ -381,7 +381,7 @@ jobs:
381381
if: github.event_name == 'workflow_dispatch'
382382
env:
383383
OGX_VERSION: ${{ env.OGX_COMMIT_SHA }}
384-
run: uv run --with ruamel.yaml build/build.py
384+
run: ./build/run.sh
385385

386386
- name: Set up QEMU
387387
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0

.github/workflows/test-pr-in-showroom.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,7 @@ jobs:
101101
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
102102
echo "Building image: ogx-test:$TAG"
103103
104-
uv venv
105-
source .venv/bin/activate
106-
uv pip install 'ruamel.yaml>=0.18.0'
107-
python3 build/build.py
104+
./build/run.sh
108105
podman build -f Containerfile -t "ogx-test:$TAG" .
109106
110107
- name: Setup CI environment

.github/workflows/test-upstream-in-showroom.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,7 @@ jobs:
4545
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
4646
echo "Building image with OGX_VERSION=main: ogx-test:$TAG"
4747
48-
uv venv
49-
source .venv/bin/activate
50-
uv pip install 'ruamel.yaml>=0.18.0'
51-
python3 build/build.py
48+
./build/run.sh
5249
podman build -f Containerfile -t "ogx-test:$TAG" .
5350
5451
- name: Setup CI environment

.pre-commit-config.yaml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,11 @@ repos:
4646
hooks:
4747
- id: pkg-gen
4848
name: Distribution Build
49-
entry: ./build/build.py
50-
language: python
49+
entry: ./build/run.sh
50+
language: script
5151
pass_filenames: false
5252
require_serial: true
5353
always_run: true
54-
additional_dependencies:
55-
- uv>=0.9.0
56-
- ruamel.yaml>=0.18.0
5754

5855
- id: doc-gen
5956
name: Distribution Documentation

Containerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
# by build/build.py - do not edit manually.
33
FROM quay.io/opendatahub/odh-midstream-python-base-3-12:latest
44

5-
ENV UV_INDEX_STRATEGY=unsafe-best-match
5+
ENV UV_TORCH_BACKEND=cpu \
6+
UV_CONFIG_FILE=/dev/null
67

7-
COPY distribution/constraints.txt ${APP_ROOT}/constraints.txt
8-
COPY distribution/requirements.txt ${APP_ROOT}/requirements.txt
9-
RUN uv pip install --constraint ${APP_ROOT}/constraints.txt -r ${APP_ROOT}/requirements.txt
8+
COPY distribution/requirements-lock.txt ${APP_ROOT}/requirements-lock.txt
9+
RUN uv pip install -r ${APP_ROOT}/requirements-lock.txt
1010

1111
COPY --chmod=755 distribution/install-common.sh ${APP_ROOT}/install-common.sh
1212
ENV DOCLING_ARTIFACTS_PATH="${APP_ROOT}/.cache/docling/models"

Containerfile.in

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
FROM quay.io/opendatahub/odh-midstream-python-base-3-12:latest
22

3-
ENV UV_INDEX_STRATEGY=unsafe-best-match
3+
ENV UV_TORCH_BACKEND=cpu \
4+
UV_CONFIG_FILE=/dev/null
45

5-
COPY distribution/constraints.txt ${APP_ROOT}/constraints.txt
6-
COPY distribution/requirements.txt ${APP_ROOT}/requirements.txt
7-
RUN uv pip install --constraint ${APP_ROOT}/constraints.txt -r ${APP_ROOT}/requirements.txt
6+
COPY distribution/requirements-lock.txt ${APP_ROOT}/requirements-lock.txt
7+
RUN uv pip install -r ${APP_ROOT}/requirements-lock.txt
88

99
COPY --chmod=755 distribution/install-common.sh ${APP_ROOT}/install-common.sh
1010
ENV DOCLING_ARTIFACTS_PATH="${APP_ROOT}/.cache/docling/models"

build/build.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
OGX_VERSION=v1.1.3+rhaiv.0
22
OGX_INSTALL_FROM_SOURCE=true
3+
RHAI_INDEX_URL=https://packages.redhat.com/api/pypi/public-rhai/rhoai/3.5/cpu-ubi9/simple/

0 commit comments

Comments
 (0)