Skip to content

Navigation Menu

Sign in
Sign up

SNOW-3192362: migrate all Docker builds from manylinux2014 to manylinux_2_28 - #2971

Draft
sfc-gh-fpawlowski wants to merge 11 commits into
main from
SNOW-3192362-migrate-all-builds-to-manylinux-2-28
Draft

SNOW-3192362: migrate all Docker builds from manylinux2014 to manylinux_2_28 #2971
sfc-gh-fpawlowski wants to merge 11 commits into
main from
SNOW-3192362-migrate-all-builds-to-manylinux-2-28

Conversation

@sfc-gh-fpawlowski

@sfc-gh-fpawlowski sfc-gh-fpawlowski commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #2970. Migrates every Docker-based build and test script from manylinux2014 to manylinux_2_28 uniformly, removing the 3.14t-only conditional introduced in the parent PR.

  • ci/set_base_image.sh: BASE_IMAGE_MANYLINUX2014 now resolves to manylinux_2_28_* on both Jenkins (Artifactory) and public paths
  • ci/build_docker.sh: drops 3.14t-only conditional; AUDITWHEEL_PLAT always manylinux_2_28_{arch}
  • ci/build_linux.sh: updates AUDITWHEEL_PLAT fallbacks
  • ci/test_docker.sh, test_lambda_docker.sh, test_fips.sh, test_fips_docker.sh: wheel globs updated to manylinux_2_28

Dependency

Blocked on Artifactory mirror — requires IT to mirror quay.io/pypa/manylinux_2_28_{x86_64,aarch64} into the internal Artifactory registry before Jenkins builds pick this up. See Jira ticket filed under SNOW-3192362.

Why this aligns with the release

ReleaseClientConnectorPythonSelf.groovy already expects manylinux_2_28 wheels for cp311–cp314t. This PR makes CI test builds consistent with the release target.

🤖 Generated with Claude Code

sfc-gh-fpawlowski and others added 11 commits July 22, 2026 07:25
...ERSIONS defaults
The matrix generator, tox envlist, cibuildwheel config, and pyproject.toml
already opted in to free-threaded builds (cp314t) in a prior commit. The
build and test Linux shell scripts still defaulted to 3.10-3.14; append 3.14t
so that build_docker.sh / test_docker.sh include the free-threaded wheel
automatically when no explicit version list is passed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
...les matrix
Gap-fill: matches the pattern used when 3.14 was added (Snow-2684150).
- ci/build_darwin.sh: append 3.14t to PYTHON_VERSIONS default
- ci/test_darwin.sh: append 3.14t to PYTHON_VERSIONS default
- .github/workflows/create_req_files.yml: add "3.14t" to python-version matrix
Intentionally skipped: build_windows.bat (no Windows free-threaded wheel yet),
Lambda Dockerfiles (version-pinned), FIPS/RockyLinux scripts (Python 3.9-pinned).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The [testenv:py{...}-coverage] env is what Jenkins uses for coverage
aggregation. It listed 310–314 but omitted 314t, which is already in
the top-level `coverage` env's `depends` list.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
...wheels
pyproject.toml
- Switch cibuildwheel image from manylinux2014 to manylinux_2_28; cp314t is
 not available in manylinux2014. Unblocks GHA cp314t wheel builds immediately
 (GHA pulls from quay.io directly, no Artifactory dependency).
- Aligns with the release manifest which already expects manylinux_2_28 wheels.
ci/set_base_image.sh
- Pre-wire BASE_IMAGE_MANYLINUX2_28 / BASE_IMAGE_MANYLINUX2_28AARCH64 for both
 Jenkins (Artifactory path) and public registry. No-op on Jenkins until IT
 mirrors quay.io/pypa/manylinux_2_28_* into Artifactory.
ci/build_docker.sh
- Select manylinux_2_28 image and auditwheel plat when building 3.14t;
 keep manylinux2014 for all other versions (zero impact on existing jobs).
- Pass AUDITWHEEL_PLAT into the container via -e.
ci/build_linux.sh
- Use AUDITWHEEL_PLAT env var for auditwheel repair target; fall back to
 manylinux2014_* if unset (preserves existing Jenkins behaviour).
