Skip to content

METAL-1726: Multi-stage wheel-builder for OCP builds#786

Open
elfosardo wants to merge 3 commits intoopenshift:mainfrom
elfosardo:cherry-pick-wheel-builder
Open

METAL-1726: Multi-stage wheel-builder for OCP builds#786
elfosardo wants to merge 3 commits intoopenshift:mainfrom
elfosardo:cherry-pick-wheel-builder

Conversation

@elfosardo
Copy link

@elfosardo elfosardo commented Feb 10, 2026

Adapt the upstream multi-stage build approach (b126df6) for the
downstream cachito pipeline in Dockerfile.ocp:

  • Add wheel-builder stage that installs build dependencies,
    copies cachito sources, and builds Python wheels
  • Final image mounts pre-built wheels and installs them without
    requiring build dependencies (gcc, python3.12-devel, etc.)
  • Extract cachito wheel-building logic from prepare-image.sh
    into build-wheels-ocp.sh
  • Simplify prepare-image.sh OCP block to install from pre-built
    wheels instead of compiling from source

Benefits:

  • Build dependencies never exist in the final image
  • Cleaner separation between compilation and runtime
  • Improved build caching when package list doesn't change

Assisted-By: Claude 4.6 Opus High

@openshift-ci openshift-ci bot requested review from derekhiggins and zaneb February 10, 2026 14:09
@openshift-ci
Copy link

openshift-ci bot commented Feb 10, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: elfosardo

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 10, 2026
@elfosardo elfosardo changed the title Cherry pick wheel builder METAL-1726: Cherry pick wheel builder Feb 10, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Feb 10, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 10, 2026

@elfosardo: This pull request references METAL-1726 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@elfosardo elfosardo force-pushed the cherry-pick-wheel-builder branch from 01fc180 to afd0a0b Compare February 10, 2026 15:51
@elfosardo elfosardo changed the title METAL-1726: Cherry pick wheel builder METAL-1726: Multi-stage wheel-builder for OCP builds Feb 10, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 10, 2026

@elfosardo: This pull request references METAL-1726 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Adapt the upstream multi-stage build approach (b126df6) for the
downstream cachito pipeline in Dockerfile.ocp:

  • Add wheel-builder stage that installs build dependencies,
    copies cachito sources, and builds Python wheels
  • Final image mounts pre-built wheels and installs them without
    requiring build dependencies (gcc, python3.12-devel, etc.)
  • Extract cachito wheel-building logic from prepare-image.sh
    into build-wheels-ocp.sh
  • Simplify prepare-image.sh OCP block to install from pre-built
    wheels instead of compiling from source

Benefits:

  • Build dependencies never exist in the final image
  • Cleaner separation between compilation and runtime
  • Improved build caching when package list doesn't change

Assisted-By: Claude 4.6 Opus High

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@elfosardo
Copy link
Author

/hold
needs testing and internal pipeline changes

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Feb 10, 2026
@elfosardo elfosardo force-pushed the cherry-pick-wheel-builder branch 2 times, most recently from bc13812 to fc5d725 Compare February 10, 2026 16:57
@elfosardo
Copy link
Author

/test ci/prow/e2e-metal-ipi-ovn-ipv6

@openshift-ci
Copy link

openshift-ci bot commented Feb 11, 2026

@elfosardo: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test check-requirements
/test e2e-metal-ipi-bm
/test e2e-metal-ipi-ovn-ipv6
/test e2e-metal-ipi-virtualmedia
/test images
/test okd-scos-images
/test prevalidation-e2e-metal-ipi-bm-prevalidation
/test prevalidation-e2e-metal-ipi-ovn-ipv6-prevalidation
/test prevalidation-e2e-metal-ipi-virtualmedia-prevalidation
/test prevalidation-images

The following commands are available to trigger optional jobs:

/test okd-scos-e2e-aws-ovn

Use /test all to run the following jobs that were automatically triggered:

