Skip to content

Commit 291b2fe

Browse files
committed
Update underlay and overlay
1 parent 2b9fcf5 commit 291b2fe

File tree

1 file changed

+72
-32
lines changed

1 file changed

+72
-32
lines changed

Dockerfile

Lines changed: 72 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,33 @@
1-
ARG FROM_IMAGE=ros:eloquent
1+
ARG FROM_IMAGE=ros:foxy
2+
ARG UNDERLAY_WS=/opt/underlay_ws
3+
ARG OVERLAY_WS=/opt/overlay_ws
24

35
# multi-stage for caching
4-
FROM $FROM_IMAGE AS cache
6+
FROM $FROM_IMAGE AS cacher
7+
8+
# copy underlay source
9+
ARG UNDERLAY_WS
10+
WORKDIR $UNDERLAY_WS/src
11+
COPY ./ ./ros2-rust/ros2_rust
512

613
# clone overlay source
7-
ENV OVERLAY_WS /opt/overlay_ws
8-
RUN mkdir -p $OVERLAY_WS/src
9-
WORKDIR $OVERLAY_WS
10-
COPY ./ros2_rust.repos ./
11-
RUN vcs import src < ros2_rust.repos
12-
COPY ./ src/ros2-rust/ros2_rust
14+
ARG OVERLAY_WS
15+
WORKDIR $OVERLAY_WS/src
16+
COPY ./ros2_rust.repos ../
17+
RUN vcs import ./ < ../ros2_rust.repos && \
18+
find ./ -name ".git" | xargs rm -rf
1319

1420
# copy manifests for caching
1521
WORKDIR /opt
16-
RUN find ./ -name "package.xml" | \
17-
xargs cp --parents -t /tmp
18-
# find ./ -name "COLCON_IGNORE" | \
19-
# xargs cp --parents -t /tmp
22+
RUN mkdir -p /tmp/opt && \
23+
find ./ -name "package.xml" | \
24+
xargs cp --parents -t /tmp/opt && \
25+
find ./ -name "COLCON_IGNORE" | \
26+
xargs cp --parents -t /tmp/opt || true
2027

2128
# multi-stage for building
22-
FROM $FROM_IMAGE AS build
29+
FROM $FROM_IMAGE AS builder
30+
ARG DEBIAN_FRONTEND=noninteractive
2331

2432
# install CI dependencies
2533
RUN apt-get update && apt-get install -q -y \
@@ -31,23 +39,11 @@ RUN apt-get update && apt-get install -q -y \
3139
wget \
3240
&& rm -rf /var/lib/apt/lists/*
3341

34-
# copy overlay manifests
35-
ENV OVERLAY_WS /opt/overlay_ws
36-
COPY --from=cache /tmp/overlay_ws $OVERLAY_WS
37-
WORKDIR $OVERLAY_WS
38-
39-
# install overlay dependencies
40-
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
41-
apt-get update && rosdep install -q -y \
42-
--from-paths src \
43-
--ignore-src \
44-
&& rm -rf /var/lib/apt/lists/*
45-
46-
# install rust
42+
# install rust dependencies
4743
ENV RUSTUP_HOME=/usr/local/rustup \
4844
CARGO_HOME=/usr/local/cargo \
4945
PATH=/usr/local/cargo/bin:$PATH \
50-
RUST_VERSION=1.41.1
46+
RUST_VERSION=1.45.2
5147
RUN set -eux; \
5248
wget -O rustup-init "https://sh.rustup.rs"; \
5349
chmod +x rustup-init; \
@@ -60,17 +56,61 @@ RUN set -eux; \
6056
cargo --version; \
6157
rustc --version;
6258

63-
# copy overlay source
64-
COPY --from=cache $OVERLAY_WS ./
59+
# install underlay dependencies
60+
ARG UNDERLAY_WS
61+
WORKDIR $UNDERLAY_WS
62+
COPY --from=cacher /tmp/$UNDERLAY_WS ./
63+
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
64+
apt-get update && rosdep install -q -y \
65+
--from-paths src \
66+
--ignore-src \
67+
&& rm -rf /var/lib/apt/lists/*
68+
69+
# build underlay source
70+
COPY --from=cacher $UNDERLAY_WS ./
71+
ARG UNDERLAY_MIXINS="release ccache"
72+
ARG FAIL_ON_BUILD_FAILURE=True
73+
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
74+
colcon build \
75+
--symlink-install \
76+
--mixin $UNDERLAY_MIXINS \
77+
--event-handlers console_direct+ \
78+
|| ([ -z "$FAIL_ON_BUILD_FAILURE" ] || exit 1)
79+
80+
# install overlay dependencies
81+
ARG OVERLAY_WS
82+
WORKDIR $OVERLAY_WS
83+
COPY --from=cacher /tmp/$OVERLAY_WS ./
84+
RUN . $UNDERLAY_WS/install/setup.sh && \
85+
apt-get update && rosdep install -q -y \
86+
--from-paths src \
87+
$UNDERLAY_WS/src \
88+
--ignore-src \
89+
&& rm -rf /var/lib/apt/lists/*
6590

6691
# build overlay source
92+
COPY --from=cacher $OVERLAY_WS ./
6793
ARG OVERLAY_MIXINS="release ccache"
68-
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
94+
RUN . $UNDERLAY_WS/install/setup.sh && \
6995
colcon build \
7096
--symlink-install \
71-
--mixin $OVERLAY_MIXINS
97+
--mixin $OVERLAY_MIXINS \
98+
|| ([ -z "$FAIL_ON_BUILD_FAILURE" ] || exit 1)
7299

73100
# source overlay from entrypoint
101+
ENV UNDERLAY_WS $UNDERLAY_WS
102+
ENV OVERLAY_WS $OVERLAY_WS
74103
RUN sed --in-place \
75104
's|^source .*|source "$OVERLAY_WS/install/setup.bash"|' \
76-
/ros_entrypoint.sh
105+
/ros_entrypoint.sh
106+
107+
# test overlay build
108+
ARG RUN_TESTS
109+
ARG FAIL_ON_TEST_FAILURE=Ture
110+
RUN if [ -n "$RUN_TESTS" ]; then \
111+
. $OVERLAY_WS/install/setup.sh && \
112+
colcon test \
113+
--mixin $OVERLAY_MIXINS \
114+
&& colcon test-result \
115+
|| ([ -z "$FAIL_ON_TEST_FAILURE" ] || exit 1) \
116+
fi

0 commit comments

Comments
 (0)