Optimize CI with reusable image workflow
What this PR does / why we need it:
This PR optimizes the CI pipeline by extracting Docker image building into a centralized reusable workflow. Previously, each E2E test job built images independently, resulting in redundant builds and wasted resources.
Changes:
- Created
images.yamlas a reusable workflow that builds all Volcano Docker images once - Saves built images as artifacts
- Updated all 10 E2E workflows to download and load pre-built images instead of rebuilding
- Uses standard
docker save/docker loadcommands for artifact handling
Benefits:
- Eliminates redundant image builds across parallel jobs
- Significantly reduces CI execution time and resource usage
- Faster feedback loop when retriggering failed pipelines
- Images are built once and reused across all test jobs
Which issue(s) this PR fixes:
Fixes #4766
Special notes for your reviewer:
The implementation follows GitHub's reusable workflow pattern. All E2E workflows now have a needs: build-images dependency and download artifacts before running tests. The existing test infrastructure remains unchanged - only the image provisioning mechanism has been optimized.
[!NOTE] Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.
Welcome @Deepam02! It looks like this is your first PR to volcano-sh/volcano 🎉
/cc @hajnalmt
Hi @hajnalmt I have made all the suggested changes, squashed the commits, and rebased. Sorry for the delay in getting this done, please review it again when you get time.
@hajnalmt
I've restructured the workflows as suggested:
- Created a new
e2e.yamlorchestrator that callsimages.yamlfirst, then triggers all E2E workflows in parallel
CI should be green now. Please review when you have a chance.
/unhold
Thank you! Let's see :)
@hajnalmt: No presubmit jobs available for volcano-sh/volcano@master
In response to this:
/test all
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/test-infra repository.
/retest
/ok-to-test cancel
/cc @JesseStutler
Can you trigger testing somehow on this one? We probably need to remove the ok-to-test label and readd it since the workflow structure changed.
/rerun-all
/cc @JesseStutler
Can you trigger testing somehow on this one? We probably need to remove the ok-to-test label and readd it since the workflow structure changed.
/ok-to-test label is enough
Seems that all the CIs have triggered but some CIs failed such as e2e-spark and e2e-vcctl, some failed CIs event can't load images @Deepam02 But why we still have pending checks here?
Shouldn't we already have some CIs passed and don't need to execute the independent old CIs again?
What's more, you still have built all the images in each workflow:
But what we want is that we just need to build the images only once, and load to the kind clusters in each workflow. @Deepam02
[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: Once this PR has been reviewed and has the lgtm label, please assign wangyang0616 for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.
Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment