-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Build artifacts only for those that match host arch #17995
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
🤖 GitHub commentsExpand to view the GitHub comments
Just comment with:
|
This pull request does not have a backport label. Could you fix it @donoghuc? 🙏
|
Snapshot pipeline https://buildkite.com/elastic/logstash-dra-snapshot-pipeline/builds/3579 |
Note the difference between preparing container artifacts vs system packages. For system packages we can compile artifacts all on x86, then be careful to package a java runtime that itself has been compiled for the target arch. Therefore for system packages we only need an x86 host to prepare packages for both target architectures. For container artifacts we need to actually prepare the artifacts on a system that matches the target arch. In these cases we need hosts with both architectures. So generally we use three hosts
The goal of this PR is given that system, compile/prepare the minimum set of artifacts for what each of those 3 runners are building for. In order to speed things up (and generally for logical organization) it makes sense to make 4 test runners (a new one for compiling system packages for arm).
This extra host allows parallelization of x86 and arm artifacts. |
daf9d81
to
6a80cc0
Compare
Very promising build result, system packaging took 30 mins (usually its around 50) and docker images took ~20 (usually around 30). https://buildkite.com/elastic/logstash-dra-snapshot-pipeline/builds/3581#_ |
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.
LGTM!
Reasonable parallelism changes.
Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on.
This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though.
6a80cc0
to
8003774
Compare
💚 Build Succeeded
History
|
|
@Mergifyio backport 8.17 8.18 8.19 9.0 9.1 |
✅ Backports have been created
|
* Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake
* Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake
* Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # rakelib/artifacts.rake
* Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake
* Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake
With the improvment in elastic#17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch.
With the improvment in elastic#17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch.
…8079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests
…8079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests
…8079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests
…8079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests
…8079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests
…8079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests
…st arch (#18071) * Build artifacts only for those that match host arch (#17995) * Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake * fix merge conflicts * Ensure acceptance test artifacts are being built for correct arch (#18079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests --------- Co-authored-by: Cas Donoghue <[email protected]>
…st arch (#18073) * Build artifacts only for those that match host arch (#17995) * Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # rakelib/artifacts.rake * fix merge conflicts * Ensure acceptance test artifacts are being built for correct arch (#18079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests --------- Co-authored-by: Cas Donoghue <[email protected]>
…t arch (#18074) * Build artifacts only for those that match host arch (#17995) * Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake * fix merge conflicts * Ensure acceptance test artifacts are being built for correct arch (#18079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests --------- Co-authored-by: Cas Donoghue <[email protected]>
…t arch (#18075) * Build artifacts only for those that match host arch (#17995) * Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake * fix merge conflicts * Ensure acceptance test artifacts are being built for correct arch (#18079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests --------- Co-authored-by: Cas Donoghue <[email protected]>
…st arch (#18072) * Build artifacts only for those that match host arch (#17995) * Build artifacts only for those that match host arch Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on. * set ARCH for building observabilitysre image * Parallelize system package steps across different build hosts This follows the pattern for prepping docker artifacts by preparing artifacts for a target architecture on a specific build host. This allows us to process x86 and arm packages in parallel across builders. Note that there is no requirement today for the system packages to be built on an arch that matches the target, spearating out to a separate builder opens up that opportunity for us though. (cherry picked from commit f2e4948) # Conflicts: # .buildkite/pull_request_pipeline.yml # rakelib/artifacts.rake * fix merge conflicts * Ensure acceptance test artifacts are being built for correct arch (#18079) * Ensure acceptance test artifacts are being built for correct arch With the improvment in #17995 we only build packages that match the architecture of the host. This is specified with an enviornment variable. Previously the acceptance tests did not need to specifcy the architecture when building packages. This commit updates the builder to build packages with the correct arch. * Ensure ARCH is set for docker acceptance tests * fix merge conflict --------- Co-authored-by: Cas Donoghue <[email protected]>
Release notes
[rn:skip]
What does this PR do?
Previously when doing platform specific builds (x86_64, arm) BOTH sets of artifacts were produced regarless of host. This increases CI run times and is needless resource consumption. This commit makes the rake tasks compile artifacts for only the host arch it is being run on.
Why is it important/What is the impact to the user?
N/A
Checklist
Related issues