Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main' into upstream-to-origin
Browse files Browse the repository at this point in the history
Signed-off-by: Yutaka Kondo <[email protected]>
  • Loading branch information
youtalk committed Jul 17, 2024
2 parents 5e41da6 + b57e6e1 commit 1ebd948
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 44 deletions.
36 changes: 23 additions & 13 deletions .github/actions/docker-build-and-push/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,15 @@ runs:
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3

# TODO(youtalk): Remove obsolete "cache-" restore-keys
- name: Restore ccache
uses: actions/cache/restore@v4
with:
path: |
root-ccache
key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }}
key: ccache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }}
restore-keys: |
ccache-${{ inputs.platform }}-${{ inputs.name }}-
ccache-${{ inputs.platform }}-
cache-${{ inputs.platform }}-${{ inputs.name }}-
cache-${{ inputs.platform }}-
- name: Restore apt-get
uses: actions/cache/restore@v4
Expand Down Expand Up @@ -109,22 +106,33 @@ runs:
latest=false
suffix=-base
- name: Docker meta for prebuilt
id: meta-prebuilt
- name: Docker meta for autoware-core
id: meta-autoware-core
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }}
tags: ${{ steps.set-docker-tags.outputs.tags }}
bake-target: docker-metadata-action-autoware-core
flavor: |
latest=false
suffix=-autoware-core${{ inputs.tag-suffix }}
- name: Docker meta for autoware-universe
id: meta-autoware-universe
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.actor }}/${{ inputs.bake-target }}
tags: ${{ steps.set-docker-tags.outputs.tags }}
bake-target: docker-metadata-action-prebuilt
bake-target: docker-metadata-action-autoware-universe
flavor: |
latest=false
suffix=-prebuilt${{ inputs.tag-suffix }}
suffix=-autoware-universe${{ inputs.tag-suffix }}
- name: Docker meta for devel
id: meta-devel
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.actor }}/${{ inputs.bake-target }}
images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }}
tags: ${{ steps.set-docker-tags.outputs.tags }}
bake-target: docker-metadata-action-devel
flavor: |
Expand All @@ -136,7 +144,7 @@ runs:
id: meta-runtime
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.actor }}/${{ inputs.bake-target }}
images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }}
tags: ${{ steps.set-docker-tags.outputs.tags }}
bake-target: docker-metadata-action-runtime
flavor: |
Expand All @@ -147,7 +155,7 @@ runs:
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Build and Push to GitHub Container Registry
Expand All @@ -160,7 +168,8 @@ runs:
files: |
docker/docker-bake.hcl
${{ steps.meta-base.outputs.bake-file }}
${{ steps.meta-prebuilt.outputs.bake-file }}
${{ steps.meta-autoware-core.outputs.bake-file }}
${{ steps.meta-autoware-universe.outputs.bake-file }}
${{ steps.meta-devel.outputs.bake-file }}
${{ steps.meta-runtime.outputs.bake-file }}
provenance: false
Expand All @@ -174,7 +183,8 @@ runs:
files: |
docker/docker-bake.hcl
${{ steps.meta-base.outputs.bake-file }}
${{ steps.meta-prebuilt.outputs.bake-file }}
${{ steps.meta-autoware-core.outputs.bake-file }}
${{ steps.meta-autoware-universe.outputs.bake-file }}
${{ steps.meta-devel.outputs.bake-file }}
${{ steps.meta-runtime.outputs.bake-file }}
provenance: false
Expand Down
8 changes: 1 addition & 7 deletions .github/actions/docker-build/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ runs:
vcs import src < autoware.repos
shell: bash

