Proposal: Drop core/* entries (except autoware_core) from build_depends_*.repos for Autoware Universe
#7096
Unanswered
mitsudome-r
asked this question in
Ideas
Replies: 2 comments
-
|
Related issue: autowarefoundation/autoware_universe#12535 |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
Note: |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Proposal
Drop
core/*entries (exceptautoware_core) frombuild_depends_*.reposand rely on the prebuilt underlay workspace in the CI Docker imageSummary
Today,
/build_depends_stable.reposandbuild_depends_nightly.reposlist everycore/*repository thatautoware_universedepends on. Thebuild-and-test-*workflows thenvcs importthose repos and rebuild them from source on every CI run.However, the container image those workflows run inside —
ghcr.io/autowarefoundation/autoware:universe-dependencies-cuda-{humble,jazzy}— already contains a fully-built underlay of everycore/*package at/opt/autoware(seecore.Dockerfileanduniverse.Dockerfile). We are doing the same work twice.This proposal is to remove all
core/*entries frombuild_depends_stable.reposandbuild_depends_nightly.reposexceptcore/autoware_core, and let CI pick up those packages from the image's underlay instead and make sure that Autoware Universe build is tested against version pinned packages.Motivation
1. The work is duplicated today
core.Dockerfilebuilds every package undersrc/core/*into/opt/autowarein thecore-dependenciesstage, then layersautoware_core(andautoware_rviz_plugins) on top in thecore-develstage:.universe.Dockerfileinherits fromcore-devel, so theuniverse-dependencies*images that CI runs in already source/opt/autoware/setup.shwith the full core stack present.Meanwhile,
build-and-test-reusable.yamlclonesautoware_msgs,autoware_adapi_msgs,autoware_internal_msgs,autoware_cmake,autoware_utils,autoware_lanelet2_extension,autoware_system_designerinto the workspace and rebuilds them — even though identical (or nightly-equivalent) installs already exist in the image.2. Concrete benefits
vcs import, rosdep resolution, and a fresh colcon build for ~7 core repositories per workflow run, on every PR.colcongraph traversal time.build_depends_stable.reposcan drift (e.g. the image is built off one tag while the.reposfile lists another), and CI silently uses whichever wins the ordering — masking real integration issues.3. Why keep
core/autoware_coreautoware_coreis the package most actively co-developed withautoware_universeand is the most common reason a universe PR needs to test against an unreleased core change. Keeping just this one entry preserves:nightly.reposflow that pinsautoware_coretomainfor the nightly build.bump-repo-versions-build-depends.yamlpathway that bumpsautoware_coreahead of an Autoware Core release.autoware_core(overlaying main vs. baked-in stable).Other core repos (
autoware_msgs,autoware_utils,autoware_cmake, etc.) change much less often and are already version-locked via the image build.Proposed change
Files affected
/build_depends_stable.repos— remove:core/autoware_corecore/autoware_msgscore/autoware_adapi_msgscore/autoware_internal_msgscore/autoware_cmakecore/autoware_utilscore/autoware_lanelet2_extensioncore/autoware_system_designerKeep the entire
universe/external/*blocks./build_depends_nightly.repos— remove:core/autoware_utilscore/autoware_cmakecore/autoware_adapi_msgscore/autoware_internal_msgscore/autoware_system_designerKeep
core/autoware_core(pinned tomain).Workflows affected
No workflow logic needs to change —
build-and-test.yaml,build-and-test-daily.yaml,build-and-test-differential.yaml,clang-tidy-*,cppcheck.yaml, andgenerate-build-cache.yamlall just consume the combinedbuild_depends.repos. They will continue to work, just with fewer entries to import.check-build-depends.yamlandbump-repo-versions-build-depends.yamlwill need to be checked: the bump workflow currently iterates over thecore/*entries; after this change it would only bumpautoware_core, which matches the intent.Image-version contract
We need to make explicit that the
universe-dependencies-*image tag now defines the version of every core dependency exceptautoware_core. Concretely:docker-build-and-push.yamlpipeline already does this on every Autoware monorepo update; we just need to document the dependency direction.autoware_corecore change can either (a) build the image locally with their patched core checkout, or (b) re-add the relevant entry to a personalbuild_depends.reposoverlay.Risks
Risk: Version drift between image and what universe expects. If universe code starts depending on a newer
autoware_msgsAPI, the only way to fix CI is to rebuild the image. Today, you can also fix it by bumping the version inbuild_depends_stable.repos. → Mitigation: this is a feature, not a bug — it forces the image to stay in sync with a single declared version.Rollout plan
build_depends_stable.reposandbuild_depends_nightly.reposremoving the listed entries.build-and-test.yaml,build-and-test-daily.yaml, and at least one differential PR run.check-build-depends.yaml/bump-repo-versions-build-depends.yamlas needed so they only targetautoware_core.autoware_universe/CONTRIBUTING.md(or wherever the build/CI flow is described): "Core dependency versions are defined by theuniverse-dependencies-*image tag; onlyautoware_coreis overlaid viabuild_depends_*.repos."Alternatives considered
autoware_coretoo. Possible long-term, but loses the easy "test universe against coremain" path that the nightly job depends on.build_depends_*.reposentirely with image-only deps. We would have to create nightly docker images if we are going to do this.Request for comment
If you have any feedback/comment regarding the proposal, please let me know.
Beta Was this translation helpful? Give feedback.
All reactions