pull-ci-openshift-ironic-image-main-check-requirements
pull-ci-openshift-ironic-image-main-e2e-metal-ipi-bm
pull-ci-openshift-ironic-image-main-e2e-metal-ipi-ovn-ipv6
pull-ci-openshift-ironic-image-main-e2e-metal-ipi-virtualmedia
pull-ci-openshift-ironic-image-main-images
pull-ci-openshift-ironic-image-main-okd-scos-images
pull-ci-openshift-ironic-image-main-prevalidation-images
Details

In response to this:

/test ci/prow/e2e-metal-ipi-ovn-ipv6

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@elfosardo
Copy link
Author

/test pull-ci-openshift-ironic-image-main-e2e-metal-ipi-ovn-ipv6

@openshift-ci
Copy link

openshift-ci bot commented Feb 11, 2026

@elfosardo: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test check-requirements
/test e2e-metal-ipi-bm
/test e2e-metal-ipi-ovn-ipv6
/test e2e-metal-ipi-virtualmedia
/test images
/test okd-scos-images
/test prevalidation-e2e-metal-ipi-bm-prevalidation
/test prevalidation-e2e-metal-ipi-ovn-ipv6-prevalidation
/test prevalidation-e2e-metal-ipi-virtualmedia-prevalidation
/test prevalidation-images

The following commands are available to trigger optional jobs:

/test okd-scos-e2e-aws-ovn

Use /test all to run the following jobs that were automatically triggered:

pull-ci-openshift-ironic-image-main-check-requirements
pull-ci-openshift-ironic-image-main-e2e-metal-ipi-bm
pull-ci-openshift-ironic-image-main-e2e-metal-ipi-ovn-ipv6
pull-ci-openshift-ironic-image-main-e2e-metal-ipi-virtualmedia
pull-ci-openshift-ironic-image-main-images
pull-ci-openshift-ironic-image-main-okd-scos-images
pull-ci-openshift-ironic-image-main-prevalidation-images
Details

In response to this:

/test pull-ci-openshift-ironic-image-main-e2e-metal-ipi-ovn-ipv6

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Cherry-pick of upstream b126df6 adapted for downstream:
- Kept build-wheels.sh
- Removed Dockerfile (downstream uses Dockerfile.ocp)
- Removed ironic-deps-list (downstream uses requirements.cachito)
- Removed ironic-packages-list changes (not used downstream)
- Kept downstream prepare-image.sh (will be adapted separately)

Upstream commit: b126df6 (Add wheel-builder stages to pre-build Python packages)
Cherry-pick of upstream 9127708 adapted for downstream:
- Removed upstream Dockerfile (downstream uses Dockerfile.ocp)
- Applied heredoc syntax consolidation to Dockerfile.ocp
- Converted multi-line && chains to heredoc RUN blocks

Upstream commit: 9127708 (Consolidate first stage plus more heredoc syntax)
Adapt the upstream multi-stage build approach (b126df6) for the
downstream cachito pipeline in Dockerfile.ocp:

- Add wheel-builder stage that installs build dependencies,
  copies cachito sources, and builds Python wheels
- Final image mounts pre-built wheels and installs them without
  requiring build dependencies (gcc, python3.12-devel, etc.)
- Extract cachito wheel-building logic from prepare-image.sh
  into build-wheels-ocp.sh
- Simplify prepare-image.sh OCP block to install from pre-built
  wheels instead of compiling from source

Benefits:
- Build dependencies never exist in the final image
- Cleaner separation between compilation and runtime
- Improved build caching when package list doesn't change

Assisted-By: Claude 4.6 Opus High
@elfosardo elfosardo force-pushed the cherry-pick-wheel-builder branch from fc5d725 to f3a994f Compare March 6, 2026 14:39
@elfosardo
Copy link
Author

/unhold

@openshift-ci openshift-ci bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 6, 2026
@openshift-ci
Copy link

openshift-ci bot commented Mar 6, 2026

@elfosardo: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-metal-ipi-ovn-ipv6 f3a994f link true /test e2e-metal-ipi-ovn-ipv6

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants