graph TD
ROS["ros:${ROS_DISTRO}-ros-base"]
subgraph Build Chain
BASE["base<br/><i>sudo, pipx, ansible, rmw, user aw, gosu</i>"]
CORE_DEPS["core-dependencies<br/><i>ccache, rosdep deps, build src/core/ pkgs</i>"]
CORE_DEVEL["core-devel<br/><i>rosdep deps for autoware_core, build & install</i>"]
UNI_DEPS["universe-dependencies<br/><i>ansible roles, rosdep deps for universe</i>"]
UNI_DEPS_CUDA["universe-dependencies-cuda<br/><i>+ CUDA dev</i>"]
UNI_DEVEL["universe-devel<br/><i>build autoware.repos → /opt/autoware</i>"]
UNI_DEVEL_CUDA["universe-devel-cuda<br/><i>build autoware.repos → /opt/autoware</i>"]
end
subgraph Runtime Chain
CORE_RT["core<br/><i>rosdep exec deps for src/core/</i>"]
UNI_RT_DEPS["universe-runtime-dependencies<br/><i>runtime ansible deps, rosdep exec deps</i>"]
UNI_RT["universe<br/><i>runtime image</i>"]
UNI_RT_CUDA["universe-cuda<br/><i>+ CUDA runtime</i>"]
end
ROS --> BASE
BASE --> CORE_DEPS
CORE_DEPS --> CORE_DEVEL
CORE_DEVEL --> UNI_DEPS
UNI_DEPS --> UNI_DEPS_CUDA
UNI_DEPS --> UNI_DEVEL
UNI_DEPS_CUDA --> UNI_DEVEL_CUDA
BASE --> CORE_RT
CORE_RT --> UNI_RT_DEPS
UNI_RT_DEPS --> UNI_RT
UNI_RT_DEPS --> UNI_RT_CUDA
CORE_DEVEL -.->|"COPY /opt/autoware"| CORE_RT
UNI_DEVEL -.->|"COPY /opt/autoware"| UNI_RT
UNI_DEVEL_CUDA -.->|"COPY /opt/autoware"| UNI_RT_CUDA
classDef external fill:#4a5568,stroke:#718096,color:#fff
classDef build fill:#2b6cb0,stroke:#3182ce,color:#fff
classDef runtime fill:#276749,stroke:#38a169,color:#fff
classDef cuda fill:#9b2c2c,stroke:#e53e3e,color:#fff
class ROS external
class BASE,CORE_DEPS,CORE_DEVEL,UNI_DEPS,UNI_DEVEL build
class CORE_RT,UNI_RT_DEPS,UNI_RT runtime
class UNI_DEPS_CUDA,UNI_DEVEL_CUDA,UNI_RT_CUDA cuda
This issue aims to create simpler docker images and simpler docker build and push workflows.
This issue doesn't aim to remove any of the existing images or workflows.
That task is tracked here:
🎯 Goals
awin the images.*.envfiles from the repository root.🐋 Docker images
💖 Docker Images Graph: https://xmfcx.github.io/autoware-new-docker-graph/ ✨
🖱️Click here to expand for ugly mermaid instead 🔛
graph TD ROS["ros:${ROS_DISTRO}-ros-base"] subgraph Build Chain BASE["base<br/><i>sudo, pipx, ansible, rmw, user aw, gosu</i>"] CORE_DEPS["core-dependencies<br/><i>ccache, rosdep deps, build src/core/ pkgs</i>"] CORE_DEVEL["core-devel<br/><i>rosdep deps for autoware_core, build & install</i>"] UNI_DEPS["universe-dependencies<br/><i>ansible roles, rosdep deps for universe</i>"] UNI_DEPS_CUDA["universe-dependencies-cuda<br/><i>+ CUDA dev</i>"] UNI_DEVEL["universe-devel<br/><i>build autoware.repos → /opt/autoware</i>"] UNI_DEVEL_CUDA["universe-devel-cuda<br/><i>build autoware.repos → /opt/autoware</i>"] end subgraph Runtime Chain CORE_RT["core<br/><i>rosdep exec deps for src/core/</i>"] UNI_RT_DEPS["universe-runtime-dependencies<br/><i>runtime ansible deps, rosdep exec deps</i>"] UNI_RT["universe<br/><i>runtime image</i>"] UNI_RT_CUDA["universe-cuda<br/><i>+ CUDA runtime</i>"] end ROS --> BASE BASE --> CORE_DEPS CORE_DEPS --> CORE_DEVEL CORE_DEVEL --> UNI_DEPS UNI_DEPS --> UNI_DEPS_CUDA UNI_DEPS --> UNI_DEVEL UNI_DEPS_CUDA --> UNI_DEVEL_CUDA BASE --> CORE_RT CORE_RT --> UNI_RT_DEPS UNI_RT_DEPS --> UNI_RT UNI_RT_DEPS --> UNI_RT_CUDA CORE_DEVEL -.->|"COPY /opt/autoware"| CORE_RT UNI_DEVEL -.->|"COPY /opt/autoware"| UNI_RT UNI_DEVEL_CUDA -.->|"COPY /opt/autoware"| UNI_RT_CUDA classDef external fill:#4a5568,stroke:#718096,color:#fff classDef build fill:#2b6cb0,stroke:#3182ce,color:#fff classDef runtime fill:#276749,stroke:#38a169,color:#fff classDef cuda fill:#9b2c2c,stroke:#e53e3e,color:#fff class ROS external class BASE,CORE_DEPS,CORE_DEVEL,UNI_DEPS,UNI_DEVEL build class CORE_RT,UNI_RT_DEPS,UNI_RT runtime class UNI_DEPS_CUDA,UNI_DEVEL_CUDA,UNI_RT_CUDA cuda🏗️ Build Chain
baseFROMros:${ROS_DISTRO}-ros-basecore-dependenciesFROMbaseThis will be used for the CI of
autoware_corerepository.src/core/folder (except theautoware_rviz_pluginsandautoware_core)src/core/(except theautoware_rviz_pluginsandautoware_core)/opt/autowarecore-develFROMcore-dependenciesThis can be used by the developers to mount and develop
autoware_coresince all its rosdeps are installed.They can choose to source pre-built stuff from
/opt/autowareas well.This can also be used by the CI for any package that depends on autoware_core.
autoware_coreautoware_core/opt/autowareuniverse-dependenciesFROMcore-develThis will be used for the CI of
autoware_universerepository (and maybe more).universe-dependencies-cuda⚡ FROMuniverse-dependenciesThis will be used for the CI of
autoware_universerepository (and maybe more).universe-develFROMuniverse-dependenciesautoware.repos/opt/autowareuniverse-devel-cuda⚡ FROMuniverse-dependencies-cuda⚡autoware.repos/opt/autoware🚀 Runtime Chain
coreFROMbaseThe runtime image for core.
src/core//opt/autowarefromcore-develuniverse-runtime-dependenciesFROMcoreautoware.reposuniverseFROMuniverse-runtime-dependenciesRuntime image for universe.
/opt/autowarefromuniverse-develuniverse-cuda⚡ FROMuniverse-runtime-dependencies/opt/autowarefromuniverse-devel-cuda🖇️ Related PRs