Skip to content

Commit e0baba8

Browse files
authored
ci(docker-new): split base-cuda layer and restructure CI pipelines (#7033)
Restructures the docker-new image graph and CI topology: - Add base-cuda-runtime / base-cuda-devel stages as a dedicated CUDA base, and rebase universe-cuda off them instead of universe. - Drop universe-runtime-dependencies; fold into universe. - Split rmw and nvidia ansible roles into standalone playbooks so Dockerfiles bind-mount only what they need. - Switch every BuildKit RUN mount to named IDs (apt/ccache/pip/pipx, ROS_DISTRO-scoped where relevant). - Split per-distro CI into per-arch jobs; extract multi-arch manifest stitching into docker-manifest-new.yaml. - Persist BuildKit mount caches across runs via actions/cache + buildkit-cache-dance, with a size guard and lineage pruning. Signed-off-by: Mete Fatih Cırıt <mfc@autoware.org>
1 parent 2dbc3fa commit e0baba8

16 files changed

Lines changed: 764 additions & 264 deletions

.github/actions/docker-build-and-push-tools/action.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,21 @@ runs:
4040
max-parallelism = ${{ inputs.max-parallelism }}
4141
install: true
4242

43+
# TODO: temporarily disabled via `if: false`. Re-enable once cache saving is needed again.
4344
- name: Cache ccache
4445
uses: actions/cache@v4
46+
if: false
4547
with:
4648
path: |
4749
root-ccache
4850
key: ccache-tools-${{ inputs.platform }}-${{ hashFiles('src/**/*.cpp') }}
4951
restore-keys: |
5052
ccache-tools-${{ inputs.platform }}-
5153
54+
# TODO: temporarily disabled via `if: false`. Re-enable once cache saving is needed again.
5255
- name: Cache apt-get
5356
uses: actions/cache@v4
57+
if: false
5458
with:
5559
path: |
5660
var-cache-apt

.github/actions/docker-build/action.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ runs:
4949
vcs import --shallow --force src < ${{ inputs.additional-repos }}
5050
shell: bash
5151

52+
# TODO: temporarily disabled via `&& false`. Re-enable once cache saving is needed again.
5253
- name: Cache ccache
5354
uses: actions/cache@v4
54-
if: ${{ github.ref == 'refs/heads/main'}}
55+
if: ${{ github.ref == 'refs/heads/main' && false }}
5556
id: cache-ccache
5657
with:
5758
path: |
@@ -61,9 +62,10 @@ runs:
6162
ccache-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-
6263
ccache-${{ inputs.platform }}-
6364
65+
# TODO: temporarily disabled via `&& false`. Re-enable once cache saving is needed again.
6466
- name: Cache apt-get
6567
uses: actions/cache@v4
66-
if: ${{ github.ref == 'refs/heads/main'}}
68+
if: ${{ github.ref == 'refs/heads/main' && false }}
6769
id: cache-apt-get
6870
with:
6971
path: |

.github/workflows/docker-build-and-push-new.yaml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,48 @@ jobs:
5151
.github/workflows/docker-build-new.yaml
5252
.github/workflows/docker-build-pipeline-new.yaml
5353
.github/workflows/docker-build-and-push-new.yaml
54+
.github/workflows/docker-manifest-new.yaml
5455
55-
humble:
56+
humble-amd64:
5657
needs: changed-files
5758
if: needs.changed-files.outputs.should-build == 'true'
5859
uses: ./.github/workflows/docker-build-pipeline-new.yaml
5960
with:
6061
ros-distro: humble
62+
platform: amd64
6163

62-
jazzy:
64+
humble-arm64:
6365
needs: changed-files
6466
if: needs.changed-files.outputs.should-build == 'true'
6567
uses: ./.github/workflows/docker-build-pipeline-new.yaml
68+
with:
69+
ros-distro: humble
70+
platform: arm64
71+
72+
humble-manifest:
73+
needs: [humble-amd64, humble-arm64]
74+
uses: ./.github/workflows/docker-manifest-new.yaml
75+
with:
76+
ros-distro: humble
77+
78+
jazzy-amd64:
79+
needs: changed-files
80+
if: needs.changed-files.outputs.should-build == 'true'
81+
uses: ./.github/workflows/docker-build-pipeline-new.yaml
82+
with:
83+
ros-distro: jazzy
84+
platform: amd64
85+
86+
jazzy-arm64:
87+
needs: changed-files
88+
if: needs.changed-files.outputs.should-build == 'true'
89+
uses: ./.github/workflows/docker-build-pipeline-new.yaml
90+
with:
91+
ros-distro: jazzy
92+
platform: arm64
93+
94+
jazzy-manifest:
95+
needs: [jazzy-amd64, jazzy-arm64]
96+
uses: ./.github/workflows/docker-manifest-new.yaml
6697
with:
6798
ros-distro: jazzy

0 commit comments

Comments
 (0)