diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index bc22829e70e..d81e73f5042 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -64,6 +64,19 @@ runs: run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT shell: bash + - name: Docker meta for autoware:core + id: meta-core + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} + tags: | + type=raw,value=core-${{ inputs.platform }} + type=raw,value=core-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=core-,suffix=-${{ inputs.platform }} + bake-target: docker-metadata-action-core + flavor: | + latest=false + - name: Docker meta for autoware:core-devel id: meta-core-devel uses: docker/metadata-action@v5 @@ -246,6 +259,7 @@ runs: push: true files: | docker/docker-bake.hcl + ${{ steps.meta-core.outputs.bake-file }} ${{ steps.meta-core-devel.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception-devel.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception.outputs.bake-file }} diff --git a/docker/Dockerfile b/docker/Dockerfile index b4b56698a9e..c093cdc12ed 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -28,6 +28,9 @@ COPY src/core /autoware/src/core RUN rosdep update && /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-core-depend-packages.txt \ && cat /rosdep-core-depend-packages.txt +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} --dependency-types=exec \ + > /rosdep-core-exec-depend-packages.txt \ + && cat /rosdep-core-exec-depend-packages.txt COPY src/universe/external /autoware/src/universe/external COPY src/universe/autoware.universe/common /autoware/src/universe/autoware.universe/common @@ -43,7 +46,7 @@ COPY src/universe/autoware.universe/visualization /autoware/src/universe/autowar RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-visualization-depend-packages.txt \ && cat /rosdep-universe-visualization-depend-packages.txt -RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} --dependency-types=exec \ > /rosdep-universe-visualization-exec-depend-packages.txt \ && cat /rosdep-universe-visualization-exec-depend-packages.txt @@ -405,6 +408,32 @@ COPY --from=universe-devel /opt/autoware /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_IMAGE AS core +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR + +# Set up runtime environment +COPY --from=rosdep-core-depend /rosdep-core-depend-packages.txt /tmp/rosdep-core-depend-packages.txt +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + ./setup-dev-env.sh -y --module all --no-nvidia --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get update \ + && cat /tmp/rosdep-core-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO + +COPY --from=core-devel /opt/autoware /opt/autoware + +# Copy bash aliases +COPY docker/etc/.bash_aliases /root/.bash_aliases +RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + # hadolint ignore=DL3006 FROM $AUTOWARE_BASE_IMAGE AS universe-sensing-perception SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 600b47108be..df32d0908f2 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -1,5 +1,6 @@ group "default" { targets = [ + "core", "core-devel", "universe-sensing-perception-devel", "universe-sensing-perception", @@ -17,6 +18,7 @@ group "default" { } // For docker/metadata-action +target "docker-metadata-action-core" {} target "docker-metadata-action-core-devel" {} target "docker-metadata-action-universe-sensing-perception-devel" {} target "docker-metadata-action-universe-sensing-perception" {} @@ -31,6 +33,12 @@ target "docker-metadata-action-universe-visualization" {} target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-universe" {} +target "core" { + inherits = ["docker-metadata-action-core"] + dockerfile = "docker/Dockerfile" + target = "core" +} + target "core-devel" { inherits = ["docker-metadata-action-core-devel"] dockerfile = "docker/Dockerfile"