# TODO(youtalk): Remove obsolete "cache-" restore-keys
- name: Cache ccache
uses: actions/cache@v4
if: ${{ inputs.name == 'no-cuda' && github.ref == 'refs/heads/main' }}
Expand All @@ -46,8 +45,6 @@ runs:
restore-keys: |
ccache-${{ inputs.platform }}-${{ inputs.name }}-
ccache-${{ inputs.platform }}-
cache-${{ inputs.platform }}-${{ inputs.name }}-
cache-${{ inputs.platform }}-
- name: Cache apt-get
uses: actions/cache@v4
Expand All @@ -62,19 +59,16 @@ runs:
apt-get-${{ inputs.platform }}-${{ inputs.name }}-
apt-get-${{ inputs.platform }}-
# TODO(youtalk): Remove obsolete "cache-" restore-keys
- name: Restore ccache
uses: actions/cache/restore@v4
if: ${{ inputs.name != 'no-cuda' || github.ref != 'refs/heads/main' }}
with:
path: |
root-ccache
key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }}
key: ccache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }}
restore-keys: |
ccache-${{ inputs.platform }}-${{ inputs.name }}-
ccache-${{ inputs.platform }}-
cache-${{ inputs.platform }}-${{ inputs.name }}-
cache-${{ inputs.platform }}-
- name: Restore apt-get
uses: actions/cache/restore@v4
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config-ansible.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/ansible/ansible-lint.git
rev: v24.5.0
rev: v24.7.0
hooks:
- id: ansible-lint
additional_dependencies:
Expand Down
72 changes: 54 additions & 18 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,10 @@ RUN --mount=type=ssh \
# Create entrypoint
CMD ["/bin/bash"]

FROM $BASE_IMAGE as src-imported
FROM $BASE_IMAGE as rosdep-depend
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ARG ROS_DISTRO

# Copy files
COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/
COPY ansible/ /autoware/ansible/
WORKDIR /autoware
Expand All @@ -52,17 +51,28 @@ RUN --mount=type=ssh \
&& pip uninstall -y ansible ansible-core \
&& apt-get autoremove -y && rm -rf "$HOME"/.cache

# Copy repository files
COPY src /autoware/src

# Generate install package lists
COPY src/core /autoware/src/core
RUN rosdep update && rosdep keys --ignore-src --from-paths src \
| xargs rosdep resolve --rosdistro ${ROS_DISTRO} \
| grep -v '^#' \
| sed 's/ \+/\n/g'\
| sort \
> /rosdep-all-depend-packages.txt \
&& cat /rosdep-all-depend-packages.txt
> /rosdep-core-depend-packages.txt \
&& cat /rosdep-core-depend-packages.txt
COPY src/launcher /autoware/src/launcher
COPY src/param /autoware/src/param
COPY src/sensor_component /autoware/src/sensor_component
COPY src/sensor_kit /autoware/src/sensor_kit
COPY src/universe /autoware/src/universe
COPY src/vehicle /autoware/src/vehicle
RUN rosdep keys --ignore-src --from-paths src \
| xargs rosdep resolve --rosdistro ${ROS_DISTRO} \
| grep -v '^#' \
| sed 's/ \+/\n/g'\
| sort \
> /rosdep-universe-depend-packages.txt \
&& cat /rosdep-universe-depend-packages.txt
RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \
| xargs rosdep resolve --rosdistro ${ROS_DISTRO} \
| grep -v '^#' \
Expand All @@ -71,7 +81,7 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \
> /rosdep-exec-depend-packages.txt \
&& cat /rosdep-exec-depend-packages.txt

FROM base as prebuilt
FROM base as autoware-core
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ARG ROS_DISTRO
ARG SETUP_ARGS
Expand All @@ -87,30 +97,57 @@ RUN --mount=type=ssh \
&& apt-get autoremove -y && rm -rf "$HOME"/.cache

# Install rosdep dependencies
COPY --from=src-imported /rosdep-all-depend-packages.txt /tmp/rosdep-all-depend-packages.txt
COPY --from=rosdep-depend /rosdep-core-depend-packages.txt /tmp/rosdep-core-depend-packages.txt
# hadolint ignore=SC2002
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update \
&& cat /tmp/rosdep-all-depend-packages.txt | xargs apt-get install -y --no-install-recommends \
&& cat /tmp/rosdep-core-depend-packages.txt | xargs apt-get install -y --no-install-recommends \
&& apt-get autoremove -y && rm -rf "$HOME"/.cache