ci/test_linux.sh
- Widen wheel glob from *manylinux2014* to *manylinux* so it matches both
 manylinux2014 and manylinux_2_28 tagged wheels without further changes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
..._path for free-threaded
set_base_image.sh
- Add BASE_IMAGE_MANYLINUX2_28_PUBLIC / _AARCH64 that always resolve to quay.io/pypa
 unconditionally (not inside the JENKINS_HOME branch). Jenkins Linux agents can reach
 quay.io directly, so cp314t builds do not need an Artifactory mirror.
build_docker.sh
- Switch the 3.14t arm from BASE_IMAGE_MANYLINUX2_28 (Artifactory-backed) to
 BASE_IMAGE_MANYLINUX2_28_PUBLIC (always quay.io) so the build works on Jenkins
 without waiting for IT to mirror the image.
build_linux.sh
- Add a special-case path for free-threaded versions (*t suffix): the manylinux_2_28
 image stores the interpreter under cp{base}-cp{base}t (e.g. cp314-cp314t), not
 cp{ver}-cp{ver} as cpython_path would compute. Without this fix, the build fails
 with "Python not found" even when the image is correct.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
...ainer
Without this, calling build_docker.sh with no args (manylinux2014 image,
default PYTHON_VERSIONS including 3.14t) would fail with set -e when the
loop tries to execute a non-existent interpreter. Now it warns and continues,
so standard 3.10-3.14 builds are unaffected when the manylinux_2_28 image
is not used.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Verified: quay.io/pypa/manylinux2014_aarch64 (and by parity x86_64) ships
cp314t at /opt/python/cp314-cp314t/. No image upgrade needed for 3.14t.
- set_base_image.sh: remove manylinux_2_28 and _PUBLIC variables (those
 belong in the separate full-migration PR, not here)
- build_docker.sh: remove 3.14t conditional and AUDITWHEEL_PLAT env var;
 unconditional manylinux2014 selection is correct for all versions
- build_linux.sh: shorten warning message (no longer implies a different
 image is required)
The manylinux_2_28 migration (aligning with release manifest) stays in
the follow-up PR SNOW-3192362-migrate-all-builds-to-manylinux-2-28.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
...l on missing interpreter
pyproject.toml: revert manylinux_2_28 back to manylinux2014. The full image
migration (all builds) belongs in SNOW-3192362-migrate-all-builds-to-manylinux-2-28
so that this PR is purely additive — 3.14t support on the existing image.
build_linux.sh: remove graceful skip. A missing interpreter should fail loudly
(set -e) at build time, not skip silently and produce a missing wheel in S3 that
causes a confusing downstream failure. Consistent with how every other Python
version in this script is handled.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
set_base_image.sh
- BASE_IMAGE_MANYLINUX2014 now resolves to manylinux_2_28_x86_64 (both Artifactory
 and public paths). Requires IT to mirror quay.io/pypa/manylinux_2_28_* into
 Artifactory before Jenkins picks up the change.
build_docker.sh
- Remove the 3.14t-only conditional; all builds now use manylinux_2_28 uniformly.
 AUDITWHEEL_PLAT is always manylinux_2_28_{arch}.
build_linux.sh
- Update AUDITWHEEL_PLAT fallbacks from manylinux2014_* to manylinux_2_28_*.
test_docker.sh
- No logic change; inherits manylinux_2_28 automatically from set_base_image.sh.
test_lambda_docker.sh / test_fips.sh / test_fips_docker.sh
- Update manylinux2014 wheel globs to manylinux_2_28.
The release manifest (ReleaseClientConnectorPythonSelf.groovy) already lists
manylinux_2_28 for all cp311-cp314 wheels — this aligns the CI build path with
the release target. GHA cibuildwheel path was already updated in the parent commit.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pyproject.toml: manylinux-x86_64-image manylinux2014 → manylinux_2_28.
build_linux.sh: update auditwheel plat fallbacks to manylinux_2_28_*.
The release manifest expects manylinux_2_28 wheels for all versions.
NOTE: build-python-release.yml must be authored after this PR merges.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sfc-gh-fpawlowski force-pushed the SNOW-3192362-migrate-all-builds-to-manylinux-2-28 branch from 4be33ea to faee688 Compare July 22, 2026 14:50
Base automatically changed from SNOW-3192362-python-314t-ci-support to main August 18, 2026 07:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /