-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
chore(pipeline/multiarch): don't rebuild images of architectures already built elsewhere #2155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
…ady built elsewhere
…appear from pipeline graph view (see build number 2)
…ady known when entering the node() block and to avoid complexity
…other architectures)
ad1b1eb to
3b7877d
Compare
| else | ||
| @docker buildx create --use --bootstrap --driver docker-container | ||
| endif | ||
| # There is only an amd64 qemu image |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
17:06:31 Status: Downloaded newer image for multiarch/qemu-user-static:latest
17:06:33 WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
|
With f453ad3, the The bottleneck is now (again 😅) the Windows stage*, the overall build duration is decreasing from 47 minutes to 23 minutes on ci.jenkins.io 🎉 *: pending completion of jenkinsci/docker-agents#1068 that should decrease its duration. |
…lacking `make`" This reverts commit 3b7877d.
| def imageToBuild = i | ||
|
|
||
| builds[imageToBuild] = { | ||
| nodeWithTimeout('docker') { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is now different to the publish build isn't it?
The production build uses https://github.com/lemeurherve/docker/blob/dc9309cbe33f3523f7dae6c8ca4642f1145950c1/Jenkinsfile#L193
So if there's an issue in QEMU emulation we won't catch it on CI. This has happened before...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TBH, only the label was common before, nothing was preventing agent definitions to diverge between ci.jenkins.io and trusted.ci.jenkins.io.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes but QEMU is important that its validated on CI especially for new images
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was thinking about using agents with dedicated architectures for publication on trusted.ci.jenkins.io like the ones used on ci.jenkins.io build introduced with this PR, would that be sufficient to alleviate this potential issue in your opinion?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes that’s fine as long as the same across both
…ady built elsewhere (#2155)
…ady built elsewhere (#2155)
…ady built elsewhere (#2155)



This PR adds
buildarch-%andlistarch-%targets to the Makefile, allowing then to build in parallel images of architectures not already built in other stages, to improve overall build duration.Before, multiarch stage was building the following targets and architectures:
Total: 20 distinct images in one stage.
With this change, only the following targets and architectures are built in multiarch stages:
Total: 12 distinct images.
arm64stages390xstageppc64lestageRef:
multiarchsanity check duration #2154Testing done
List of targets per architecture
CI build before:
CI build after (outdated, see below):
With f453ad3, the
arm64stage went from 25 minutes to 2 minutes 27 seconds 🚀Before f453ad3:
After:
The bottleneck is now (again 😅) the Windows stage*, the overall build duration is decreasing from 47 minutes to 23 minutes on ci.jenkins.io 🎉
I'll open an issue to discuss the split of the publish stage of trusted.ci.jenkins.io into similar parallel stages with one architecture each to reduce its build duration too.
Submitter checklist