# Build Autoware
COPY --from=src-imported /autoware/src /autoware/src
COPY src/core /autoware/src/core
RUN --mount=type=cache,target=${CCACHE_DIR} \
source /opt/ros/"$ROS_DISTRO"/setup.bash \
&& du -sh ${CCACHE_DIR} && ccache -s \
&& colcon build --cmake-args \
" -Wno-dev" \
" --no-warn-unused-cli" \
--mixin release compile-commands ccache \
&& du -sh ${CCACHE_DIR} && ccache -s

FROM autoware-core as autoware-universe
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ARG ROS_DISTRO
ARG SETUP_ARGS
ENV CCACHE_DIR="/root/.ccache"

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

# Build Autoware
COPY src/launcher /autoware/src/launcher
COPY src/param /autoware/src/param
COPY src/sensor_component /autoware/src/sensor_component
COPY src/sensor_kit /autoware/src/sensor_kit
COPY src/universe /autoware/src/universe
COPY src/vehicle /autoware/src/vehicle
RUN --mount=type=cache,target=${CCACHE_DIR} \
source /opt/ros/"$ROS_DISTRO"/setup.bash \
&& du -sh ${CCACHE_DIR} && ccache -s \
&& find /autoware/install -type d -exec chmod 777 {} \; \
&& rm -rf /autoware/build /autoware/src
&& colcon build --cmake-args \
" -Wno-dev" \
" --no-warn-unused-cli" \
--mixin release compile-commands ccache \
&& du -sh ${CCACHE_DIR} && ccache -s

CMD ["/bin/bash"]

FROM prebuilt as devel
FROM autoware-universe as devel
SHELL ["/bin/bash", "-o", "pipefail", "-c"]

# Install development tools and artifacts
Expand All @@ -134,7 +171,7 @@ ARG LIB_DIR
ARG SETUP_ARGS

# Set up runtime environment and artifacts
COPY --from=src-imported /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt
COPY --from=rosdep-depend /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt
# hadolint ignore=SC2002
RUN --mount=type=ssh \
--mount=type=cache,target=/var/cache/apt,sharing=locked \
Expand All @@ -153,8 +190,7 @@ RUN --mount=type=ssh \
/etc/apt/sources.list.d/docker.list /etc/apt/sources.list.d/nvidia-docker.list \
/usr/include /usr/share/doc /usr/lib/gcc /usr/lib/jvm /usr/lib/llvm*

# Copy prebuilt binaries
COPY --from=prebuilt /autoware/install/ /autoware/install/
COPY --from=autoware-universe /autoware/install/ /autoware/install/

# Copy bash aliases
COPY docker/etc/.bash_aliases /root/.bash_aliases
Expand Down
17 changes: 12 additions & 5 deletions docker/docker-bake.hcl
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
group "default" {
targets = ["base", "prebuilt", "devel", "runtime"]
targets = ["base", "autoware-core", "autoware-universe", "devel", "runtime"]
}

// For docker/metadata-action
target "docker-metadata-action-base" {}
target "docker-metadata-action-prebuilt" {}
target "docker-metadata-action-autoware-core" {}
target "docker-metadata-action-autoware-universe" {}
target "docker-metadata-action-devel" {}
target "docker-metadata-action-runtime" {}

Expand All @@ -14,10 +15,16 @@ target "base" {
target = "base"
}

target "prebuilt" {
inherits = ["docker-metadata-action-prebuilt"]
target "autoware-core" {
inherits = ["docker-metadata-action-autoware-core"]
dockerfile = "docker/Dockerfile"
target = "prebuilt"
target = "autoware-core"
}

target "autoware-universe" {
inherits = ["docker-metadata-action-autoware-universe"]
dockerfile = "docker/Dockerfile"
target = "autoware-universe"
}

target "devel" {
Expand Down

0 comments on commit 1ebd948

Please sign in to comment.