Skip to content

Commit

Permalink
feat(Dockerfile): introduce core-common-devel stage (#5849)
Browse files Browse the repository at this point in the history
* add core-common-devel stage

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>

* fix copy

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>

* update readme

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>

* style(pre-commit): autofix

* precommit

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>

---------

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
youtalk and pre-commit-ci[bot] authored Mar 7, 2025
1 parent e6d8120 commit c487b98
Show file tree
Hide file tree
Showing 5 changed files with 493 additions and 409 deletions.
14 changes: 14 additions & 0 deletions .github/actions/docker-build-and-push/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,19 @@ runs:
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
shell: bash

- name: Docker meta for autoware:core-common-devel
id: meta-core-common-devel
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
tags: |
type=raw,value=core-common-devel-${{ inputs.platform }}
type=raw,value=core-common-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }}
type=ref,event=tag,prefix=core-common-devel-,suffix=-${{ inputs.platform }}
bake-target: docker-metadata-action-core-common-devel
flavor: |
latest=false
- name: Docker meta for autoware:core
id: meta-core
uses: docker/metadata-action@v5
Expand Down Expand Up @@ -259,6 +272,7 @@ runs:
push: true
files: |
docker/docker-bake.hcl
${{ steps.meta-core-common-devel.outputs.bake-file }}
${{ steps.meta-core.outputs.bake-file }}
${{ steps.meta-core-devel.outputs.bake-file }}
${{ steps.meta-universe-sensing-perception-devel.outputs.bake-file }}
Expand Down
45 changes: 42 additions & 3 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,20 @@ RUN --mount=type=ssh \
&& /autoware/cleanup_apt.sh

# Generate install package lists
COPY src/core /autoware/src/core
COPY src/core/autoware_adapi_msgs /autoware/src/core/autoware_adapi_msgs
COPY src/core/autoware_cmake /autoware/src/core/autoware_cmake
COPY src/core/autoware_internal_msgs /autoware/src/core/autoware_internal_msgs
COPY src/core/autoware_lanelet2_extension /autoware/src/core/autoware_lanelet2_extension
COPY src/core/autoware_msgs /autoware/src/core/autoware_msgs
COPY src/core/autoware_utils /autoware/src/core/autoware_utils
RUN rosdep update && /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \
> /rosdep-core-common-depend-packages.txt \
&& cat /rosdep-core-common-depend-packages.txt
RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} --dependency-types=exec \
> /rosdep-core-common-exec-depend-packages.txt \
&& cat /rosdep-core-common-exec-depend-packages.txt

COPY src/core/autoware.core /autoware/src/core/autoware.core
RUN rosdep update && /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \
> /rosdep-core-depend-packages.txt \
&& cat /rosdep-core-depend-packages.txt
Expand Down Expand Up @@ -128,7 +141,7 @@ RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} --dependency-ty
&& cat /rosdep-exec-depend-packages.txt

# hadolint ignore=DL3006
FROM $AUTOWARE_BASE_IMAGE AS core-devel
FROM $AUTOWARE_BASE_IMAGE AS core-common-devel

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build-and-push

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build-and-push

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build-and-push-cuda

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build-and-push-cuda

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build-nightly

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build-nightly

Default value for global ARG results in an empty or invalid base image name

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build-nightly

Default value for global ARG results in an empty or invalid base image name

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/

Check warning on line 144 in docker/Dockerfile

View workflow job for this annotation

GitHub Actions / docker-build

Default value for global ARG results in an empty or invalid base image name

InvalidDefaultArgInFrom: Default value for ARG $AUTOWARE_BASE_IMAGE results in empty or invalid base image name More info: https://docs.docker.com/go/dockerfile/rule/invalid-default-arg-in-from/
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ARG ROS_DISTRO
ENV CCACHE_DIR="/root/.ccache"
Expand All @@ -144,6 +157,32 @@ RUN --mount=type=ssh \
&& pip uninstall -y ansible ansible-core \
&& /autoware/cleanup_apt.sh

# Install rosdep dependencies
COPY --from=rosdep-depend /rosdep-core-common-depend-packages.txt /tmp/rosdep-core-common-depend-packages.txt
# hadolint ignore=SC2002
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
apt-get update \
&& cat /tmp/rosdep-core-common-depend-packages.txt | xargs apt-get install -y --no-install-recommends \
&& /autoware/cleanup_apt.sh

RUN --mount=type=cache,target=${CCACHE_DIR} \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core/autoware_adapi_msgs,target=/autoware/src/core/autoware_adapi_msgs \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core/autoware_cmake,target=/autoware/src/core/autoware_cmake \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core/autoware_internal_msgs,target=/autoware/src/core/autoware_internal_msgs \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core/autoware_lanelet2_extension,target=/autoware/src/core/autoware_lanelet2_extension \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core/autoware_msgs,target=/autoware/src/core/autoware_msgs \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core/autoware_utils,target=/autoware/src/core/autoware_utils \
source /opt/ros/"$ROS_DISTRO"/setup.bash \
&& /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware

ENTRYPOINT ["/ros_entrypoint.sh"]
CMD ["/bin/bash"]

FROM core-common-devel AS core-devel
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ARG ROS_DISTRO
ENV CCACHE_DIR="/root/.ccache"

# Install rosdep dependencies
COPY --from=rosdep-depend /rosdep-core-depend-packages.txt /tmp/rosdep-core-depend-packages.txt
# hadolint ignore=SC2002
Expand All @@ -153,7 +192,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
&& /autoware/cleanup_apt.sh

RUN --mount=type=cache,target=${CCACHE_DIR} \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core,target=/autoware/src/core \
--mount=type=bind,from=rosdep-depend,source=/autoware/src/core/autoware.core,target=/autoware/src/core/autoware.core \
source /opt/ros/"$ROS_DISTRO"/setup.bash \
&& /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware

Expand Down
Loading

0 comments on commit c487b98

Please sign in to comment.