From 31ebc51b25209ca63307f640f97d0952af1a921f Mon Sep 17 00:00:00 2001 From: Masaya Kataoka Date: Wed, 5 Feb 2025 11:45:38 +0900 Subject: [PATCH 1/6] add Dockerfile for traffic_simulator Signed-off-by: Masaya Kataoka --- .github/workflows/Docker.yaml | 64 +++++++++++++++++++++++++++++++++++ Dockerfile.traffic_simulator | 49 +++++++++++++++++++++++++++ docker-bake.hcl | 8 +++++ 3 files changed, 121 insertions(+) create mode 100644 Dockerfile.traffic_simulator diff --git a/.github/workflows/Docker.yaml b/.github/workflows/Docker.yaml index e8117f9bdfe..a4f80489626 100644 --- a/.github/workflows/Docker.yaml +++ b/.github/workflows/Docker.yaml @@ -18,6 +18,70 @@ on: required: true jobs: + push_traffic_sim_docker: + name: Push Docker Image for traffic_simulator + runs-on: ubuntu-22.04 + timeout-minutes: 720 + strategy: + matrix: + rosdistro: [humble] + + steps: + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + + - name: Install docker for ubuntu runner + uses: docker/setup-buildx-action@v3 + + - name: Install QEMU + uses: docker/setup-qemu-action@v3 + + - uses: actions/checkout@v4 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Docker Qemu Setup + run: | + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker buildx create --use + docker buildx inspect --bootstrap + + - name: Build + if: github.event_name == 'pull_request' + uses: docker/bake-action@v6.3.0 + with: + files: | + ./docker-bake.hcl + workdir: . + set: | + *.cache-to=type=gha,mode=max + *.cache-from=type=gha + push: false + targets: | + traffic_simulator_${{ matrix.rosdistro }} + + - name: Build and push + if: github.event_name == 'workflow_dispatch' + uses: docker/bake-action@v6.3.0 + with: + files: | + ./docker-bake.hcl + workdir: . + set: | + *.cache-to=type=gha,mode=max + *.cache-from=type=gha + *.tags=ghcr.io/tier4/scenario_simulator_v2:traffic_simulator_${{ matrix.rosdistro }}-${{ github.event.inputs.version }} + push: true + targets: | + traffic_simulator_${{ matrix.rosdistro }} + push_docker: name: Push Docker Image runs-on: ubuntu-22.04 diff --git a/Dockerfile.traffic_simulator b/Dockerfile.traffic_simulator new file mode 100644 index 00000000000..e5ad8ce9e6e --- /dev/null +++ b/Dockerfile.traffic_simulator @@ -0,0 +1,49 @@ +ARG ROS_DISTRO="humble" +FROM ros:${ROS_DISTRO} as build-stage +SHELL ["/bin/bash", "-c"] +ENV DEBIAN_FRONTEND=noninteractive +ENV DEBCONF_NOWARNINGS=yes + +# cspell: ignore kisak +RUN --mount=type=cache,id=apt-cache-amd64,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=apt-lib-amd64,target=/var/lib/apt,sharing=locked \ + apt-get update && apt-get -y install python3-pip python3-rospkg python3-rosdep software-properties-common ccache && \ + add-apt-repository ppa:kisak/kisak-mesa -y && \ + apt-get update && apt-get install libegl-mesa0 -y + +RUN rm -f /etc/apt/apt.conf.d/docker-clean && \ + echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache + +WORKDIR /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator +COPY ./simulation/traffic_simulator /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/simulation/traffic_simulator +COPY ./simulation/traffic_simulator_msgs /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/simulation/traffic_simulator_msgs +COPY ./simulation/simulation_interface /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/simulation/simulation_interface +COPY ./external/concealer /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/external/concealer +COPY ./common /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/common + +WORKDIR /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator +COPY ./dependency_humble.repos /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/dependency_humble.repos +RUN vcs import external < dependency_${ROS_DISTRO}.repos +WORKDIR /home/ubuntu/Desktop/scenario_simulator_ws/src +RUN --mount=type=cache,id=apt-cache-amd64,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=apt-lib-amd64,target=/var/lib/apt,sharing=locked \ + source /opt/ros/${ROS_DISTRO}/setup.bash \ + && apt-get update \ + && rosdep install -iy --from-paths . --rosdistro ${ROS_DISTRO} -t build -t buildtool -t exec + +WORKDIR /home/ubuntu/Desktop/scenario_simulator_ws + +ENV CC="/usr/lib/ccache/gcc" +ENV CXX="/usr/lib/ccache/g++" +ENV CCACHE_DIR="/ccache" +RUN --mount=type=cache,target=/ccache source /opt/ros/${ROS_DISTRO}/setup.bash && \ + colcon build --symlink-install \ + --cmake-args \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DBUILD_TESTING=OFF +COPY ./docker-entrypoint.sh / +RUN chmod a+x /docker-entrypoint.sh + +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/docker-bake.hcl b/docker-bake.hcl index fac2c5237a4..2a2643dea8f 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -24,3 +24,11 @@ target "humble" { base = ["base_amd64", "base_arm64"] } } + +target "traffic_simulator" { + name = "traffic_simulator_humble" + tags = ["ghcr.io/tier4/scenario_simulator_v2:traffic_simulator_humble"] + args = {"ROS_DISTRO" : "humble"} + group = ["humble"] + matrix = {} +} From e4ad9858a6c343b0c380a4d28b76a45df47cbd82 Mon Sep 17 00:00:00 2001 From: Masaya Kataoka Date: Wed, 5 Feb 2025 12:45:11 +0900 Subject: [PATCH 2/6] fix docker bake settings Signed-off-by: Masaya Kataoka --- docker-bake.hcl | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-bake.hcl b/docker-bake.hcl index 2a2643dea8f..ed111fa9408 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -31,4 +31,5 @@ target "traffic_simulator" { args = {"ROS_DISTRO" : "humble"} group = ["humble"] matrix = {} + dockerfile = "Dockerfile.traffic_simulator" } From 6d97e6d17e689ebd4df5dbe64686df69e4f02e4f Mon Sep 17 00:00:00 2001 From: Masaya Kataoka Date: Wed, 5 Feb 2025 16:41:38 +0900 Subject: [PATCH 3/6] remove qemu step Signed-off-by: Masaya Kataoka --- .github/workflows/Docker.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/Docker.yaml b/.github/workflows/Docker.yaml index a4f80489626..4fd0ce6b8bc 100644 --- a/.github/workflows/Docker.yaml +++ b/.github/workflows/Docker.yaml @@ -47,12 +47,6 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Docker Qemu Setup - run: | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --use - docker buildx inspect --bootstrap - - name: Build if: github.event_name == 'pull_request' uses: docker/bake-action@v6.3.0 From 74f0371b8c326136c6b98e0168390d97f8f9e273 Mon Sep 17 00:00:00 2001 From: Masaya Kataoka Date: Wed, 5 Feb 2025 16:43:06 +0900 Subject: [PATCH 4/6] Update Dockerfile.traffic_simulator Co-authored-by: Kotaro Yoshimoto --- Dockerfile.traffic_simulator | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile.traffic_simulator b/Dockerfile.traffic_simulator index e5ad8ce9e6e..305f389a0ab 100644 --- a/Dockerfile.traffic_simulator +++ b/Dockerfile.traffic_simulator @@ -20,8 +20,6 @@ COPY ./simulation/traffic_simulator_msgs /home/ubuntu/Desktop/scenario_simulator COPY ./simulation/simulation_interface /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/simulation/simulation_interface COPY ./external/concealer /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/external/concealer COPY ./common /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/common - -WORKDIR /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator COPY ./dependency_humble.repos /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/dependency_humble.repos RUN vcs import external < dependency_${ROS_DISTRO}.repos WORKDIR /home/ubuntu/Desktop/scenario_simulator_ws/src From 688148c108afb818cc00d08251d2897789c7ae0e Mon Sep 17 00:00:00 2001 From: Masaya Kataoka Date: Wed, 5 Feb 2025 16:44:20 +0900 Subject: [PATCH 5/6] update Dockerfile Signed-off-by: Masaya Kataoka --- Dockerfile.traffic_simulator | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.traffic_simulator b/Dockerfile.traffic_simulator index 305f389a0ab..6e59e5e29da 100644 --- a/Dockerfile.traffic_simulator +++ b/Dockerfile.traffic_simulator @@ -20,7 +20,7 @@ COPY ./simulation/traffic_simulator_msgs /home/ubuntu/Desktop/scenario_simulator COPY ./simulation/simulation_interface /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/simulation/simulation_interface COPY ./external/concealer /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/external/concealer COPY ./common /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/common -COPY ./dependency_humble.repos /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/dependency_humble.repos +COPY ./dependency_${ROS_DISTRO}.repos /home/ubuntu/Desktop/scenario_simulator_ws/src/scenario_simulator/dependency_${ROS_DISTRO}.repos RUN vcs import external < dependency_${ROS_DISTRO}.repos WORKDIR /home/ubuntu/Desktop/scenario_simulator_ws/src RUN --mount=type=cache,id=apt-cache-amd64,target=/var/cache/apt,sharing=locked \ From 8040a27ddc70fe0727143833c7c021c7831df6c7 Mon Sep 17 00:00:00 2001 From: Masaya Kataoka Date: Wed, 5 Feb 2025 16:55:21 +0900 Subject: [PATCH 6/6] remove qemu step Signed-off-by: Masaya Kataoka --- .github/workflows/Docker.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/Docker.yaml b/.github/workflows/Docker.yaml index 4fd0ce6b8bc..d5bc37819a3 100644 --- a/.github/workflows/Docker.yaml +++ b/.github/workflows/Docker.yaml @@ -35,9 +35,6 @@ jobs: - name: Install docker for ubuntu runner uses: docker/setup-buildx-action@v3 - - name: Install QEMU - uses: docker/setup-qemu-action@v3 - - uses: actions/checkout@v4 - name: Login to GitHub Container Registry