Skip to content

Commit b17202b

Browse files
authoredSep 6, 2024··
feat(docker): separation from universe-devel stage to universe-localization-mapping-devel stage (#5186)
* update rosdep Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp> * update build Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp> * fix Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp> * fix action Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp> * update svg Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp> * update readme Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp> * Revert "fix action" This reverts commit 5ecc4cc. --------- Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>
1 parent 71b7a4b commit b17202b

File tree

3 files changed

+263
-147
lines changed

3 files changed

+263
-147
lines changed
 

‎docker/Dockerfile

+75-22
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ RUN rosdep keys --ignore-src --from-paths src \
7676
> /rosdep-universe-common-depend-packages.txt \
7777
&& cat /rosdep-universe-common-depend-packages.txt
7878

79+
FROM rosdep-depend AS rosdep-universe-sensing-perception-depend
80+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
81+
ARG ROS_DISTRO
82+
7983
COPY src/universe/autoware.universe/perception /autoware/src/universe/autoware.universe/perception
8084
COPY src/universe/autoware.universe/sensing /autoware/src/universe/autoware.universe/sensing
8185
RUN rosdep keys --ignore-src --from-paths src \
@@ -93,6 +97,24 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \
9397
> /rosdep-universe-sensing-perception-exec-depend-packages.txt \
9498
&& cat /rosdep-universe-sensing-perception-exec-depend-packages.txt
9599

100+
FROM rosdep-depend AS rosdep-universe-localization-mapping-depend
101+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
102+
ARG ROS_DISTRO
103+
104+
COPY src/universe/autoware.universe/localization /autoware/src/universe/autoware.universe/localization
105+
COPY src/universe/autoware.universe/map /autoware/src/universe/autoware.universe/map
106+
RUN rosdep keys --ignore-src --from-paths src \
107+
| xargs rosdep resolve --rosdistro ${ROS_DISTRO} \
108+
| grep -v '^#' \
109+
| sed 's/ \+/\n/g'\
110+
| sort \
111+
> /rosdep-universe-localization-mapping-depend-packages.txt \
112+
&& cat /rosdep-universe-localization-mapping-depend-packages.txt
113+
114+
FROM rosdep-depend AS rosdep-universe-depend
115+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
116+
ARG ROS_DISTRO
117+
96118
COPY src/launcher /autoware/src/launcher
97119
COPY src/param /autoware/src/param
98120
COPY src/sensor_component /autoware/src/sensor_component
@@ -165,10 +187,10 @@ RUN --mount=type=ssh \
165187
&& cat /tmp/rosdep-universe-common-depend-packages.txt | xargs apt-get install -y --no-install-recommends \
166188
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache
167189

168-
# TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved
169190
# hadolint ignore=SC1091
170191
RUN --mount=type=cache,target=${CCACHE_DIR} \
171192
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/common,target=/autoware/src/universe/autoware.universe/common \
193+
# TODO(youtalk): Remove --mount options when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved
172194
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher,target=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher \
173195
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils,target=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils \
174196
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/external,target=/autoware/src/universe/external \
@@ -193,7 +215,7 @@ ARG ROS_DISTRO
193215
ENV CCACHE_DIR="/root/.ccache"
194216

195217
# Install rosdep dependencies
196-
COPY --from=rosdep-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-depend-packages.txt
218+
COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-depend-packages.txt
197219
# hadolint ignore=SC2002
198220
RUN --mount=type=ssh \
199221
apt-get update \
@@ -202,8 +224,40 @@ RUN --mount=type=ssh \
202224

203225
# hadolint ignore=SC1091
204226
RUN --mount=type=cache,target=${CCACHE_DIR} \
205-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \
206-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \
227+
--mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \
228+
--mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \
229+
source /opt/ros/"$ROS_DISTRO"/setup.bash \
230+
&& source /opt/autoware/setup.bash \
231+
&& du -sh ${CCACHE_DIR} && ccache -s \
232+
&& colcon build --cmake-args \
233+
" -Wno-dev" \
234+
" --no-warn-unused-cli" \
235+
--merge-install \
236+
--install-base /opt/autoware \
237+
--mixin release compile-commands ccache \
238+
&& du -sh ${CCACHE_DIR} && ccache -s \
239+
&& rm -rf /autoware/build
240+
241+
ENTRYPOINT ["/ros_entrypoint.sh"]
242+
CMD ["/bin/bash"]
243+
244+
FROM universe-common-devel AS universe-localization-mapping-devel
245+
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
246+
ARG ROS_DISTRO
247+
ENV CCACHE_DIR="/root/.ccache"
248+
249+
# Install rosdep dependencies
250+
COPY --from=rosdep-universe-localization-mapping-depend /rosdep-universe-localization-mapping-depend-packages.txt /tmp/rosdep-universe-localization-mapping-depend-packages.txt
251+
# hadolint ignore=SC2002
252+
RUN --mount=type=ssh \
253+
apt-get update \
254+
&& cat /tmp/rosdep-universe-localization-mapping-depend-packages.txt | xargs apt-get install -y --no-install-recommends \
255+
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache
256+
257+
# hadolint ignore=SC1091
258+
RUN --mount=type=cache,target=${CCACHE_DIR} \
259+
--mount=type=bind,from=rosdep-universe-localization-mapping-depend,source=/autoware/src/universe/autoware.universe/localization,target=/autoware/src/universe/autoware.universe/localization \
260+
--mount=type=bind,from=rosdep-universe-localization-mapping-depend,source=/autoware/src/universe/autoware.universe/map,target=/autoware/src/universe/autoware.universe/map \
207261
source /opt/ros/"$ROS_DISTRO"/setup.bash \
208262
&& source /opt/autoware/setup.bash \
209263
&& du -sh ${CCACHE_DIR} && ccache -s \
@@ -225,31 +279,30 @@ ARG ROS_DISTRO
225279
ENV CCACHE_DIR="/root/.ccache"
226280

227281
# Install rosdep dependencies
228-
COPY --from=rosdep-depend /rosdep-universe-depend-packages.txt /tmp/rosdep-universe-depend-packages.txt
282+
COPY --from=rosdep-universe-depend /rosdep-universe-depend-packages.txt /tmp/rosdep-universe-depend-packages.txt
229283
# hadolint ignore=SC2002
230284
RUN --mount=type=ssh \
231285
apt-get update \
232286
&& cat /tmp/rosdep-universe-depend-packages.txt | xargs apt-get install -y --no-install-recommends \
233287
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache
234288

235289
COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware
290+
COPY --from=universe-localization-mapping-devel /opt/autoware /opt/autoware
236291
# hadolint ignore=SC1091
237292
RUN --mount=type=cache,target=${CCACHE_DIR} \
238-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \
239-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/param,target=/autoware/src/param \
240-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_component,target=/autoware/src/sensor_component \
241-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_kit,target=/autoware/src/sensor_kit \
242-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \
243-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/evaluator,target=/autoware/src/universe/autoware.universe/evaluator \
244-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \
245-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/localization,target=/autoware/src/universe/autoware.universe/localization \
246-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/map,target=/autoware/src/universe/autoware.universe/map \
247-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \
248-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \
249-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \
250-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \
251-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/vehicle,target=/autoware/src/universe/autoware.universe/vehicle \
252-
--mount=type=bind,from=rosdep-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \
293+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \
294+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/param,target=/autoware/src/param \
295+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/sensor_component,target=/autoware/src/sensor_component \
296+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/sensor_kit,target=/autoware/src/sensor_kit \
297+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \
298+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/evaluator,target=/autoware/src/universe/autoware.universe/evaluator \
299+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \
300+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \
301+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \
302+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \
303+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \
304+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/vehicle,target=/autoware/src/universe/autoware.universe/vehicle \
305+
--mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \
253306
source /opt/ros/"$ROS_DISTRO"/setup.bash \
254307
&& source /opt/autoware/setup.bash \
255308
&& du -sh ${CCACHE_DIR} && ccache -s \
@@ -272,7 +325,7 @@ ARG LIB_DIR
272325
ARG SETUP_ARGS
273326

274327
# Set up runtime environment and artifacts
275-
COPY --from=rosdep-depend /rosdep-universe-sensing-perception-exec-depend-packages.txt /tmp/rosdep-universe-sensing-perception-exec-depend-packages.txt
328+
COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-exec-depend-packages.txt /tmp/rosdep-universe-sensing-perception-exec-depend-packages.txt
276329
# hadolint ignore=SC2002
277330
RUN --mount=type=ssh \
278331
--mount=type=cache,target=/var/cache/apt,sharing=locked \
@@ -306,7 +359,7 @@ ARG LIB_DIR
306359
ARG SETUP_ARGS
307360

308361
# Set up runtime environment and artifacts
309-
COPY --from=rosdep-depend /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt
362+
COPY --from=rosdep-universe-depend /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt
310363
# hadolint ignore=SC2002
311364
RUN --mount=type=ssh \
312365
--mount=type=cache,target=/var/cache/apt,sharing=locked \

0 commit comments

Comments
 (0)
Please sign in to comment.