Migrate Jenkins CI images to Ubuntu 24.04 / ROCm 7.2.4#2416
Conversation
Move the Jenkins CI Docker image from Ubuntu 22.04 (jammy) to 24.04 (noble) and bump ROCm from 7.2 to the 7.2.4 point release. Ubuntu 24.04 ships Python 3.12 with PEP 668 enabled. Opt out of the externally-managed guard, force a clean pip self-upgrade, and relax the stale lxml==4.5.2 pin from the upstream llvm-premerge-checks requirements (no 3.12 wheel, and unused by our static checks). Co-authored-by: Cursor <cursoragent@cursor.com>
google/llvm-premerge-checks was archived in Sep 2025 when LLVM moved premerge CI to GitHub Actions (infra now in llvm/llvm-zorg and llvm/llvm-project/.ci); there is no equivalent of its scripts/requirements.txt. Our static-checks/premerge-checks.py is a self-contained copy of those scripts and only needs GitPython, pathspec, and unidiff, so pin them in a local static-checks/requirements.txt and COPY it into the CI image instead of fetching the archived file at build time. This also removes the stale lxml==4.5.2 pin that has no Python 3.12 wheel. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Align Dockerfile.migraphx-ci with the main CI image (Ubuntu 24.04 / ROCm 7.2.4) by setting ARG ROCM_VERSION=7.2.4. The base rocm/mlir image is published with a major.minor tag only (see build-dockerfile.sh), so the FROM line is pinned to rocm7.2-latest rather than interpolating the patch version, which would resolve to a non-existent tag. Co-authored-by: Cursor <cursoragent@cursor.com>
The Ubuntu 24.04 base ships Python 3.12, for which onnx==1.14.1 has no prebuilt wheel; pip falls back to a source build that fails with "Protobuf compiler not found". Bump to onnx==1.17.0, matching MIGraphX's own tools/requirements-py.txt pin for python_version>=3.11 (prebuilt cp312 wheel, no protobuf toolchain needed). Also make the base image tag a build arg (ROCM_BASE_TAG=rocm7.2) instead of dropping the patch version inline, and derive ROCM_PATH from ROCM_VERSION (/opt/rocm-7.2.4 exists in the 7.2.4 base image). Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Pull request overview
Updates the Jenkins CI Docker images used by rocMLIR (and the MIGraphX nightly stage) to a newer OS/toolchain baseline so MIGraphX develop can build against updated ROCm/rocm-cmake tooling.
Changes:
- Bump Jenkins base image to Ubuntu 24.04 (noble) and ROCm 7.2.4, including a pip/PEP-668 workaround for system installs.
- Migrate MIGraphX CI image to track the major.minor-tagged base image while still using the full ROCm patch version path, and bump
onnxfor Python 3.12 wheels. - Vendor a local, pinned
static-checksPython requirements file instead of fetching from the archived upstream location.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
mlir/utils/jenkins/Dockerfile |
Updates base OS/ROCm version and adjusts pip behavior for Ubuntu 24.04; switches static-checks deps to a local requirements file. |
mlir/utils/jenkins/Dockerfile.migraphx-ci |
Decouples base image tag from patch version, updates ROCm path/version, and bumps onnx to a Python 3.12-compatible wheel version. |
mlir/utils/jenkins/static-checks/requirements.txt |
Adds a local pinned dependency set for static-checks/premerge-checks.py. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ARG ROCM_VERSION=7.2.4 | ||
| ARG ROCM_PATH=/opt/rocm-${ROCM_VERSION} | ||
|
|
There was a problem hiding this comment.
Verdict: APPROVE -- submitted as COMMENT (automated reviews are advisory) · Findings: 0 (0 Critical, 0 Major, 0 Minor)
Scope
Migrates the Jenkins CI Docker images to Ubuntu 24.04 (noble) / ROCm 7.2.4. Touches mlir/utils/jenkins/Dockerfile (base bump, PEP 668 opt-out, local pinned premerge-checks requirements), Dockerfile.migraphx-ci (base-tag arg, versioned ROCM_PATH, onnx 1.17.0 bump), and adds static-checks/requirements.txt.
Findings
No blocking issues found.
Notes
- Verified the central design claim against
mlir/utils/jenkins/build-dockerfile.sh:45-48: the tag is derived from^ARG ROCM_VERSION=viacut -d. -f1/f2, yieldingrocm7.2. KeepingROCM_BASE_TAG=rocm7.2separate from the fullROCM_VERSION=7.2.4is therefore correct and avoids resolving to a non-existentrocm7.2.4-latesttag. Dockerfile.migraphx-cisetsROCM_PATH=/opt/rocm-7.2.4andCMAKE_PREFIX_PATH=${ROCM_PATH}, but line 23 still invokes/opt/rocm/llvm/bin/clang++. This relies on the conventional/opt/rocm->/opt/rocm-7.2.4symlink existing in the base image; the PR description states both paths were validated locally, so not flagged as blocking.onnxruntimeremains unpinned (pre-existing); the PR notes 1.27.0 was the resolved/validated version. Consider pinning it in a follow-up for reproducibility, but this is out of scope here.- Replacing the now-archived
google/llvm-premerge-checksremote fetch with a local pinned copy improves build reproducibility. Pins are sensible and the new file has a correct trailing newline.
CI status
No non-self CI checks are currently in a fail/cancel state; premerge and Python checks are still in progress at review time.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2416 +/- ##
===========================================
+ Coverage 82.57% 82.65% +0.09%
===========================================
Files 120 120
Lines 42852 42828 -24
Branches 7110 7106 -4
===========================================
+ Hits 35381 35399 +18
+ Misses 4815 4797 -18
+ Partials 2656 2632 -24
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
ba59b3b to
5365176
Compare
Motivation
The MIGraphX nightly stage (
rocm/mlir-migraphx-ci) builds tip-of-developMIGraphX against dependencies baked into the CI image. MIGraphXdeveloprecently started requiring a newer ROCm/rocm-cmake toolchain (e.g.rocm_add_version_resourcefrom a bumped rocm-cmake), so the CI base image needs to be refreshed. This PR migrates the Jenkins CI images to Ubuntu 24.04 (noble) and ROCm 7.2.4, and makes the migraphx-ci image track the same base.Technical Details
mlir/utils/jenkins/Dockerfile(mainrocm/mlirimage):ubuntu:22.04(jammy) ->ubuntu:24.04(noble);ROCM_BUILD_NAMEjammy->noble.ROCM_VERSION7.2->7.2.4.ENV PIP_BREAK_SYSTEM_PACKAGES=1. Ubuntu 24.04 enables PEP 668 (externally-managed environment), which blocks the system-widepip installs this image intentionally performs.pip install --upgrade --ignore-installed pipto avoid uninstall conflicts with the distro-managed pip on 24.04.google/llvm-premerge-checksremoterequirements.txtfetch with a local pinned copy (static-checks/requirements.txt).mlir/utils/jenkins/static-checks/requirements.txt(new): local pin of the premerge-checks Python deps (GitPython,pathspec,unidiff).mlir/utils/jenkins/Dockerfile.migraphx-ci:ARG ROCM_BASE_TAG=rocm7.2and pinFROM rocm/mlir:${ROCM_BASE_TAG}-latest. The base image is published with a major.minor tag only (build-dockerfile.shderivesrocm${major}.${minor}), so interpolating the full patch version would resolve to a non-existentrocm7.2.4-latesttag.ARG ROCM_VERSION7.2->7.2.4, and deriveROCM_PATH=/opt/rocm-${ROCM_VERSION}(the versioned/opt/rocm-7.2.4directory exists in the 7.2.4 base image).onnx1.14.1->1.17.0. The Ubuntu 24.04 base ships Python 3.12, for whichonnx==1.14.1has no prebuilt wheel; pip falls back to a source build that fails withProtobuf compiler not found.1.17.0matches MIGraphX's owntools/requirements-py.txtpin forpython_version>=3.11and has a prebuiltcp312wheel.The
rocm7.2-tagged images (referenced inJenkinsfile,Jenkinsfile.downstream,Jenkinsfile.release, and.github/workflows/ci.yml) are unchanged, since the tag scheme keys offmajor.minor. The image rebuild is auto-triggered bybuild-dockerfile.shbecause Dockerfiles changed.Both images were built and validated locally: the base
rocm/mlir:rocm7.2-latestbuilds clean, and the migraphx-ci image builds withonnx 1.17.0/onnxruntime 1.27.0on Python 3.12.3.Changelog Category
Made with Cursor