From 5b04ba42ed3684d2160de5199f7b02c46a4b2ecf Mon Sep 17 00:00:00 2001 From: Hiroki OTA Date: Mon, 12 Sep 2022 15:37:23 +0900 Subject: [PATCH 001/380] ci: add backport action (#2856) Signed-off-by: h-ohta Signed-off-by: h-ohta --- .github/workflows/backport.yaml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/backport.yaml diff --git a/.github/workflows/backport.yaml b/.github/workflows/backport.yaml new file mode 100644 index 00000000000..01eafed32c1 --- /dev/null +++ b/.github/workflows/backport.yaml @@ -0,0 +1,26 @@ +name: backport +on: + pull_request_target: + types: + - closed + - labeled + +jobs: + backport: + runs-on: ubuntu-latest + # Only react to merged PRs for security reasons. + # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target. + if: > + github.event.pull_request.merged + && ( + github.event.action == 'closed' + || ( + github.event.action == 'labeled' + && contains(github.event.label.name, 'backport') + ) + ) + steps: + - uses: tibdex/backport@v2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + title_template: "<%= title %> (backport #<%= number %>)" From 8af2cc0bfc5c84a52acc12e6579fb94609860569 Mon Sep 17 00:00:00 2001 From: "Takagi, Isamu" <43976882+isamu-takagi@users.noreply.github.com> Date: Thu, 15 Sep 2022 19:55:08 +0900 Subject: [PATCH 002/380] feat: add autoware adapi messages repository (#2867) Signed-off-by: Takagi, Isamu Signed-off-by: Takagi, Isamu --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index cb81fc43927..1f381f01f78 100644 --- a/autoware.repos +++ b/autoware.repos @@ -4,6 +4,10 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_msgs.git version: main + core/autoware_adapi_msgs: + type: git + url: https://github.com/autowarefoundation/autoware_adapi_msgs.git + version: main core/autoware_common: type: git url: https://github.com/autowarefoundation/autoware_common.git From 5f1538e78e3681b7ef44b60d10ad6cc269f12c0e Mon Sep 17 00:00:00 2001 From: Shumpei Wakabayashi <42209144+shmpwk@users.noreply.github.com> Date: Tue, 20 Sep 2022 19:18:35 +0900 Subject: [PATCH 003/380] chore: update PR template for private links (#2877) Signed-off-by: Shumpei Wakabayashi Signed-off-by: Shumpei Wakabayashi --- .github/PULL_REQUEST_TEMPLATE/standard-change.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/standard-change.md b/.github/PULL_REQUEST_TEMPLATE/standard-change.md index 2df18b2bd01..cfdf7101b5a 100644 --- a/.github/PULL_REQUEST_TEMPLATE/standard-change.md +++ b/.github/PULL_REQUEST_TEMPLATE/standard-change.md @@ -4,7 +4,7 @@ ## Related links - + ## Tests performed From 07b1817e25827f18ccbe4f1e68093dfa04c58870 Mon Sep 17 00:00:00 2001 From: Maxime CLEMENT <78338830+maxime-clem@users.noreply.github.com> Date: Thu, 22 Sep 2022 16:04:19 +0900 Subject: [PATCH 004/380] docs(ansible/tensorrt): update install instructions of tensorrt (#2885) Signed-off-by: Maxime CLEMENT Signed-off-by: Maxime CLEMENT --- ansible/roles/tensorrt/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/tensorrt/README.md b/ansible/roles/tensorrt/README.md index 16f8dd2db21..aa88324ad72 100644 --- a/ansible/roles/tensorrt/README.md +++ b/ansible/roles/tensorrt/README.md @@ -11,17 +11,17 @@ This role installs TensorRT and cuDNN following [this page](https://docs.nvidia. ## Manual Installation -For Universe, the `cudnn_version` and `tensorrt_version` variable can also be found in: -[../../playbooks/universe.yaml](../../playbooks/universe.yaml) +For Universe, the `cudnn_version` and `tensorrt_version` variables should be copied from +[amd64.env](../../../amd64.env) or [arm64.env](../../../arm64.env) depending on the architecture used. ```bash # Taken from: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing -cudnn_version="8.2.4.15-1+cuda11.4" +cudnn_version=8.4.1.50-1+cuda11.6 sudo apt-get install libcudnn8=${cudnn_version} libcudnn8-dev=${cudnn_version} sudo apt-mark hold libcudnn8 libcudnn8-dev -tensorrt_version="8.2.4-1+cuda11.4" +tensorrt_version=8.4.2-1+cuda11.6 sudo apt-get install libnvinfer8=${tensorrt_version} libnvonnxparsers8=${tensorrt_version} libnvparsers8=${tensorrt_version} libnvinfer-plugin8=${tensorrt_version} libnvinfer-dev=${tensorrt_version} libnvonnxparsers-dev=${tensorrt_version} libnvparsers-dev=${tensorrt_version} libnvinfer-plugin-dev=${tensorrt_version} sudo apt-mark hold libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev ``` From 6518a40b646f5cf87ec1abc3f180ac01fb79f2c0 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 22 Sep 2022 16:07:01 +0900 Subject: [PATCH 005/380] ci(build, vcs-import): add vcs export --exact (#2852) * ci(build, vcs-import): add vcs export --exact Signed-off-by: Kenji Miyake * split steps Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .github/workflows/build-humble-self-hosted.yaml | 4 ++++ .github/workflows/build-humble.yaml | 4 ++++ .github/workflows/build-main-self-hosted.yaml | 4 ++++ .github/workflows/build-main.yaml | 4 ++++ .github/workflows/vcs-import.yaml | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/.github/workflows/build-humble-self-hosted.yaml b/.github/workflows/build-humble-self-hosted.yaml index b46cf72faab..477a0d4567c 100644 --- a/.github/workflows/build-humble-self-hosted.yaml +++ b/.github/workflows/build-humble-self-hosted.yaml @@ -24,6 +24,10 @@ jobs: mkdir src vcs import src < autoware.repos + - name: Run vcs export + run: | + vcs export --exact src || true + - name: Run rosdep install run: | sudo apt-get -y update diff --git a/.github/workflows/build-humble.yaml b/.github/workflows/build-humble.yaml index 7820f27898f..b8be1706cdb 100644 --- a/.github/workflows/build-humble.yaml +++ b/.github/workflows/build-humble.yaml @@ -29,6 +29,10 @@ jobs: mkdir src vcs import src < autoware.repos + - name: Run vcs export + run: | + vcs export --exact src || true + - name: Run rosdep install run: | sudo apt-get -y update diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index c1c59540a04..9b39f0cf9f4 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -24,6 +24,10 @@ jobs: mkdir src vcs import src < autoware.repos + - name: Run vcs export + run: | + vcs export --exact src || true + - name: Run rosdep install run: | sudo apt-get -y update diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 2b163ce6f5e..0135cdba8b4 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -29,6 +29,10 @@ jobs: mkdir src vcs import src < autoware.repos + - name: Run vcs export + run: | + vcs export --exact src || true + - name: Run rosdep install run: | sudo apt-get -y update diff --git a/.github/workflows/vcs-import.yaml b/.github/workflows/vcs-import.yaml index e13491f764e..c77020ab184 100644 --- a/.github/workflows/vcs-import.yaml +++ b/.github/workflows/vcs-import.yaml @@ -32,6 +32,10 @@ jobs: mkdir src vcs import src < autoware.repos + - name: Run vcs export + run: | + vcs export --exact src || true + - name: Run rosdep install run: | sudo apt-get -y update From eca1c7e857c069bf7e1391d0f278cd7c893caf47 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 22 Sep 2022 16:51:17 +0900 Subject: [PATCH 006/380] ci(docker-build-and-push): remove a workaround for docker/bake-action (#2705) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .github/actions/docker-build-and-push/action.yaml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index d2bc5dbba42..015d30b129c 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -85,15 +85,6 @@ runs: username: ${{ github.repository_owner }} password: ${{ github.token }} - # For https://github.com/docker/buildx/issues/756 - - name: Merge json files - run: | - jq -s ".[0] * .[1]" \ - "${{ steps.meta-devel.outputs.bake-file }}" \ - "${{ steps.meta-prebuilt.outputs.bake-file }}" \ - > bake.json - shell: bash - - name: Build and push uses: docker/bake-action@v2 with: @@ -101,6 +92,7 @@ runs: push: ${{ github.event_name == 'schedule' || github.ref_name == github.event.repository.default_branch }} files: | docker/${{ inputs.bake-target }}/docker-bake.hcl - bake.json + ${{ steps.meta-devel.outputs.bake-file }} + ${{ steps.meta-prebuilt.outputs.bake-file }} set: | ${{ inputs.build-args }} From 904aa4a790ca2d87050fc12e6545953d00cc5a24 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Tue, 27 Sep 2022 21:32:24 +0900 Subject: [PATCH 007/380] refactor(setup): use pipx for Ansible to avoid conflicts between pip and apt packages (#2897) * refactor(setup): use pipx for Ansible to avoid conflicts between pip and apt packages Signed-off-by: Kenji Miyake * add path Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- setup-dev-env.sh | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 510ab6d6f14..33c9109ccad 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -101,23 +101,17 @@ if ! (command -v git >/dev/null 2>&1); then sudo apt-get -y install git fi -# Install pip for ansible -if ! (command -v pip3 >/dev/null 2>&1); then +# Install pipx for ansible +if ! (python3 -m pipx >/dev/null 2>&1); then sudo apt-get -y update - sudo apt-get -y install python3-pip + sudo apt-get -y install python3-pip python3-venv + python3 -m pip install --user pipx fi # Install ansible -ansible_version=$(pip3 list | grep -oP "^ansible\s+\K([0-9]+)" || true) -if [ "$ansible_version" != "6" ]; then - sudo apt-get -y purge ansible - pip3 install -U "ansible==6.*" - # Workaround for https://github.com/autowarefoundation/autoware/issues/2849 - pip3 install -U "pyOpenSSL>=22.0.0" -fi - -# For Python packages installed with user privileges -export PATH="$HOME/.local/bin:$PATH" +python3 -m pipx ensurepath +export PATH="${PIPX_BIN_DIR:=$HOME/.local/bin}:$PATH" +pipx install --include-deps --force "ansible==6.*" # Install ansible collections echo -e "\e[36m"ansible-galaxy collection install -f -r "$SCRIPT_DIR/ansible-galaxy-requirements.yaml" "\e[m" From 9a561c2d4e39a4d4847880c8e07577457ad013cf Mon Sep 17 00:00:00 2001 From: Hiroki OTA Date: Thu, 29 Sep 2022 12:44:49 +0900 Subject: [PATCH 008/380] ci(backport): use generated token instead of GITHUB_TOKEN (#2902) --- .github/workflows/backport.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/backport.yaml b/.github/workflows/backport.yaml index 01eafed32c1..7a9d63f79c5 100644 --- a/.github/workflows/backport.yaml +++ b/.github/workflows/backport.yaml @@ -20,7 +20,14 @@ jobs: ) ) steps: + - name: Generate token + id: generate-token + uses: tibdex/github-app-token@v1 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.PRIVATE_KEY }} + - uses: tibdex/backport@v2 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ steps.generate-token.outputs.token }} title_template: "<%= title %> (backport #<%= number %>)" From 6deb6afa414c1b9b6ca535b3e469c43fda79e218 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Oct 2022 03:33:35 +0000 Subject: [PATCH 009/380] chore(deps): bump styfle/cancel-workflow-action from 0.10.0 to 0.10.1 (#2908) Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.10.0 to 0.10.1. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.10.0...0.10.1) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/cancel-previous-workflows.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cancel-previous-workflows.yaml b/.github/workflows/cancel-previous-workflows.yaml index aeb34c6a03d..b28a4ec0bbc 100644 --- a/.github/workflows/cancel-previous-workflows.yaml +++ b/.github/workflows/cancel-previous-workflows.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel previous runs - uses: styfle/cancel-workflow-action@0.10.0 + uses: styfle/cancel-workflow-action@0.10.1 with: workflow_id: all all_but_latest: true From 3a9bbd0142b453563469b8a3a6d232e98a51280a Mon Sep 17 00:00:00 2001 From: Shumpei Wakabayashi <42209144+shmpwk@users.noreply.github.com> Date: Tue, 4 Oct 2022 00:49:59 +0900 Subject: [PATCH 010/380] feat(repos): add awsim_sensor_kit_launch (#2912) Signed-off-by: Shumpei Wakabayashi --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index 1f381f01f78..35df0052c02 100644 --- a/autoware.repos +++ b/autoware.repos @@ -76,6 +76,10 @@ repositories: type: git url: https://github.com/autowarefoundation/sample_sensor_kit_launch.git version: main + sensor_kit/external/awsim_sensor_kit_launch: # TODO: Integrate into sample_sensor_kit_launch + type: git + url: https://github.com/RobotecAI/awsim_sensor_kit_launch.git + version: main # vehicle vehicle/sample_vehicle_launch: type: git From b64cfdb55c2106934b5262abd8667c65671ed597 Mon Sep 17 00:00:00 2001 From: Shark <71419791+Sharrrrk@users.noreply.github.com> Date: Thu, 6 Oct 2022 19:02:17 +0800 Subject: [PATCH 011/380] feat(setup): add an option to install dev packages (#2923) * feat(setup): add an option to install dev packages Signed-off-by: Shark Liu * ci(pre-commit): autofix Signed-off-by: Shark Liu Co-authored-by: Shark Liu Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/playbooks/universe.yaml | 2 +- ansible/roles/tensorrt/defaults/main.yaml | 1 + ansible/roles/tensorrt/tasks/main.yaml | 21 +++++++++++++++++++-- setup-dev-env.sh | 12 ++++++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index cc14ec7fa22..fa2150af676 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -34,7 +34,7 @@ # Universe - role: autoware.dev_env.autoware_universe - role: autoware.dev_env.cuda - when: prompt_install_nvidia == 'y' + when: prompt_install_nvidia == 'y' and install_devel == 'true' - role: autoware.dev_env.pacmod when: rosdistro != 'rolling' - role: autoware.dev_env.tensorrt diff --git a/ansible/roles/tensorrt/defaults/main.yaml b/ansible/roles/tensorrt/defaults/main.yaml index e69de29bb2d..8419eba6fa9 100644 --- a/ansible/roles/tensorrt/defaults/main.yaml +++ b/ansible/roles/tensorrt/defaults/main.yaml @@ -0,0 +1 @@ +install_devel: true diff --git a/ansible/roles/tensorrt/tasks/main.yaml b/ansible/roles/tensorrt/tasks/main.yaml index 898425f2c48..9e9d80d05c3 100644 --- a/ansible/roles/tensorrt/tasks/main.yaml +++ b/ansible/roles/tensorrt/tasks/main.yaml @@ -3,11 +3,19 @@ ansible.builtin.apt: name: - libcudnn8={{ cudnn_version }} - - libcudnn8-dev={{ cudnn_version }} - libnvinfer8={{ tensorrt_version }} - libnvinfer-plugin8={{ tensorrt_version }} - libnvparsers8={{ tensorrt_version }} - libnvonnxparsers8={{ tensorrt_version }} + allow_change_held_packages: true + allow_downgrade: true + update_cache: true + +- name: Install cuDNN and TensorRT Dev + become: true + ansible.builtin.apt: + name: + - libcudnn8-dev={{ cudnn_version }} - libnvinfer-dev={{ tensorrt_version }} - libnvinfer-plugin-dev={{ tensorrt_version }} - libnvparsers-dev={{ tensorrt_version }} @@ -15,6 +23,7 @@ allow_change_held_packages: true allow_downgrade: true update_cache: true + when: install_devel | bool # apt-mark hold - name: Prevent CUDA-related packages from upgrading @@ -24,12 +33,20 @@ selection: hold with_items: - libcudnn8 - - libcudnn8-dev - libnvinfer8 - libnvinfer-plugin8 - libnvparsers8 - libnvonnxparsers8 + +- name: Prevent CUDA-related Dev packages from upgrading + become: true + ansible.builtin.dpkg_selections: + name: "{{ item }}" + selection: hold + with_items: + - libcudnn8-dev - libnvinfer-dev - libnvinfer-plugin-dev - libnvparsers-dev - libnvonnxparsers-dev + when: install_devel | bool diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 33c9109ccad..c5286c081fc 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -27,6 +27,10 @@ while [ "$1" != "" ]; do # Disable installation of 'cuda-drivers' in the role 'cuda'. option_no_cuda_drivers=true ;; + --no-dev) + # Disable installation dev packages . + option_no_dev=true + ;; *) args+=("$1") ;; @@ -77,6 +81,14 @@ if [ "$option_no_cuda_drivers" = "true" ]; then ansible_args+=("--extra-vars" "install_cuda_drivers=false") fi +# Check installation of dev package +if [ "$option_no_dev" = "true" ]; then + ansible_args+=("--extra-vars" "install_devel=false") + ansible_args+=("--extra-vars" "installation_type=ros-base") +else + ansible_args+=("--extra-vars" "install_devel=true") +fi + # Load env source "$SCRIPT_DIR/amd64.env" if [ "$(uname -m)" = "aarch64" ]; then From 6984d4d42eb49f825223ebc1753bbc5fdc3ab00d Mon Sep 17 00:00:00 2001 From: Aaryan Murgunde <44398228+aaryanmurgunde@users.noreply.github.com> Date: Fri, 7 Oct 2022 07:52:45 +0530 Subject: [PATCH 012/380] docs(ansible/nvidia_docker): update to new docker tag (#2924) Update to new docker tag update according to the NVIDIA documentation as the old tag for the docker repository has been removed --- ansible/roles/nvidia_docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/nvidia_docker/README.md b/ansible/roles/nvidia_docker/README.md index ade992c922b..303ac8ad6eb 100644 --- a/ansible/roles/nvidia_docker/README.md +++ b/ansible/roles/nvidia_docker/README.md @@ -28,7 +28,7 @@ sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker # At this point, a working setup can be tested by running a base CUDA container: -sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi +sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi # This should result in a console output shown below: # +-----------------------------------------------------------------------------+ From f46f222b784805c8186933a60d61a485dd029a65 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Fri, 7 Oct 2022 18:05:37 +0900 Subject: [PATCH 013/380] fix(setup): fix pipx check (#2928) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- setup-dev-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup-dev-env.sh b/setup-dev-env.sh index c5286c081fc..af7090c6ed8 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -114,7 +114,7 @@ if ! (command -v git >/dev/null 2>&1); then fi # Install pipx for ansible -if ! (python3 -m pipx >/dev/null 2>&1); then +if ! (python3 -m pipx --version >/dev/null 2>&1); then sudo apt-get -y update sudo apt-get -y install python3-pip python3-venv python3 -m pip install --user pipx From 0423b84ee8d763879bbbf910d249728410b16943 Mon Sep 17 00:00:00 2001 From: Aaryan Murgunde <44398228+aaryanmurgunde@users.noreply.github.com> Date: Fri, 7 Oct 2022 15:20:40 +0530 Subject: [PATCH 014/380] refactor(ansible/docker_engine): updated docker installation (#2926) * fix(ansible/nvidia_docker): Updated docker installation Updated steps for docker installation from [documentation](https://docs.docker.com/engine/install/ubuntu/) * update task Signed-off-by: Kenji Miyake * create directory Signed-off-by: Kenji Miyake * add permission Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake Co-authored-by: Kenji Miyake Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> --- ansible/roles/docker_engine/README.md | 8 +++++++- ansible/roles/docker_engine/tasks/main.yaml | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ansible/roles/docker_engine/README.md b/ansible/roles/docker_engine/README.md index a9e5c00e357..a79159cf2fa 100644 --- a/ansible/roles/docker_engine/README.md +++ b/ansible/roles/docker_engine/README.md @@ -27,7 +27,13 @@ sudo apt-get install \ lsb-release # Add Docker’s official GPG key: -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +sudo mkdir -p /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + +# Use the following command to set up the repository: +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker Engine sudo apt-get update diff --git a/ansible/roles/docker_engine/tasks/main.yaml b/ansible/roles/docker_engine/tasks/main.yaml index 7dcaff2b101..fffd86c3e3e 100644 --- a/ansible/roles/docker_engine/tasks/main.yaml +++ b/ansible/roles/docker_engine/tasks/main.yaml @@ -20,12 +20,20 @@ - lsb-release update_cache: true -# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +# sudo mkdir -p /etc/apt/keyrings +- name: Create the directory for keyrings + become: true + ansible.builtin.file: + state: directory + path: /etc/apt/keyrings + mode: 0755 + +# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg - name: Authorize Docker GPG key become: true ansible.builtin.apt_key: url: https://download.docker.com/linux/ubuntu/gpg - keyring: /usr/share/keyrings/docker-archive-keyring.gpg + keyring: /etc/apt/keyrings/docker.gpg - name: Save result of 'dpkg --print-architecture' ansible.builtin.command: dpkg --print-architecture @@ -42,11 +50,11 @@ register: lsb_release_is changed_when: false -# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +# echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - name: Add Docker apt repository to source list become: true ansible.builtin.apt_repository: - repo: deb [arch={{ deb_architecture.stdout }} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/{{ lsb_release_is.stdout | lower }} {{ lsb_release_cs.stdout }} stable + repo: deb [arch={{ deb_architecture.stdout }} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/{{ lsb_release_is.stdout | lower }} {{ lsb_release_cs.stdout }} stable filename: docker state: present update_cache: true From 4fae6378e9e83fe417d2d231c294bd1f15ae2477 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 10:10:01 +0900 Subject: [PATCH 015/380] chore(deps): bump styfle/cancel-workflow-action from 0.10.1 to 0.11.0 (#2944) Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.10.1 to 0.11.0. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.10.1...0.11.0) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/cancel-previous-workflows.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cancel-previous-workflows.yaml b/.github/workflows/cancel-previous-workflows.yaml index b28a4ec0bbc..f9c29b81b6e 100644 --- a/.github/workflows/cancel-previous-workflows.yaml +++ b/.github/workflows/cancel-previous-workflows.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel previous runs - uses: styfle/cancel-workflow-action@0.10.1 + uses: styfle/cancel-workflow-action@0.11.0 with: workflow_id: all all_but_latest: true From dd1823883d76ec0408498dbe87393f985790e5d9 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 26 Oct 2022 18:58:52 +0900 Subject: [PATCH 016/380] chore(.markdown-link-check.json): ignore 127.0.0.1 (#2971) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .markdown-link-check.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.markdown-link-check.json b/.markdown-link-check.json index dec3db1ad1c..c71a3e42536 100644 --- a/.markdown-link-check.json +++ b/.markdown-link-check.json @@ -4,6 +4,9 @@ { "pattern": "^http://localhost" }, + { + "pattern": "^http://127\\.0\\.0\\.1" + }, { "pattern": "^https://github.com/.*/discussions/new" } From 62399f5da8ec2e9a0168907f222507f05d83254b Mon Sep 17 00:00:00 2001 From: Traun Leyden Date: Mon, 31 Oct 2022 18:26:12 -0700 Subject: [PATCH 017/380] docs(ansible/cuda): fix outdated cuda version in README (#2986) Update cuda version Signed-off-by: Traun Leyden Signed-off-by: Traun Leyden --- ansible/roles/cuda/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cuda/README.md b/ansible/roles/cuda/README.md index f011866a045..8a980676406 100644 --- a/ansible/roles/cuda/README.md +++ b/ansible/roles/cuda/README.md @@ -24,7 +24,7 @@ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" sudo apt-get update -cuda_version=11-4 +cuda_version=11-6 sudo apt install cuda-${cuda_version} --no-install-recommends ``` From 5fba5a1e35921470d02711f19bec19b29ab08139 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Mon, 7 Nov 2022 19:40:35 +0900 Subject: [PATCH 018/380] chore(.markdownlint.yaml): use ordered style for MD029 (#3006) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .markdownlint.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.markdownlint.yaml b/.markdownlint.yaml index df1f518dc0d..babaaa1f158 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -3,6 +3,8 @@ default: true MD013: false MD024: siblings_only: true +MD029: + style: ordered MD033: false MD041: false MD046: false From ef48253ce76e855d6c08e70be6013733522805a3 Mon Sep 17 00:00:00 2001 From: Yusuke Muramatsu Date: Tue, 15 Nov 2022 18:07:50 +0900 Subject: [PATCH 019/380] feat(ansible): add git-lfs role (#3027) * feat(ansible): add git-lfs Signed-off-by: yukke42 * Update ansible/roles/git_lfs/tasks/main.yaml Signed-off-by: yukke42 Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> --- ansible/playbooks/universe.yaml | 1 + ansible/roles/git_lfs/README.md | 13 +++++++++++++ ansible/roles/git_lfs/defaults/main.yaml | 0 ansible/roles/git_lfs/meta/main.yaml | 0 ansible/roles/git_lfs/tasks/main.yaml | 19 +++++++++++++++++++ 5 files changed, 33 insertions(+) create mode 100644 ansible/roles/git_lfs/README.md create mode 100644 ansible/roles/git_lfs/defaults/main.yaml create mode 100644 ansible/roles/git_lfs/meta/main.yaml create mode 100644 ansible/roles/git_lfs/tasks/main.yaml diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index fa2150af676..ccf16fa0482 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -39,3 +39,4 @@ when: rosdistro != 'rolling' - role: autoware.dev_env.tensorrt when: prompt_install_nvidia == 'y' + - role: autoware.dev_env.git_lfs diff --git a/ansible/roles/git_lfs/README.md b/ansible/roles/git_lfs/README.md new file mode 100644 index 00000000000..6ef8d03d917 --- /dev/null +++ b/ansible/roles/git_lfs/README.md @@ -0,0 +1,13 @@ +# Git Large File Storage + +This role installs Git LFS. You can access detailed information about Git LFS with [this link](https://git-lfs.github.com/). + +## Inputs + +None. + +## Manual Installation + +```bash +git lfs install +``` diff --git a/ansible/roles/git_lfs/defaults/main.yaml b/ansible/roles/git_lfs/defaults/main.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/git_lfs/meta/main.yaml b/ansible/roles/git_lfs/meta/main.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/git_lfs/tasks/main.yaml b/ansible/roles/git_lfs/tasks/main.yaml new file mode 100644 index 00000000000..9255c3bd268 --- /dev/null +++ b/ansible/roles/git_lfs/tasks/main.yaml @@ -0,0 +1,19 @@ +# https://github.com/git-lfs/git-lfs/wiki/Installation#debian-and-ubuntu +- name: Download script + ansible.builtin.get_url: + url: https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh + dest: /tmp/script.sh + mode: 0764 + +- name: Setup + become: true + environment: + os: "{{ ansible_distribution }}" + dist: "{{ ansible_distribution_release }}" + ansible.builtin.script: /tmp/script.sh + +- name: Install Git LFS + become: true + ansible.builtin.apt: + name: + - git-lfs From b5df31889ade562531d9720c30e7798bf7f1434c Mon Sep 17 00:00:00 2001 From: Mehmet Dogru <48479081+mehmetdogru@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:35:59 +0300 Subject: [PATCH 020/380] fix(gitignore): add capture folder to gitignore (#3031) Signed-off-by: Mehmet Dogru <42mehmetdogru42@gmail.com> --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 1dba4b816bf..024b126c9dd 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ log/ # Jetbrains .idea/ + +# rviz Screen Capture +capture/ From 82a8efb51a7cd5d9670b88eac0110c5df3de0cdf Mon Sep 17 00:00:00 2001 From: "Takagi, Isamu" <43976882+isamu-takagi@users.noreply.github.com> Date: Wed, 16 Nov 2022 16:43:45 +0900 Subject: [PATCH 021/380] chore(.clang-format): modify include order for srvs package (#3038) Signed-off-by: Takagi, Isamu Signed-off-by: Takagi, Isamu --- .clang-format | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.clang-format b/.clang-format index 7762ec9dfb8..c3b72db71b4 100644 --- a/.clang-format +++ b/.clang-format @@ -33,6 +33,9 @@ IncludeCategories: - Regex: .*_msgs/.* Priority: 3 CaseSensitive: true + - Regex: .*_srvs/.* + Priority: 3 + CaseSensitive: true # Other Package headers - Regex: <.*> Priority: 2 From f0014fdd042bb6ae23067b39e49115cf5fc7a823 Mon Sep 17 00:00:00 2001 From: Yusuke Muramatsu Date: Fri, 18 Nov 2022 16:03:59 +0900 Subject: [PATCH 022/380] ci(.pre-commit-config-ansible.yaml): update ansible-lint version (#3032) * ci(.pre-commit-config-ansible.yaml): update ansible-lint version Signed-off-by: yukke42 * ci: change to v5.4.0 Signed-off-by: yukke42 Signed-off-by: yukke42 --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index 9fce5a08e07..3e5c79653b8 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,5 +1,5 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v5.3.2 + rev: v5.4.0 hooks: - id: ansible-lint From bec22cbe4dfbccb969cfeed4197f620931fffa54 Mon Sep 17 00:00:00 2001 From: Yusuke Muramatsu Date: Fri, 18 Nov 2022 16:21:05 +0900 Subject: [PATCH 023/380] fix(ansible/git_lfs): fix git lfs installation steps (#3029) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(ansible): fix installation step of git-lfs role Signed-off-by: yukke42 * docs: update readme Signed-off-by: yukke42 * Update ansible/roles/git_lfs/README.md Co-authored-by: M. Fatih Cırıt * fix: change steps to pass CI Signed-off-by: yukke42 Signed-off-by: yukke42 Co-authored-by: M. Fatih Cırıt Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> --- ansible/roles/git_lfs/README.md | 1 + ansible/roles/git_lfs/tasks/main.yaml | 29 +++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ansible/roles/git_lfs/README.md b/ansible/roles/git_lfs/README.md index 6ef8d03d917..a6b8da6e0a4 100644 --- a/ansible/roles/git_lfs/README.md +++ b/ansible/roles/git_lfs/README.md @@ -9,5 +9,6 @@ None. ## Manual Installation ```bash +sudo apt install git-lfs git lfs install ``` diff --git a/ansible/roles/git_lfs/tasks/main.yaml b/ansible/roles/git_lfs/tasks/main.yaml index 9255c3bd268..fa1700913d1 100644 --- a/ansible/roles/git_lfs/tasks/main.yaml +++ b/ansible/roles/git_lfs/tasks/main.yaml @@ -1,19 +1,18 @@ # https://github.com/git-lfs/git-lfs/wiki/Installation#debian-and-ubuntu -- name: Download script - ansible.builtin.get_url: - url: https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh - dest: /tmp/script.sh - mode: 0764 - -- name: Setup - become: true - environment: - os: "{{ ansible_distribution }}" - dist: "{{ ansible_distribution_release }}" - ansible.builtin.script: /tmp/script.sh - - name: Install Git LFS become: true ansible.builtin.apt: - name: - - git-lfs + name: git-lfs + state: latest + update_cache: true + +# ref: https://github.com/ansible/ansible-lint/issues/1780 +- name: Check if git lfs is installed # https://github.com/git-lfs/git-lfs/issues/901 + git_config: + list_all: true + scope: global + register: git_global_config + +- name: Setup Git LFS + command: git lfs install + when: "'filter.lfs.required' not in git_global_config.config_values" From 6eddd9c0534e9cb2f46ca52d46b3ec99ceb9787e Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Fri, 18 Nov 2022 17:15:56 +0900 Subject: [PATCH 024/380] ci(pre-commit): add autoupdate workflow (#3050) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .../pre-commit-ansible-autoupdate.yaml | 37 ++++++++++++++++++ .github/workflows/pre-commit-autoupdate.yaml | 38 +++++++++++++++++++ .../pre-commit-optional-autoupdate.yaml | 37 ++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 .github/workflows/pre-commit-ansible-autoupdate.yaml create mode 100644 .github/workflows/pre-commit-autoupdate.yaml create mode 100644 .github/workflows/pre-commit-optional-autoupdate.yaml diff --git a/.github/workflows/pre-commit-ansible-autoupdate.yaml b/.github/workflows/pre-commit-ansible-autoupdate.yaml new file mode 100644 index 00000000000..5595c69d563 --- /dev/null +++ b/.github/workflows/pre-commit-ansible-autoupdate.yaml @@ -0,0 +1,37 @@ +name: pre-commit-ansible-autoupdate + +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: + +jobs: + check-secret: + uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 + secrets: + secret: ${{ secrets.APP_ID }} + + pre-commit-ansible-autoupdate: + needs: check-secret + if: ${{ needs.check-secret.outputs.set == 'true' }} + runs-on: ubuntu-latest + steps: + - name: Generate token + id: generate-token + uses: tibdex/github-app-token@v1 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.PRIVATE_KEY }} + + - name: Run pre-commit-autoupdate + uses: autowarefoundation/autoware-github-actions/pre-commit-autoupdate@v1 + with: + token: ${{ steps.generate-token.outputs.token }} + pre-commit-config: .pre-commit-config-ansible.yaml + pr-labels: | + bot + pre-commit-ansible-autoupdate + pr-branch: pre-commit-ansible-autoupdate + pr-title: "ci(pre-commit-ansible): autoupdate" + pr-commit-message: "ci(pre-commit-ansible): autoupdate" + auto-merge-method: squash diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml new file mode 100644 index 00000000000..f6ed17e404a --- /dev/null +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -0,0 +1,38 @@ +name: pre-commit-autoupdate + +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: + +jobs: + check-secret: + if: ${{ github.event.repository.private }} + uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 + secrets: + secret: ${{ secrets.APP_ID }} + + pre-commit-autoupdate: + needs: check-secret + if: ${{ needs.check-secret.outputs.set == 'true' }} + runs-on: ubuntu-latest + steps: + - name: Generate token + id: generate-token + uses: tibdex/github-app-token@v1 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.PRIVATE_KEY }} + + - name: Run pre-commit-autoupdate + uses: autowarefoundation/autoware-github-actions/pre-commit-autoupdate@v1 + with: + token: ${{ steps.generate-token.outputs.token }} + pre-commit-config: .pre-commit-config.yaml + pr-labels: | + bot + pre-commit-autoupdate + pr-branch: pre-commit-autoupdate + pr-title: "ci(pre-commit): autoupdate" + pr-commit-message: "ci(pre-commit): autoupdate" + auto-merge-method: squash diff --git a/.github/workflows/pre-commit-optional-autoupdate.yaml b/.github/workflows/pre-commit-optional-autoupdate.yaml new file mode 100644 index 00000000000..12f9c3c0d24 --- /dev/null +++ b/.github/workflows/pre-commit-optional-autoupdate.yaml @@ -0,0 +1,37 @@ +name: pre-commit-optional-autoupdate + +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: + +jobs: + check-secret: + uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 + secrets: + secret: ${{ secrets.APP_ID }} + + pre-commit-optional-autoupdate: + needs: check-secret + if: ${{ needs.check-secret.outputs.set == 'true' }} + runs-on: ubuntu-latest + steps: + - name: Generate token + id: generate-token + uses: tibdex/github-app-token@v1 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.PRIVATE_KEY }} + + - name: Run pre-commit-autoupdate + uses: autowarefoundation/autoware-github-actions/pre-commit-autoupdate@v1 + with: + token: ${{ steps.generate-token.outputs.token }} + pre-commit-config: .pre-commit-config-optional.yaml + pr-labels: | + bot + pre-commit-optional-autoupdate + pr-branch: pre-commit-optional-autoupdate + pr-title: "ci(pre-commit-optional): autoupdate" + pr-commit-message: "ci(pre-commit-optional): autoupdate" + auto-merge-method: squash From 18413fe4b7e89bf13dd30a89451ad690a48bf899 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 18 Nov 2022 17:48:50 +0900 Subject: [PATCH 025/380] ci(pre-commit-optional): autoupdate (#3051) Signed-off-by: GitHub Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index a805f1201c4..e0019e10d52 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.10.0 + rev: v3.10.3 hooks: - id: markdown-link-check args: [--config=.markdown-link-check.json] From 50003e0c76eaac4d1cc99f9b38011b43017d0f4c Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 18 Nov 2022 19:03:05 +0900 Subject: [PATCH 026/380] ci(pre-commit-ansible): autoupdate (#3052) Signed-off-by: GitHub Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index 3e5c79653b8..fdb6b826d90 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,5 +1,5 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v5.4.0 + rev: v6.8.6 hooks: - id: ansible-lint From e6ea0088cbb57053c4847a8f32f22d458f971ca1 Mon Sep 17 00:00:00 2001 From: Xinyu Wang <93699235+angry-crab@users.noreply.github.com> Date: Fri, 25 Nov 2022 21:37:31 +0900 Subject: [PATCH 027/380] feat(docker): add opencl vendor (#3070) * add opencl vendor Signed-off-by: Xinyu Wang * squash RUN and fixed comment Signed-off-by: Xinyu Wang Signed-off-by: Xinyu Wang --- docker/autoware-universe/Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker/autoware-universe/Dockerfile b/docker/autoware-universe/Dockerfile index 8a7ad19ce05..6b75784ddb4 100644 --- a/docker/autoware-universe/Dockerfile +++ b/docker/autoware-universe/Dockerfile @@ -48,6 +48,11 @@ RUN chmod 644 /etc/vulkan/icd.d/nvidia_icd.json ADD "https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json" /etc/glvnd/egl_vendor.d/10_nvidia.json RUN chmod 644 /etc/glvnd/egl_vendor.d/10_nvidia.json +## Register OpenCL GPU vendors +RUN mkdir -p /etc/OpenCL/vendors \ + && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd \ + && chmod 644 /etc/OpenCL/vendors/nvidia.icd + ## Create entrypoint # hadolint ignore=DL3059 RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc From e284ec8b25f4735566ca88c67a5f4174befbcd0c Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Mon, 28 Nov 2022 15:49:55 +0900 Subject: [PATCH 028/380] ci(docker-build-and-push): add release tag as docker build (#3026) chore(docker-build-and-push): add version tag as a trigger for docker action workflow Signed-off-by: mitsudome-r Signed-off-by: mitsudome-r --- .github/actions/docker-build-and-push/action.yaml | 3 ++- .../workflows/docker-build-and-push-humble-self-hosted.yaml | 1 + .github/workflows/docker-build-and-push-humble.yaml | 1 + .github/workflows/docker-build-and-push-main-self-hosted.yaml | 1 + .github/workflows/docker-build-and-push-main.yaml | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 015d30b129c..c0b9634baba 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -41,6 +41,7 @@ runs: tags+=("type=schedule,pattern=latest") tags+=("type=schedule,pattern={{date 'YYYYMMDD'}}") tags+=("type=semver,pattern={{version}}") + tags+=("type=match,pattern=\d+.\d+") fi # Workaround for multiline strings @@ -89,7 +90,7 @@ runs: uses: docker/bake-action@v2 with: # Checking event_name for https://github.com/autowarefoundation/autoware/issues/2796 - push: ${{ github.event_name == 'schedule' || github.ref_name == github.event.repository.default_branch }} + push: ${{ github.event_name == 'schedule' || github.ref_name == github.event.repository.default_branch || github.event_name == 'push'}} files: | docker/${{ inputs.bake-target }}/docker-bake.hcl ${{ steps.meta-devel.outputs.bake-file }} diff --git a/.github/workflows/docker-build-and-push-humble-self-hosted.yaml b/.github/workflows/docker-build-and-push-humble-self-hosted.yaml index 193f4631af6..805e5fdcb23 100644 --- a/.github/workflows/docker-build-and-push-humble-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-humble-self-hosted.yaml @@ -4,6 +4,7 @@ on: push: tags: - v* + - "[0-9]+.[0-9]+*" schedule: - cron: 0 0 1,15 * * workflow_dispatch: diff --git a/.github/workflows/docker-build-and-push-humble.yaml b/.github/workflows/docker-build-and-push-humble.yaml index 367f3a3dfbb..50733f2415a 100644 --- a/.github/workflows/docker-build-and-push-humble.yaml +++ b/.github/workflows/docker-build-and-push-humble.yaml @@ -4,6 +4,7 @@ on: push: tags: - v* + - "[0-9]+.[0-9]+*" schedule: - cron: 0 0 1,15 * * workflow_dispatch: diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index cdf436e9446..75826533e4f 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -4,6 +4,7 @@ on: push: tags: - v* + - "[0-9]+.[0-9]+*" schedule: - cron: 0 0 1,15 * * workflow_dispatch: diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 9022d798bcc..1ebec24a540 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -4,6 +4,7 @@ on: push: tags: - v* + - "[0-9]+.[0-9]+*" schedule: - cron: 0 0 1,15 * * workflow_dispatch: From d681d48eea8c7fde6ad1ee20f34f2fbc970d95a6 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 30 Nov 2022 21:07:37 +0900 Subject: [PATCH 029/380] chore(.gitignore): ignore CodeChecker files (#3085) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 024b126c9dd..4e4e5475006 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ log/ # rviz Screen Capture capture/ + +# CodeChecker +.codechecker/ From f1a593f3493d5298e07c70105b9f4902a7432f65 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 30 Nov 2022 23:10:55 +0900 Subject: [PATCH 030/380] ci: refactor workflows (#3087) * ci: refactor workflows Signed-off-by: Kenji Miyake * fixup Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .github/workflows/build-main-self-hosted.yaml | 38 ++++++++++++++++--- .github/workflows/build-main.yaml | 31 ++++++++++++--- ...ocker-build-and-push-main-self-hosted.yaml | 8 ++-- .../workflows/docker-build-and-push-main.yaml | 8 ++-- 4 files changed, 64 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 9b39f0cf9f4..eba73bae2f8 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -6,18 +6,44 @@ on: workflow_dispatch: jobs: + load-env: + runs-on: ubuntu-latest + outputs: + base-image: ${{ steps.set-env.outputs.base-image }} + rosdistro: ${{ steps.set-env.outputs.rosdistro }} + steps: + - name: Check out repository + uses: actions/checkout@v3 + + - name: Load env + run: | + cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + if [ "$(uname -m)" = "aarch64" ]; then + cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + fi + + - name: Set env + id: set-env + run: | + echo "base-image=${{ env.base_image }}" >> $GITHUB_OUTPUT + echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT + build-main-self-hosted: + needs: load-env runs-on: [self-hosted, linux, ARM64] - container: ubuntu:20.04 + container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository uses: actions/checkout@v3 - with: - ref: "" - name: Run setup script run: | - ./setup-dev-env.sh -y universe + ./setup-dev-env.sh -y + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} - name: Run vcs import run: | @@ -32,9 +58,9 @@ jobs: run: | sudo apt-get -y update rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro galactic + DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro ${{ needs.load-env.outputs.rosdistro }} - name: Build run: | - . /opt/ros/galactic/setup.sh + . /opt/ros/${{ needs.load-env.outputs.rosdistro }}/setup.sh colcon build --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 0135cdba8b4..ca1dafb4728 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -6,14 +6,35 @@ on: workflow_dispatch: jobs: + load-env: + runs-on: ubuntu-latest + outputs: + base-image: ${{ steps.set-env.outputs.base-image }} + rosdistro: ${{ steps.set-env.outputs.rosdistro }} + steps: + - name: Check out repository + uses: actions/checkout@v3 + + - name: Load env + run: | + cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + if [ "$(uname -m)" = "aarch64" ]; then + cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + fi + + - name: Set env + id: set-env + run: | + echo "base-image=${{ env.base_image }}" >> $GITHUB_OUTPUT + echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT + build-main: + needs: load-env runs-on: ubuntu-latest - container: ubuntu:20.04 + container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository uses: actions/checkout@v3 - with: - ref: "" - name: Run setup script run: | @@ -37,9 +58,9 @@ jobs: run: | sudo apt-get -y update rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro galactic + DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro ${{ needs.load-env.outputs.rosdistro }} - name: Build run: | - . /opt/ros/galactic/setup.sh + . /opt/ros/${{ needs.load-env.outputs.rosdistro }}/setup.sh colcon build --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 75826533e4f..6ff4cd80d13 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -33,14 +33,12 @@ jobs: run: | sudo chown -R $USER:$USER ${{ github.workspace }} - - name: Check out repository - uses: actions/checkout@v3 - with: - ref: "" - - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Check out repository + uses: actions/checkout@v3 + - name: Load env run: | cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 1ebec24a540..214e4857ca1 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -28,14 +28,12 @@ jobs: setup-args: --no-cuda-drivers additional-tag-suffix: -cuda steps: - - name: Check out repository - uses: actions/checkout@v3 - with: - ref: "" - - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Check out repository + uses: actions/checkout@v3 + - name: Load env run: | cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV From 1d492a38e36faab39abbfd48cc482495c4bcd739 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 30 Nov 2022 23:38:35 +0900 Subject: [PATCH 031/380] ci(docker-build-and-push): fix workflows (#3090) ci: fix workflows Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .../workflows/docker-build-and-push-main-self-hosted.yaml | 6 +++--- .github/workflows/docker-build-and-push-main.yaml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 6ff4cd80d13..e6e78011179 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -33,12 +33,12 @@ jobs: run: | sudo chown -R $USER:$USER ${{ github.workspace }} - - name: Free disk space - uses: ./.github/actions/free-disk-space - - name: Check out repository uses: actions/checkout@v3 + - name: Free disk space + uses: ./.github/actions/free-disk-space + - name: Load env run: | cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 214e4857ca1..85da95d6d81 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -28,12 +28,12 @@ jobs: setup-args: --no-cuda-drivers additional-tag-suffix: -cuda steps: - - name: Free disk space - uses: ./.github/actions/free-disk-space - - name: Check out repository uses: actions/checkout@v3 + - name: Free disk space + uses: ./.github/actions/free-disk-space + - name: Load env run: | cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV From 7de7beb800564091d20047ebb28cd09c4b66a5c9 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 1 Dec 2022 02:08:18 +0900 Subject: [PATCH 032/380] ci: refactor workflows to be OS/distro independent like #3087 (#3092) * ci: refactor workflows to be OS/distro independent like #3087 Signed-off-by: Kenji Miyake * add needs Signed-off-by: Kenji Miyake * add outputs Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .github/workflows/build-main-self-hosted.yaml | 21 +----------- .github/workflows/build-main.yaml | 21 +----------- .github/workflows/load-env.yaml | 32 +++++++++++++++++++ .github/workflows/setup-docker.yaml | 6 +++- .github/workflows/setup-universe.yaml | 6 +++- .github/workflows/update-docker-manifest.yaml | 12 ++++--- .github/workflows/vcs-import.yaml | 10 ++++-- 7 files changed, 59 insertions(+), 49 deletions(-) create mode 100644 .github/workflows/load-env.yaml diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index eba73bae2f8..3f0fdb23b13 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -7,26 +7,7 @@ on: jobs: load-env: - runs-on: ubuntu-latest - outputs: - base-image: ${{ steps.set-env.outputs.base-image }} - rosdistro: ${{ steps.set-env.outputs.rosdistro }} - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - - name: Set env - id: set-env - run: | - echo "base-image=${{ env.base_image }}" >> $GITHUB_OUTPUT - echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT + uses: ./.github/workflows/load-env.yaml build-main-self-hosted: needs: load-env diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index ca1dafb4728..a57934080b0 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -7,26 +7,7 @@ on: jobs: load-env: - runs-on: ubuntu-latest - outputs: - base-image: ${{ steps.set-env.outputs.base-image }} - rosdistro: ${{ steps.set-env.outputs.rosdistro }} - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - - name: Set env - id: set-env - run: | - echo "base-image=${{ env.base_image }}" >> $GITHUB_OUTPUT - echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT + uses: ./.github/workflows/load-env.yaml build-main: needs: load-env diff --git a/.github/workflows/load-env.yaml b/.github/workflows/load-env.yaml new file mode 100644 index 00000000000..1e86a6d0bba --- /dev/null +++ b/.github/workflows/load-env.yaml @@ -0,0 +1,32 @@ +name: load-env + +on: + workflow_call: + outputs: + base-image: + value: ${{ jobs.load-env.outputs.base-image }} + rosdistro: + value: ${{ jobs.load-env.outputs.rosdistro }} + +jobs: + load-env: + runs-on: ubuntu-latest + outputs: + base-image: ${{ steps.set-env.outputs.base-image }} + rosdistro: ${{ steps.set-env.outputs.rosdistro }} + steps: + - name: Check out repository + uses: actions/checkout@v3 + + - name: Load env + run: | + cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + if [ "$(uname -m)" = "aarch64" ]; then + cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + fi + + - name: Set env + id: set-env + run: | + echo "base-image=${{ env.base_image }}" >> $GITHUB_OUTPUT + echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT diff --git a/.github/workflows/setup-docker.yaml b/.github/workflows/setup-docker.yaml index b55a2df8d38..9e3fee08f8c 100644 --- a/.github/workflows/setup-docker.yaml +++ b/.github/workflows/setup-docker.yaml @@ -4,9 +4,13 @@ on: pull_request: jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + setup-docker: + needs: load-env runs-on: ubuntu-latest - container: ubuntu:20.04 + container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository uses: actions/checkout@v3 diff --git a/.github/workflows/setup-universe.yaml b/.github/workflows/setup-universe.yaml index 0081abd5d63..5735967e674 100644 --- a/.github/workflows/setup-universe.yaml +++ b/.github/workflows/setup-universe.yaml @@ -4,9 +4,13 @@ on: pull_request: jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + setup-universe: + needs: load-env runs-on: ubuntu-latest - container: ubuntu:20.04 + container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository uses: actions/checkout@v3 diff --git a/.github/workflows/update-docker-manifest.yaml b/.github/workflows/update-docker-manifest.yaml index b92c9403b48..26cda041fc9 100644 --- a/.github/workflows/update-docker-manifest.yaml +++ b/.github/workflows/update-docker-manifest.yaml @@ -6,7 +6,11 @@ on: workflow_dispatch: jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + update-docker-manifest: + needs: load-env runs-on: ubuntu-latest steps: - name: Check out repository @@ -21,26 +25,26 @@ jobs: uses: ./.github/actions/create-main-distro-alias with: package-name: autoware-universe - rosdistro: galactic + rosdistro: ${{ needs.load-env.outputs.rosdistro }} tag-name: latest - name: Create alias from 'autoware-universe:{rosdistro}-latest-prebuilt' to 'autoware-universe:latest-prebuilt' uses: ./.github/actions/create-main-distro-alias with: package-name: autoware-universe - rosdistro: galactic + rosdistro: ${{ needs.load-env.outputs.rosdistro }} tag-name: latest-prebuilt - name: Create alias from 'autoware-universe:{rosdistro}-latest-cuda' to 'autoware-universe:latest-cuda' uses: ./.github/actions/create-main-distro-alias with: package-name: autoware-universe - rosdistro: galactic + rosdistro: ${{ needs.load-env.outputs.rosdistro }} tag-name: latest-cuda - name: Create alias from 'autoware-universe:{rosdistro}-latest-prebuilt-cuda' to 'autoware-universe:latest-prebuilt-cuda' uses: ./.github/actions/create-main-distro-alias with: package-name: autoware-universe - rosdistro: galactic + rosdistro: ${{ needs.load-env.outputs.rosdistro }} tag-name: latest-prebuilt-cuda diff --git a/.github/workflows/vcs-import.yaml b/.github/workflows/vcs-import.yaml index c77020ab184..829c1c81e29 100644 --- a/.github/workflows/vcs-import.yaml +++ b/.github/workflows/vcs-import.yaml @@ -5,9 +5,13 @@ on: workflow_dispatch: jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + vcs-import: + needs: load-env runs-on: ubuntu-latest - container: ros:galactic + container: ros:${{ needs.load-env.outputs.rosdistro }} steps: - name: Check out repository uses: actions/checkout@v3 @@ -20,7 +24,7 @@ jobs: - name: Register AutonomouStuff repository uses: autowarefoundation/autoware-github-actions/register-autonomoustuff-repository@v1 with: - rosdistro: galactic + rosdistro: ${{ needs.load-env.outputs.rosdistro }} - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 @@ -40,4 +44,4 @@ jobs: run: | sudo apt-get -y update rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro galactic + DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro ${{ needs.load-env.outputs.rosdistro }} From 4eea23222191426d926637714cb98ada01cb8bc5 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 1 Dec 2022 02:20:58 +0900 Subject: [PATCH 033/380] docs(ansible): simplify manual installation steps (#3093) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- ansible/roles/cuda/README.md | 6 ++++-- ansible/roles/pacmod/README.md | 3 ++- ansible/roles/plotjuggler/README.md | 4 +++- ansible/roles/rmw_implementation/README.md | 4 ++-- ansible/roles/ros2/README.md | 3 ++- ansible/roles/tensorrt/README.md | 4 ++-- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ansible/roles/cuda/README.md b/ansible/roles/cuda/README.md index 8a980676406..815ce0eec67 100644 --- a/ansible/roles/cuda/README.md +++ b/ansible/roles/cuda/README.md @@ -17,6 +17,8 @@ For Universe, the `cuda_version` version can also be found in: [../../playbooks/universe.yaml](../../playbooks/universe.yaml) ```bash +wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env + # Modified from: # https://developer.nvidia.com/cuda-11-4-4-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin @@ -24,8 +26,8 @@ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" sudo apt-get update -cuda_version=11-6 -sudo apt install cuda-${cuda_version} --no-install-recommends +cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}") +sudo apt install cuda-${cuda_version_dashed} --no-install-recommends ``` Perform the post installation actions: diff --git a/ansible/roles/pacmod/README.md b/ansible/roles/pacmod/README.md index 36c4a0ccf93..37f0dfca87f 100644 --- a/ansible/roles/pacmod/README.md +++ b/ansible/roles/pacmod/README.md @@ -14,10 +14,11 @@ For Universe, the `rosdistro` variable can also be found in: [../../playbooks/universe.yaml](../../playbooks/universe.yaml) ```bash +wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env + # Taken from https://github.com/astuff/pacmod3#installation sudo apt install apt-transport-https sudo sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list' sudo apt update -rosdistro=galactic sudo apt install ros-${rosdistro}-pacmod3 ``` diff --git a/ansible/roles/plotjuggler/README.md b/ansible/roles/plotjuggler/README.md index 579f22217eb..0aceac25c4a 100644 --- a/ansible/roles/plotjuggler/README.md +++ b/ansible/roles/plotjuggler/README.md @@ -9,6 +9,8 @@ None. ## Manual Installation ```bash +wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env + sudo apt update && sudo apt install -y \ - ros-galactic-plotjuggler-ros + ros-$rosdistro-plotjuggler-ros ``` diff --git a/ansible/roles/rmw_implementation/README.md b/ansible/roles/rmw_implementation/README.md index 8f5849fdeaf..dfc37c22277 100644 --- a/ansible/roles/rmw_implementation/README.md +++ b/ansible/roles/rmw_implementation/README.md @@ -15,10 +15,10 @@ For Universe, the `rosdistro` and `rmw_implementation` variable can also be foun [../../playbooks/universe.yaml](../../playbooks/universe.yaml) ```bash +wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env + # For details: https://docs.ros.org/en/galactic/How-To-Guides/Working-with-multiple-RMW-implementations.html sudo apt update -rosdistro=galactic -rmw_implementation=rmw_cyclonedds_cpp rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}") sudo apt install ros-${rosdistro}-${rmw_implementation_dashed} diff --git a/ansible/roles/ros2/README.md b/ansible/roles/ros2/README.md index 9eb5ec40bf5..90fd57d5cd0 100644 --- a/ansible/roles/ros2/README.md +++ b/ansible/roles/ros2/README.md @@ -30,6 +30,8 @@ For Universe, the `rosdistro` variable can also be found in: [../../playbooks/universe.yaml](../../playbooks/universe.yaml) ```bash +wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env + # Taken from: https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html # You will need to add the ROS 2 apt repository to your system. First, make sure that the Ubuntu Universe repository is enabled by checking the output of this command. @@ -55,7 +57,6 @@ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-a sudo apt update # Desktop Install -rosdistro=galactic installation_type=desktop sudo apt install ros-${rosdistro}-${installation_type} diff --git a/ansible/roles/tensorrt/README.md b/ansible/roles/tensorrt/README.md index aa88324ad72..0b938ad03a5 100644 --- a/ansible/roles/tensorrt/README.md +++ b/ansible/roles/tensorrt/README.md @@ -15,13 +15,13 @@ For Universe, the `cudnn_version` and `tensorrt_version` variables should be cop [amd64.env](../../../amd64.env) or [arm64.env](../../../arm64.env) depending on the architecture used. ```bash +wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env + # Taken from: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing -cudnn_version=8.4.1.50-1+cuda11.6 sudo apt-get install libcudnn8=${cudnn_version} libcudnn8-dev=${cudnn_version} sudo apt-mark hold libcudnn8 libcudnn8-dev -tensorrt_version=8.4.2-1+cuda11.6 sudo apt-get install libnvinfer8=${tensorrt_version} libnvonnxparsers8=${tensorrt_version} libnvparsers8=${tensorrt_version} libnvinfer-plugin8=${tensorrt_version} libnvinfer-dev=${tensorrt_version} libnvonnxparsers-dev=${tensorrt_version} libnvparsers-dev=${tensorrt_version} libnvinfer-plugin-dev=${tensorrt_version} sudo apt-mark hold libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev ``` From 4de5d8c812b692741563b0812d6da03a7f05c863 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 1 Dec 2022 12:22:42 +0900 Subject: [PATCH 034/380] feat(ansible): verify OS before running playbooks (#3089) * feat(ansible): verify OS before running playbooks Signed-off-by: Kenji Miyake * apply reviews Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- ansible/playbooks/core.yaml | 5 +++++ ansible/playbooks/universe.yaml | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/ansible/playbooks/core.yaml b/ansible/playbooks/core.yaml index 5b08cd863a7..d9851f0fce3 100644 --- a/ansible/playbooks/core.yaml +++ b/ansible/playbooks/core.yaml @@ -1,6 +1,11 @@ - hosts: localhost connection: local pre_tasks: + - name: Verify OS + ansible.builtin.fail: + msg: Only Ubuntu 20.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. + when: ansible_distribution_version != '20.04' + - name: Print args ansible.builtin.debug: msg: diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index ccf16fa0482..778b1d5889c 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -7,6 +7,11 @@ Install NVIDIA libraries? [y/N] private: false pre_tasks: + - name: Verify OS + ansible.builtin.fail: + msg: Only Ubuntu 20.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. + when: ansible_distribution_version != '20.04' + - name: Print args ansible.builtin.debug: msg: @@ -15,6 +20,7 @@ - cuda_version: "{{ cuda_version }}" - cudnn_version: "{{ cudnn_version }}" - tensorrt_version: "{{ tensorrt_version }}" + - name: Show a warning if the NVIDIA libraries will not be installed ansible.builtin.pause: seconds: 10 From b5b46f0415ef01366aa636e67b265f07f93f71f4 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 1 Dec 2022 12:52:26 +0900 Subject: [PATCH 035/380] ci(pre-commit): update commit message (#3094) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4276b3f568d..1f7dbe677f2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,5 @@ ci: - autofix_commit_msg: "ci(pre-commit): autofix" + autofix_commit_msg: "style(pre-commit): autofix" autoupdate_commit_msg: "ci(pre-commit): autoupdate" repos: From 9e35fd1c6f8bb16c166f6408b41f6280ee1356f2 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 1 Dec 2022 21:11:44 +0900 Subject: [PATCH 036/380] build(ROS distribution)!: transition to ROS 2 Humble (#2692) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove Go PPA Signed-off-by: Kenji Miyake docs(ansible/pre_commit): remove adding golang repository for humble (#2837) fix(docs): remove adding golang repository for humble Signed-off-by: M. Fatih Cırıt Signed-off-by: M. Fatih Cırıt * rename galactic to humble Signed-off-by: Kenji Miyake * feat: add ament_cmake fork (#370) Signed-off-by: M. Fatih Cırıt Signed-off-by: M. Fatih Cırıt * revert(autoware.repos): revert "feat: add ament_cmake fork (#370)" (#3054) This reverts commit 0d06dd3ce10ce4e4857822173954a48cb2e91b63. * update hash of grid_map Signed-off-by: Kenji Miyake * chore: remove grid_map from repos (#2864) * use Ubuntu 22.04 and CUDA 11.8 Signed-off-by: Kenji Miyake * build(ansible/ros2_dev_tools): change ros2_dev_tools to follow humble documentation (#3007) Signed-off-by: Shin-kyoto <58775300+Shin-kyoto@users.noreply.github.com> Signed-off-by: Shin-kyoto <58775300+Shin-kyoto@users.noreply.github.com> build(ansible/ros2_dev_tools): follow updated humble documentation (#3020) Signed-off-by: Shin-kyoto <58775300+Shin-kyoto@users.noreply.github.com> Signed-off-by: Shin-kyoto <58775300+Shin-kyoto@users.noreply.github.com> * docs(ansible/cuda): update manual installation steps Signed-off-by: Kenji Miyake * tmp: use ubuntu:22.04 for cuda_base_image Signed-off-by: Kenji Miyake * tmp: add liburcu6 repository for CUDA 20.04 repository Signed-off-by: Kenji Miyake * feat(ansible/playbooks): update Ubuntu version Signed-off-by: Kenji Miyake Signed-off-by: M. Fatih Cırıt Signed-off-by: Kenji Miyake Signed-off-by: M. Fatih Cırıt Signed-off-by: Shin-kyoto <58775300+Shin-kyoto@users.noreply.github.com> Co-authored-by: M. Fatih Cırıt Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> Co-authored-by: Shintaro Tomie <58775300+Shin-kyoto@users.noreply.github.com> --- amd64.env | 6 +-- ansible/playbooks/core.yaml | 4 +- ansible/playbooks/universe.yaml | 4 +- ansible/roles/cuda/README.md | 22 +++++++---- ansible/roles/cuda/tasks/main.yaml | 16 ++++++++ ansible/roles/pre_commit/README.md | 2 - ansible/roles/pre_commit/tasks/main.yaml | 6 --- ansible/roles/rmw_implementation/README.md | 4 +- ansible/roles/ros2/README.md | 4 +- ansible/roles/ros2_dev_tools/README.md | 39 +++++++------------- ansible/roles/ros2_dev_tools/tasks/main.yaml | 38 ++++++------------- autoware.repos | 4 -- 12 files changed, 67 insertions(+), 82 deletions(-) diff --git a/amd64.env b/amd64.env index dad15c2106b..1366bd83c91 100644 --- a/amd64.env +++ b/amd64.env @@ -1,7 +1,7 @@ -rosdistro=galactic +rosdistro=humble rmw_implementation=rmw_cyclonedds_cpp -base_image=ubuntu:20.04 -cuda_base_image=nvidia/cuda:11.6.2-devel-ubuntu20.04 +base_image=ubuntu:22.04 +cuda_base_image=ubuntu:22.04 cuda_version=11.6 cudnn_version=8.4.1.50-1+cuda11.6 tensorrt_version=8.4.2-1+cuda11.6 diff --git a/ansible/playbooks/core.yaml b/ansible/playbooks/core.yaml index d9851f0fce3..4f63b33bf9e 100644 --- a/ansible/playbooks/core.yaml +++ b/ansible/playbooks/core.yaml @@ -3,8 +3,8 @@ pre_tasks: - name: Verify OS ansible.builtin.fail: - msg: Only Ubuntu 20.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. - when: ansible_distribution_version != '20.04' + msg: Only Ubuntu 22.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. + when: ansible_distribution_version != '22.04' - name: Print args ansible.builtin.debug: diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index 778b1d5889c..67f84b8e399 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -9,8 +9,8 @@ pre_tasks: - name: Verify OS ansible.builtin.fail: - msg: Only Ubuntu 20.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. - when: ansible_distribution_version != '20.04' + msg: Only Ubuntu 22.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. + when: ansible_distribution_version != '22.04' - name: Print args ansible.builtin.debug: diff --git a/ansible/roles/cuda/README.md b/ansible/roles/cuda/README.md index 815ce0eec67..858031d5782 100644 --- a/ansible/roles/cuda/README.md +++ b/ansible/roles/cuda/README.md @@ -19,15 +19,23 @@ For Universe, the `cuda_version` version can also be found in: ```bash wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# Modified from: -# https://developer.nvidia.com/cuda-11-4-4-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network -wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin -sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 -sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub -sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" +# Modified from: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network + +# A temporary workaround for Ubuntu 22.04 with the ubuntu2004 repository +if [[ "$(uname -m)" == "x86_64" ]]; then + liburcu6_url=http://archive.ubuntu.com/ubuntu +else + liburcu6_url=http://ports.ubuntu.com/ubuntu-ports +fi +sudo echo "deb $liburcu6_url focal main restricted" > /etc/apt/sources.list.d/focal.list + +# TODO: Use 22.04 in https://github.com/autowarefoundation/autoware/pull/3084. Currently, 20.04 is intentionally used. +os=ubuntu2004 +wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$(uname -m)/cuda-keyring_1.0-1_all.deb +sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt-get update cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}") -sudo apt install cuda-${cuda_version_dashed} --no-install-recommends +sudo apt-get -y install cuda-${cuda_version_dashed} ``` Perform the post installation actions: diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index fd427d430ae..8060d455c9d 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -8,6 +8,22 @@ register: cuda_architecture changed_when: false +- name: (tmp for Ubuntu 22.04) Add liburcu6 repository into sources.list for amd64 + become: true + ansible.builtin.apt_repository: + repo: deb http://archive.ubuntu.com/ubuntu focal main restricted + filename: focal + state: present + when: cuda_architecture.stdout == "x86_64" + +- name: (tmp for Ubuntu 22.04) Add liburcu6 repository into sources.list for arm64 + become: true + ansible.builtin.apt_repository: + repo: deb http://ports.ubuntu.com/ubuntu-ports focal main restricted + filename: focal + state: present + when: cuda_architecture.stdout == "aarch64" + - name: Remove old /etc/apt/sources.list.d/cuda.list become: true ansible.builtin.file: diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index 97a9b2f21c9..46d040f903f 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -17,7 +17,5 @@ The `clang_format_version` variable can also be found in: clang_format_version=14.0.6 pip3 install pre-commit clang-format==${clang_format_version} -# Install Golang (Add Go PPA for shfmt) -sudo add-apt-repository ppa:longsleep/golang-backports sudo apt install golang ``` diff --git a/ansible/roles/pre_commit/tasks/main.yaml b/ansible/roles/pre_commit/tasks/main.yaml index cb6f5305f5c..6a69af8db76 100644 --- a/ansible/roles/pre_commit/tasks/main.yaml +++ b/ansible/roles/pre_commit/tasks/main.yaml @@ -10,12 +10,6 @@ version: "{{ clang_format_version }}" executable: pip3 -# TODO: Remove after we move to Ubuntu 22.04 -- name: Add Go PPA for shfmt - become: true - ansible.builtin.apt_repository: - repo: ppa:longsleep/golang-backports # cspell:disable-line - - name: Install Go become: true ansible.builtin.apt: diff --git a/ansible/roles/rmw_implementation/README.md b/ansible/roles/rmw_implementation/README.md index dfc37c22277..41af1aee5a3 100644 --- a/ansible/roles/rmw_implementation/README.md +++ b/ansible/roles/rmw_implementation/README.md @@ -1,6 +1,6 @@ # rmw_implementation -This role sets up ROS 2 RMW implementation following [this page](https://docs.ros.org/en/galactic/How-To-Guides/Working-with-multiple-RMW-implementations.html). +This role sets up ROS 2 RMW implementation following [this page](https://docs.ros.org/en/humble/How-To-Guides/Working-with-multiple-RMW-implementations.html). ## Inputs @@ -17,7 +17,7 @@ For Universe, the `rosdistro` and `rmw_implementation` variable can also be foun ```bash wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# For details: https://docs.ros.org/en/galactic/How-To-Guides/Working-with-multiple-RMW-implementations.html +# For details: https://docs.ros.org/en/humble/How-To-Guides/Working-with-multiple-RMW-implementations.html sudo apt update rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}") sudo apt install ros-${rosdistro}-${rmw_implementation_dashed} diff --git a/ansible/roles/ros2/README.md b/ansible/roles/ros2/README.md index 90fd57d5cd0..0fd0ce65607 100644 --- a/ansible/roles/ros2/README.md +++ b/ansible/roles/ros2/README.md @@ -1,6 +1,6 @@ # ros2 -This role installs [ROS 2](http://www.ros2.org/) following [this page](https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html). +This role installs [ROS 2](http://www.ros2.org/) following [this page](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html). Additional steps may be needed depending on the `rosdistro` you choose. @@ -32,7 +32,7 @@ For Universe, the `rosdistro` variable can also be found in: ```bash wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# Taken from: https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html +# Taken from: https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html # You will need to add the ROS 2 apt repository to your system. First, make sure that the Ubuntu Universe repository is enabled by checking the output of this command. apt-cache policy | grep universe diff --git a/ansible/roles/ros2_dev_tools/README.md b/ansible/roles/ros2_dev_tools/README.md index 1ee3e379098..6a10a8b5316 100644 --- a/ansible/roles/ros2_dev_tools/README.md +++ b/ansible/roles/ros2_dev_tools/README.md @@ -1,6 +1,6 @@ # ros2_dev_tools -This role installs ROS 2 development tools following [this page](https://docs.ros.org/en/galactic/Installation/Ubuntu-Development-Setup.html). +This role installs ROS 2 development tools following [this page](https://docs.ros.org/en/humble/Installation/Ubuntu-Development-Setup.html). ## Inputs @@ -9,34 +9,23 @@ None. ## Manual Installation ```bash -# Taken from https://docs.ros.org/en/galactic/Installation/Ubuntu-Development-Setup.html +# Taken from https://docs.ros.org/en/humble/Installation/Ubuntu-Development-Setup.html sudo apt update && sudo apt install -y \ - build-essential \ - cmake \ - git \ - python3-colcon-common-extensions \ - python3-flake8 \ + python3-flake8-docstrings \ python3-pip \ python3-pytest-cov \ - python3-rosdep \ - python3-setuptools \ - python3-vcstool \ - wget + ros-dev-tools -# Install some pip packages needed for testing -python3 -m pip install -U \ - flake8-blind-except \ - flake8-builtins \ - flake8-class-newline \ - flake8-comprehensions \ - flake8-deprecated \ - flake8-docstrings \ - flake8-import-order \ - flake8-quotes \ - pytest-repeat \ - pytest-rerunfailures \ - pytest \ - setuptools +sudo apt install -y \ + python3-flake8-blind-except \ + python3-flake8-builtins \ + python3-flake8-class-newline \ + python3-flake8-comprehensions \ + python3-flake8-deprecated \ + python3-flake8-import-order \ + python3-flake8-quotes \ + python3-pytest-repeat \ + python3-pytest-rerunfailures # Initialize rosdep sudo rosdep init diff --git a/ansible/roles/ros2_dev_tools/tasks/main.yaml b/ansible/roles/ros2_dev_tools/tasks/main.yaml index 8c02fe3b55a..e67381179d7 100644 --- a/ansible/roles/ros2_dev_tools/tasks/main.yaml +++ b/ansible/roles/ros2_dev_tools/tasks/main.yaml @@ -2,39 +2,23 @@ become: true ansible.builtin.apt: name: - - build-essential - - cmake - - git - - python3-colcon-common-extensions - python3-colcon-mixin - - python3-flake8 + - python3-flake8-docstrings - python3-pip - python3-pytest-cov - - python3-rosdep - - python3-setuptools - - python3-vcstool - - wget + - ros-dev-tools + - python3-flake8-blind-except + - python3-flake8-builtins + - python3-flake8-class-newline + - python3-flake8-comprehensions + - python3-flake8-deprecated + - python3-flake8-import-order + - python3-flake8-quotes + - python3-pytest-repeat + - python3-pytest-rerunfailures state: latest update_cache: true -- name: Install pip packages - ansible.builtin.pip: - name: - - flake8-blind-except - - flake8-builtins - - flake8-class-newline - - flake8-comprehensions - - flake8-deprecated - - flake8-docstrings - - flake8-import-order - - flake8-quotes - - pytest-repeat - - pytest-rerunfailures - - pytest - - setuptools - state: latest - executable: pip3 - - name: Run 'sudo rosdep init' become: true ansible.builtin.command: diff --git a/autoware.repos b/autoware.repos index 35df0052c02..8a721b6eb13 100644 --- a/autoware.repos +++ b/autoware.repos @@ -33,10 +33,6 @@ repositories: type: git url: https://github.com/tier4/tier4_autoware_msgs.git version: tier4/universe - universe/external/grid_map: - type: git - url: https://github.com/ANYbotics/grid_map.git - version: ba2f9cb6e62f7ee9c5bac7401391a211e442e459 universe/external/morai_msgs: type: git url: https://github.com/MORAI-Autonomous/MORAI-ROS2_morai_msgs.git From 24b1d457b33c59c9a87749ed2c1ea2ecf9230219 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 1 Dec 2022 21:42:03 +0900 Subject: [PATCH 037/380] ci: remove Humble CI workflows (#3091) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .../workflows/build-humble-self-hosted.yaml | 40 ------------ .github/workflows/build-humble.yaml | 45 ------------- ...ker-build-and-push-humble-self-hosted.yaml | 65 ------------------- .../docker-build-and-push-humble.yaml | 60 ----------------- 4 files changed, 210 deletions(-) delete mode 100644 .github/workflows/build-humble-self-hosted.yaml delete mode 100644 .github/workflows/build-humble.yaml delete mode 100644 .github/workflows/docker-build-and-push-humble-self-hosted.yaml delete mode 100644 .github/workflows/docker-build-and-push-humble.yaml diff --git a/.github/workflows/build-humble-self-hosted.yaml b/.github/workflows/build-humble-self-hosted.yaml deleted file mode 100644 index 477a0d4567c..00000000000 --- a/.github/workflows/build-humble-self-hosted.yaml +++ /dev/null @@ -1,40 +0,0 @@ -name: build-humble-self-hosted - -on: - schedule: - - cron: 0 12 * * * - workflow_dispatch: - -jobs: - build-humble-self-hosted: - runs-on: [self-hosted, linux, ARM64] - container: ubuntu:22.04 - steps: - - name: Check out repository - uses: actions/checkout@v3 - with: - ref: humble - - - name: Run setup script - run: | - ./setup-dev-env.sh -y universe - - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos - - - name: Run vcs export - run: | - vcs export --exact src || true - - - name: Run rosdep install - run: | - sudo apt-get -y update - rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro humble - - - name: Build - run: | - . /opt/ros/humble/setup.sh - colcon build --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release diff --git a/.github/workflows/build-humble.yaml b/.github/workflows/build-humble.yaml deleted file mode 100644 index b8be1706cdb..00000000000 --- a/.github/workflows/build-humble.yaml +++ /dev/null @@ -1,45 +0,0 @@ -name: build-humble - -on: - schedule: - - cron: 0 12 * * * - workflow_dispatch: - -jobs: - build-humble: - runs-on: ubuntu-latest - container: ubuntu:22.04 - steps: - - name: Check out repository - uses: actions/checkout@v3 - with: - ref: humble - - - name: Run setup script - run: | - ./setup-dev-env.sh -y - - - name: Set git config - uses: autowarefoundation/autoware-github-actions/set-git-config@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos - - - name: Run vcs export - run: | - vcs export --exact src || true - - - name: Run rosdep install - run: | - sudo apt-get -y update - rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro humble - - - name: Build - run: | - . /opt/ros/humble/setup.sh - colcon build --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release diff --git a/.github/workflows/docker-build-and-push-humble-self-hosted.yaml b/.github/workflows/docker-build-and-push-humble-self-hosted.yaml deleted file mode 100644 index 805e5fdcb23..00000000000 --- a/.github/workflows/docker-build-and-push-humble-self-hosted.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: docker-build-and-push-humble-self-hosted - -on: - push: - tags: - - v* - - "[0-9]+.[0-9]+*" - schedule: - - cron: 0 0 1,15 * * - workflow_dispatch: - -jobs: - docker-build-and-push-humble-self-hosted: - runs-on: [self-hosted, linux, ARM64] - strategy: - fail-fast: false - matrix: - name: - - no-cuda - - cuda - include: - - name: no-cuda - base_image_env: base_image - setup-args: --no-nvidia - additional-tag-suffix: "" - - name: cuda - base_image_env: cuda_base_image - setup-args: --no-cuda-drivers - additional-tag-suffix: -cuda - steps: - # https://github.com/actions/checkout/issues/211 - - name: Change permission of workspace - run: | - sudo chown -R $USER:$USER ${{ github.workspace }} - - - name: Check out repository - uses: actions/checkout@v3 - with: - ref: humble - - - name: Free disk space - uses: ./.github/actions/free-disk-space - - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - - name: Build 'autoware-universe' - uses: ./.github/actions/docker-build-and-push - with: - bake-target: autoware-universe - build-args: | - *.platform=linux/arm64 - *.args.ROS_DISTRO=${{ env.rosdistro }} - *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} - *.args.SETUP_ARGS=${{ matrix.setup-args }} - tag-prefix: ${{ env.rosdistro }}- - tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 - - - name: Show disk space - run: | - df -h diff --git a/.github/workflows/docker-build-and-push-humble.yaml b/.github/workflows/docker-build-and-push-humble.yaml deleted file mode 100644 index 50733f2415a..00000000000 --- a/.github/workflows/docker-build-and-push-humble.yaml +++ /dev/null @@ -1,60 +0,0 @@ -name: docker-build-and-push-humble - -on: - push: - tags: - - v* - - "[0-9]+.[0-9]+*" - schedule: - - cron: 0 0 1,15 * * - workflow_dispatch: - -jobs: - docker-build-and-push-humble: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - name: - - no-cuda - - cuda - include: - - name: no-cuda - base_image_env: base_image - setup-args: --no-nvidia - additional-tag-suffix: "" - - name: cuda - base_image_env: cuda_base_image - setup-args: --no-cuda-drivers - additional-tag-suffix: -cuda - steps: - - name: Check out repository - uses: actions/checkout@v3 - with: - ref: humble - - - name: Free disk space - uses: ./.github/actions/free-disk-space - - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - - name: Build 'autoware-universe' - uses: ./.github/actions/docker-build-and-push - with: - bake-target: autoware-universe - build-args: | - *.platform=linux/amd64 - *.args.ROS_DISTRO=${{ env.rosdistro }} - *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} - *.args.SETUP_ARGS=${{ matrix.setup-args }} - tag-prefix: ${{ env.rosdistro }}- - tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 - - - name: Show disk space - run: | - df -h From d5e66dea220f27de65327fb087522ca0a5550c9f Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Fri, 2 Dec 2022 10:46:33 +0900 Subject: [PATCH 038/380] ci(mirror-main-branch): add a new workflow to mirror the main branch to the main distro branch (#3098) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .github/workflows/mirror-main-branch.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/mirror-main-branch.yaml diff --git a/.github/workflows/mirror-main-branch.yaml b/.github/workflows/mirror-main-branch.yaml new file mode 100644 index 00000000000..504867e36ed --- /dev/null +++ b/.github/workflows/mirror-main-branch.yaml @@ -0,0 +1,15 @@ +name: mirror-main-branch + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + mirror-main-branch: + runs-on: ubuntu-latest + steps: + - uses: zofrex/mirror-branch@v1 + with: + target-branch: humble From 4ba27ffc30bc08ce53039fa146d4559b9d2848d6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 2 Dec 2022 11:49:19 +0900 Subject: [PATCH 039/380] ci(pre-commit): autoupdate (#2725) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.3.0 → v4.4.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.3.0...v4.4.0) - [github.com/igorshubovych/markdownlint-cli: v0.31.1 → v0.32.2](https://github.com/igorshubovych/markdownlint-cli/compare/v0.31.1...v0.32.2) - [github.com/pre-commit/mirrors-prettier: v2.7.1 → v3.0.0-alpha.4](https://github.com/pre-commit/mirrors-prettier/compare/v2.7.1...v3.0.0-alpha.4) - [github.com/adrienverge/yamllint: v1.26.3 → v1.28.0](https://github.com/adrienverge/yamllint/compare/v1.26.3...v1.28.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f7dbe677f2..dbff7a236fe 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ ci: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v4.4.0 hooks: - id: check-json - id: check-merge-conflict @@ -18,18 +18,18 @@ repos: args: [--markdown-linebreak-ext=md] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.31.1 + rev: v0.32.2 hooks: - id: markdownlint args: [-c, .markdownlint.yaml, --fix] - repo: https://github.com/pre-commit/mirrors-prettier - rev: v2.7.1 + rev: v3.0.0-alpha.4 hooks: - id: prettier - repo: https://github.com/adrienverge/yamllint - rev: v1.26.3 + rev: v1.28.0 hooks: - id: yamllint From 07e8ea107b5c88e987425b5abd93da1ac6a6440d Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 2 Dec 2022 11:51:38 +0900 Subject: [PATCH 040/380] ci(pre-commit-ansible): autoupdate (#3059) Signed-off-by: GitHub Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index fdb6b826d90..8e446c97a43 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,5 +1,5 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v6.8.6 + rev: v6.9.0 hooks: - id: ansible-lint From 494f8fa3fa253bd3dc8d3cc6981241172413b329 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 2 Dec 2022 03:22:18 +0000 Subject: [PATCH 041/380] chore: update tool versions (#2848) Signed-off-by: GitHub Signed-off-by: GitHub Co-authored-by: kenji-miyake --- ansible/roles/pre_commit/README.md | 2 +- ansible/roles/pre_commit/defaults/main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index 46d040f903f..e10687937a7 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -14,7 +14,7 @@ The `clang_format_version` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) ```bash -clang_format_version=14.0.6 +clang_format_version=15.0.4 pip3 install pre-commit clang-format==${clang_format_version} sudo apt install golang diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml index 4e241783e11..c4e210aa448 100644 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ b/ansible/roles/pre_commit/defaults/main.yaml @@ -1 +1 @@ -clang_format_version: 14.0.6 +clang_format_version: 15.0.4 From d6abc706c0a3ee972ba15ffdcbe1c23037b1b372 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Sat, 3 Dec 2022 12:05:50 +0900 Subject: [PATCH 042/380] ci(update-tool-versions): update clang-format version check (#3099) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .github/workflows/update-tool-versions.yaml | 7 +++++-- ansible/roles/pre_commit/README.md | 2 +- ansible/roles/pre_commit/defaults/main.yaml | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 6dbeead889b..8c4b5875b43 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -25,8 +25,11 @@ jobs: - name: Get clang-format version id: get-clang-format-version run: | - latest_tag_name=$(gh release view --repo https://github.com/llvm/llvm-project --json tagName --jq ".tagName") - echo ::set-output name=version::$(echo "$latest_tag_name" | sd '.*-(.*)' '$1') + function get-latest-pip-version() { + pip index versions "$1" 2>/dev/null | head -n1 | sd '.*\((.*)\)' '$1' + } + + echo ::set-output name=version::$(get-latest-pip-version clang-format) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index e10687937a7..46d040f903f 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -14,7 +14,7 @@ The `clang_format_version` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) ```bash -clang_format_version=15.0.4 +clang_format_version=14.0.6 pip3 install pre-commit clang-format==${clang_format_version} sudo apt install golang diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml index c4e210aa448..4e241783e11 100644 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ b/ansible/roles/pre_commit/defaults/main.yaml @@ -1 +1 @@ -clang_format_version: 15.0.4 +clang_format_version: 14.0.6 From 14e1486fe469f8becb1a91b05a09c45160cd6d6d Mon Sep 17 00:00:00 2001 From: Maxime CLEMENT <78338830+maxime-clem@users.noreply.github.com> Date: Wed, 7 Dec 2022 15:50:51 +0900 Subject: [PATCH 043/380] feat(ansible): add option to install nvidia+cuda drivers with ansible (#3008) Signed-off-by: Maxime CLEMENT Signed-off-by: Maxime CLEMENT --- ansible/playbooks/docker.yaml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ansible/playbooks/docker.yaml b/ansible/playbooks/docker.yaml index 7948de7ad90..538315cd3e8 100644 --- a/ansible/playbooks/docker.yaml +++ b/ansible/playbooks/docker.yaml @@ -1,6 +1,26 @@ - hosts: localhost connection: local + vars_prompt: + - name: prompt_install_nvidia + prompt: |- + [Warning] Some Autoware components depend on the CUDA, cuDNN and TensorRT NVIDIA libraries which have end-user license agreements that should be reviewed before installation. + Install NVIDIA libraries? [y/N] + private: false + pre_tasks: + - name: Print args + ansible.builtin.debug: + msg: + - cuda_version: "{{ cuda_version }}" + - cudnn_version: "{{ cudnn_version }}" + - name: Show a warning if the NVIDIA libraries will not be installed + ansible.builtin.pause: + seconds: 10 + prompt: | + [Warning] Skipping installation of NVIDIA libraries. Please manually install them if you plan to use any dependent components. + when: prompt_install_nvidia != 'y' roles: + - role: autoware.dev_env.cuda + when: prompt_install_nvidia == 'y' and install_devel == 'true' - role: autoware.dev_env.docker_engine - role: autoware.dev_env.nvidia_docker - role: autoware.dev_env.rocker From 9da9b5e25d40b5c9d4d7141ef807325de2077bcf Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Fri, 9 Dec 2022 16:31:51 +0900 Subject: [PATCH 044/380] fix(.webauto-ci): update Webauto CI for humble (#3105) Signed-off-by: mitsudome-r Signed-off-by: mitsudome-r --- .webauto-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.webauto-ci.yaml b/.webauto-ci.yaml index 7e1e4470a51..95995293ddf 100644 --- a/.webauto-ci.yaml +++ b/.webauto-ci.yaml @@ -3,7 +3,7 @@ version: 2 artifacts: - name: main build: - type: tier4/iv/main/amd64/v2 + type: tier4/universe/main/amd64/v1 simulations: - name: lexus_planning_sim From d34355c8d5ce26405546c183405f6fa0f76e001e Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 22 Dec 2022 15:32:39 +0900 Subject: [PATCH 045/380] chore(pre-commit workflows): add comments to recommend using pre-commit.ci (#3160) Signed-off-by: Kenji Miyake Signed-off-by: Kenji Miyake --- .github/workflows/pre-commit-autoupdate.yaml | 2 +- .github/workflows/pre-commit.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml index f6ed17e404a..9646cfa3a64 100644 --- a/.github/workflows/pre-commit-autoupdate.yaml +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -7,7 +7,7 @@ on: jobs: check-secret: - if: ${{ github.event.repository.private }} + if: ${{ github.event.repository.private }} # Use pre-commit.ci for public repositories uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 secrets: secret: ${{ secrets.APP_ID }} diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 7fd1cc90fe9..bda722c87ef 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -5,7 +5,7 @@ on: jobs: pre-commit: - if: ${{ github.event.repository.private }} + if: ${{ github.event.repository.private }} # Use pre-commit.ci for public repositories runs-on: ubuntu-latest steps: - name: Generate token From e5e1f555c3862d604d88742926e462c723a7975f Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Fri, 3 Feb 2023 13:23:17 +0900 Subject: [PATCH 046/380] fix(docker): force docker image building without cache (#3241) Signed-off-by: Vincent Richard --- docker/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/build.sh b/docker/build.sh index ed72fabc446..fb5d7954406 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -52,7 +52,7 @@ fi export BUILDKIT_STEP_LOG_MAX_SIZE=10000000 set -x -docker buildx bake --load --progress=plain -f "$SCRIPT_DIR/autoware-universe/docker-bake.hcl" \ +docker buildx bake --no-cache --load --progress=plain -f "$SCRIPT_DIR/autoware-universe/docker-bake.hcl" \ --set "*.context=$WORKSPACE_ROOT" \ --set "*.ssh=default" \ --set "*.platform=$platform" \ From 3d4a0fd3b33eede70bb457db46d380aa067c3b63 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Fri, 3 Feb 2023 20:37:13 +0900 Subject: [PATCH 047/380] fix(docker): replace ADD by RUN curl (#3239) Fix `invalid not-modified ETag` error Signed-off-by: Vincent Richard --- docker/autoware-universe/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/autoware-universe/Dockerfile b/docker/autoware-universe/Dockerfile index 6b75784ddb4..38a998158d7 100644 --- a/docker/autoware-universe/Dockerfile +++ b/docker/autoware-universe/Dockerfile @@ -43,10 +43,10 @@ RUN rm -rf \ /etc/apt/sources.list.d/nvidia-docker.list ## Register Vulkan GPU vendors -ADD "https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json" /etc/vulkan/icd.d/nvidia_icd.json -RUN chmod 644 /etc/vulkan/icd.d/nvidia_icd.json -ADD "https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json" /etc/glvnd/egl_vendor.d/10_nvidia.json -RUN chmod 644 /etc/glvnd/egl_vendor.d/10_nvidia.json +RUN curl https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json -o /etc/vulkan/icd.d/nvidia_icd.json \ + && chmod 644 /etc/vulkan/icd.d/nvidia_icd.json +RUN curl https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json -o /etc/glvnd/egl_vendor.d/10_nvidia.json \ + && chmod 644 /etc/glvnd/egl_vendor.d/10_nvidia.json ## Register OpenCL GPU vendors RUN mkdir -p /etc/OpenCL/vendors \ From 8e40b92aee7bf7ddf5652cb348c1721510c7a890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Sat, 4 Feb 2023 10:05:03 +0300 Subject: [PATCH 048/380] chore: add .fdignore file to allow fd in src (#3247) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .fdignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .fdignore diff --git a/.fdignore b/.fdignore new file mode 100644 index 00000000000..fc25c6acba9 --- /dev/null +++ b/.fdignore @@ -0,0 +1 @@ +!/src/ From 18d7f6f22a11582aea568566e6bde77d42c1d794 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Tue, 7 Feb 2023 12:36:55 +0900 Subject: [PATCH 049/380] feat(docker): add --no-prebuilt option to skip prebuilt (#3253) Signed-off-by: Vincent Richard Co-authored-by: Vincent Richard --- docker/build.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docker/build.sh b/docker/build.sh index fb5d7954406..2ed83fe1db0 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -16,6 +16,9 @@ while [ "$1" != "" ]; do option_platform="$2" shift ;; + --no-prebuilt) + option_no_prebuilt=true + ;; *) args+=("$1") ;; @@ -32,6 +35,14 @@ else image_name_suffix="-cuda" fi +# Set prebuilt options +if [ "$option_no_prebuilt" = "true" ]; then + targets="devel" +else + # default targets include devel and prebuilt + targets="" +fi + # Set platform if [ -n "$option_platform" ]; then platform="$option_platform" @@ -60,5 +71,6 @@ docker buildx bake --no-cache --load --progress=plain -f "$SCRIPT_DIR/autoware-u --set "*.args.BASE_IMAGE=$base_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "devel.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest$image_name_suffix" \ - --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest-prebuilt$image_name_suffix" + --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest-prebuilt$image_name_suffix" \ + "$targets" set +x From ea95d2dc1a9f43e6197171b5f061c4a61181d552 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 9 Feb 2023 11:24:13 +0900 Subject: [PATCH 050/380] ci(pre-commit): disable autoupdate (#3263) --- .pre-commit-config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index dbff7a236fe..2a519483b09 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,5 @@ ci: autofix_commit_msg: "style(pre-commit): autofix" - autoupdate_commit_msg: "ci(pre-commit): autoupdate" repos: - repo: https://github.com/pre-commit/pre-commit-hooks From f5af0c55396016f42fb2b7d5aaad1fe38e85cf0a Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 9 Feb 2023 11:37:22 +0900 Subject: [PATCH 051/380] ci(pre-commit-autoupdate): enable also for public repositories (#3264) --- .github/workflows/pre-commit-autoupdate.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml index 9646cfa3a64..02e3ab2c678 100644 --- a/.github/workflows/pre-commit-autoupdate.yaml +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -7,7 +7,6 @@ on: jobs: check-secret: - if: ${{ github.event.repository.private }} # Use pre-commit.ci for public repositories uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1 secrets: secret: ${{ secrets.APP_ID }} From 964ad927cd6695cd6645dbafda6f43224f274307 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 11:40:02 +0900 Subject: [PATCH 052/380] ci(pre-commit): autoupdate (#3131) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/igorshubovych/markdownlint-cli: v0.32.2 → v0.33.0](https://github.com/igorshubovych/markdownlint-cli/compare/v0.32.2...v0.33.0) - [github.com/adrienverge/yamllint: v1.28.0 → v1.29.0](https://github.com/adrienverge/yamllint/compare/v1.28.0...v1.29.0) - [github.com/shellcheck-py/shellcheck-py: v0.8.0.4 → v0.9.0.2](https://github.com/shellcheck-py/shellcheck-py/compare/v0.8.0.4...v0.9.0.2) - [github.com/scop/pre-commit-shfmt: v3.5.1-1 → v3.6.0-1](https://github.com/scop/pre-commit-shfmt/compare/v3.5.1-1...v3.6.0-1) - [github.com/AleksaC/hadolint-py: v2.10.0 → v2.12.0.2](https://github.com/AleksaC/hadolint-py/compare/v2.10.0...v2.12.0.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2a519483b09..e309548ac61 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: args: [--markdown-linebreak-ext=md] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.32.2 + rev: v0.33.0 hooks: - id: markdownlint args: [-c, .markdownlint.yaml, --fix] @@ -28,23 +28,23 @@ repos: - id: prettier - repo: https://github.com/adrienverge/yamllint - rev: v1.28.0 + rev: v1.29.0 hooks: - id: yamllint - repo: https://github.com/shellcheck-py/shellcheck-py - rev: v0.8.0.4 + rev: v0.9.0.2 hooks: - id: shellcheck - repo: https://github.com/scop/pre-commit-shfmt - rev: v3.5.1-1 + rev: v3.6.0-1 hooks: - id: shfmt args: [-w, -s, -i=4] - repo: https://github.com/AleksaC/hadolint-py - rev: v2.10.0 + rev: v2.12.0.2 hooks: - id: hadolint From cf0e53b2b9ca5582a11c4b05b8e1c6d1589e66c7 Mon Sep 17 00:00:00 2001 From: taikitanaka3 <65527974+taikitanaka3@users.noreply.github.com> Date: Mon, 27 Feb 2023 15:32:26 +0900 Subject: [PATCH 053/380] fix(setup): install pip in the setup script (#3290) fix: pip install ansible Signed-off-by: taikitanaka3 --- setup-dev-env.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/setup-dev-env.sh b/setup-dev-env.sh index af7090c6ed8..7fe21367f45 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -113,10 +113,15 @@ if ! (command -v git >/dev/null 2>&1); then sudo apt-get -y install git fi +# Install pip for ansible +if ! (python3 -m pip --version >/dev/null 2>&1); then + sudo apt-get -y update + sudo apt-get -y install python3-pip python3-venv +fi + # Install pipx for ansible if ! (python3 -m pipx --version >/dev/null 2>&1); then sudo apt-get -y update - sudo apt-get -y install python3-pip python3-venv python3 -m pip install --user pipx fi From 7576e26744e364c256d6bcb56fe3956a2ef103e2 Mon Sep 17 00:00:00 2001 From: Cai Yuexiang <58507735+caiyuexiang@users.noreply.github.com> Date: Thu, 2 Mar 2023 13:31:33 +0800 Subject: [PATCH 054/380] feat(setup): change option --no-dev to --runtime (#3297) Signed-off-by: yuexiang.cai --- setup-dev-env.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 7fe21367f45..da3589512a0 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -27,9 +27,9 @@ while [ "$1" != "" ]; do # Disable installation of 'cuda-drivers' in the role 'cuda'. option_no_cuda_drivers=true ;; - --no-dev) - # Disable installation dev packages . - option_no_dev=true + --runtime) + # Disable installation dev package of role 'cuda' and 'tensorrt'. + option_runtime=true ;; *) args+=("$1") @@ -82,8 +82,9 @@ if [ "$option_no_cuda_drivers" = "true" ]; then fi # Check installation of dev package -if [ "$option_no_dev" = "true" ]; then +if [ "$option_runtime" = "true" ]; then ansible_args+=("--extra-vars" "install_devel=false") + # ROS installation type, default "desktop" ansible_args+=("--extra-vars" "installation_type=ros-base") else ansible_args+=("--extra-vars" "install_devel=true") From 355538322f9fe8edd21cbbf37af623bb7a98ca8a Mon Sep 17 00:00:00 2001 From: Shark <71419791+Sharrrrk@users.noreply.github.com> Date: Thu, 2 Mar 2023 16:15:19 +0800 Subject: [PATCH 055/380] perf(docker): reduce prebuilt docker image size (#2922) * perf(docker): reduce prebuilt docker image size Signed-off-by: Shark Liu * fix(docker): ignore DL3059 and minor fixes Signed-off-by: Shark Liu * fix(docker): fix COPY path of install Signed-off-by: Shark Liu * perf(docker): reduce prebuilt docker image size Signed-off-by: Shark Liu * fix(docker): update install setup param Signed-off-by: Shark Liu * perf(docker): reduce prebuilt docker image size Signed-off-by: Shark Liu * fix(docker): ignore DL3059 and minor fixes Signed-off-by: Shark Liu * ci(pre-commit): autofix * fix(docker): fix COPY path of install Signed-off-by: Shark Liu * feat(setup): add install_devel option for package ccache, pre_commit, ros2_dev_tools Signed-off-by: Shark Liu * fix(docker): install ros-base according to option --runtime Signed-off-by: Shark Liu --------- Signed-off-by: Shark Liu Co-authored-by: Shark Liu Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ...ocker-build-and-push-main-self-hosted.yaml | 1 + .../workflows/docker-build-and-push-main.yaml | 1 + amd64.env | 1 + ansible/playbooks/universe.yaml | 2 + docker/autoware-universe/Dockerfile | 59 ++++++++++++++++++- docker/build.sh | 1 + 6 files changed, 64 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index e6e78011179..e2c435fc0ee 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -54,6 +54,7 @@ jobs: *.platform=linux/arm64 *.args.ROS_DISTRO=${{ env.rosdistro }} *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} *.args.SETUP_ARGS=${{ matrix.setup-args }} tag-prefix: ${{ env.rosdistro }}- tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 85da95d6d81..6f71ac71560 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -49,6 +49,7 @@ jobs: *.platform=linux/amd64 *.args.ROS_DISTRO=${{ env.rosdistro }} *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} *.args.SETUP_ARGS=${{ matrix.setup-args }} tag-prefix: ${{ env.rosdistro }}- tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 diff --git a/amd64.env b/amd64.env index 1366bd83c91..afa17255034 100644 --- a/amd64.env +++ b/amd64.env @@ -2,6 +2,7 @@ rosdistro=humble rmw_implementation=rmw_cyclonedds_cpp base_image=ubuntu:22.04 cuda_base_image=ubuntu:22.04 +prebuilt_base_image=ubuntu:22.04 cuda_version=11.6 cudnn_version=8.4.1.50-1+cuda11.6 tensorrt_version=8.4.2-1+cuda11.6 diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index 67f84b8e399..e062a29308b 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -31,8 +31,10 @@ # Core - role: autoware.dev_env.autoware_core - role: autoware.dev_env.ccache + when: install_devel == 'true' - role: autoware.dev_env.plotjuggler - role: autoware.dev_env.pre_commit + when: install_devel == 'true' - role: autoware.dev_env.ros2 - role: autoware.dev_env.ros2_dev_tools - role: autoware.dev_env.rmw_implementation diff --git a/docker/autoware-universe/Dockerfile b/docker/autoware-universe/Dockerfile index 38a998158d7..9af0b8293fe 100644 --- a/docker/autoware-universe/Dockerfile +++ b/docker/autoware-universe/Dockerfile @@ -1,4 +1,6 @@ +# Image args should come at the beginning. ARG BASE_IMAGE +ARG PREBUILT_BASE_IMAGE # hadolint ignore=DL3006 FROM $BASE_IMAGE as devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -58,7 +60,7 @@ RUN mkdir -p /etc/OpenCL/vendors \ RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc CMD ["/bin/bash"] -FROM devel as prebuilt +FROM devel as builder SHELL ["/bin/bash", "-o", "pipefail", "-c"] ## Build and change permission for runtime data conversion @@ -66,6 +68,61 @@ RUN source /opt/ros/"$ROS_DISTRO"/setup.bash \ && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release \ && find /autoware/install -type d -exec chmod 777 {} \; +# hadolint ignore=DL3006 +FROM $PREBUILT_BASE_IMAGE as prebuilt + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ARG ROS_DISTRO +ARG SETUP_ARGS + +## Install apt packages +# hadolint ignore=DL3008 +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ + git \ + ssh \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +## Copy files +COPY autoware.repos setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ +COPY ansible/ /autoware/ansible/ +WORKDIR /autoware +RUN ls /autoware + +## Add GitHub to known hosts for private repositories +RUN mkdir -p ~/.ssh \ + && ssh-keyscan github.com >> ~/.ssh/known_hosts + +## Set up runtime environment +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y $SETUP_ARGS --no-cuda-drivers --runtime universe \ + && pip uninstall -y ansible ansible-core \ + && mkdir src \ + && vcs import src < autoware.repos \ + && rosdep update \ + && DEBIAN_FRONTEND=noninteractive rosdep install -y --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ + && rm -rf src \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +## Copy install folder from builder +COPY --from=builder /autoware/install/ /autoware/install/ + +## Clean up unnecessary files +RUN rm -rf \ + "$HOME"/.cache \ + /etc/apt/sources.list.d/cuda*.list \ + /etc/apt/sources.list.d/docker.list \ + /etc/apt/sources.list.d/nvidia-docker.list + +## Register Vulkan GPU vendors +ADD "https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json" /etc/vulkan/icd.d/nvidia_icd.json +RUN chmod 644 /etc/vulkan/icd.d/nvidia_icd.json +ADD "https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json" /etc/glvnd/egl_vendor.d/10_nvidia.json +RUN chmod 644 /etc/glvnd/egl_vendor.d/10_nvidia.json + ## Create entrypoint +# hadolint ignore=DL3059 RUN echo "source /autoware/install/setup.bash" > /etc/bash.bashrc CMD ["/bin/bash"] diff --git a/docker/build.sh b/docker/build.sh index 2ed83fe1db0..1648ab62080 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -69,6 +69,7 @@ docker buildx bake --no-cache --load --progress=plain -f "$SCRIPT_DIR/autoware-u --set "*.platform=$platform" \ --set "*.args.ROS_DISTRO=$rosdistro" \ --set "*.args.BASE_IMAGE=$base_image" \ + --set "*.args.PREBUILT_BASE_IMAGE=$prebuilt_base_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "devel.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest$image_name_suffix" \ --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest-prebuilt$image_name_suffix" \ From 33e39f6525cc6a059c1242ba6f6b64e616a100ff Mon Sep 17 00:00:00 2001 From: maleicacid <4982384+kazuki0824@users.noreply.github.com> Date: Sun, 5 Mar 2023 18:34:56 +0900 Subject: [PATCH 056/380] fix(docker): avoid empty string in bake's arguments when `targets` not specified (#3303) * fix(docker): fix insufficient arguments in docker/build.sh when `targets` not specied Signed-off-by: maleicacid * style(pre-commit): autofix * fix(docker): avoid empty string in bake's arguments when `targets` not specified Signed-off-by: maleicacid --------- Signed-off-by: maleicacid Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docker/build.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index 1648ab62080..3edf7085be4 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -37,10 +37,10 @@ fi # Set prebuilt options if [ "$option_no_prebuilt" = "true" ]; then - targets="devel" + targets=("devel") else # default targets include devel and prebuilt - targets="" + targets=() fi # Set platform @@ -69,9 +69,8 @@ docker buildx bake --no-cache --load --progress=plain -f "$SCRIPT_DIR/autoware-u --set "*.platform=$platform" \ --set "*.args.ROS_DISTRO=$rosdistro" \ --set "*.args.BASE_IMAGE=$base_image" \ - --set "*.args.PREBUILT_BASE_IMAGE=$prebuilt_base_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "devel.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest$image_name_suffix" \ --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest-prebuilt$image_name_suffix" \ - "$targets" + "${targets[@]}" set +x From dfefdef4d308a4418097a6d6b9b67b588c061fe8 Mon Sep 17 00:00:00 2001 From: Shumpei Wakabayashi <42209144+shmpwk@users.noreply.github.com> Date: Thu, 9 Mar 2023 17:10:15 +0900 Subject: [PATCH 057/380] fix(docker/build.sh): args prebuilt_base_image (#3327) fix: args prebuilt_base_image Signed-off-by: Shumpei Wakabayashi --- docker/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/build.sh b/docker/build.sh index 3edf7085be4..803040ad41a 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -69,6 +69,7 @@ docker buildx bake --no-cache --load --progress=plain -f "$SCRIPT_DIR/autoware-u --set "*.platform=$platform" \ --set "*.args.ROS_DISTRO=$rosdistro" \ --set "*.args.BASE_IMAGE=$base_image" \ + --set "*.args.PREBUILT_BASE_IMAGE=$prebuilt_base_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "devel.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest$image_name_suffix" \ --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest-prebuilt$image_name_suffix" \ From df54cf6403ce0dad65db05ddb27819a6b7de888f Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:45:51 +0900 Subject: [PATCH 058/380] ci(pre-commit-optional): autoupdate (#3349) Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index e0019e10d52..caa92d0812a 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.10.3 + rev: v3.11.0 hooks: - id: markdown-link-check args: [--config=.markdown-link-check.json] From af7436f0567e8e98cb885b7ec2548663d440a563 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Sun, 26 Mar 2023 11:47:43 +0900 Subject: [PATCH 059/380] fix(docker): broken OpenGL with old mesa libs (#3350) * fix(docker): broken OpenGL with old mesa libs Signed-off-by: Vincent Richard * docs(docker): add remainder for later ubuntu versions Signed-off-by: Vincent Richard * chore(docker): suppress lint warn Signed-off-by: Vincent Richard * fix(docker): add --no-install-recommends Signed-off-by: Vincent Richard --------- Signed-off-by: Vincent Richard Signed-off-by: Vincent Richard --- docker/autoware-universe/Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docker/autoware-universe/Dockerfile b/docker/autoware-universe/Dockerfile index 9af0b8293fe..a7e1465f0f9 100644 --- a/docker/autoware-universe/Dockerfile +++ b/docker/autoware-universe/Dockerfile @@ -55,6 +55,17 @@ RUN mkdir -p /etc/OpenCL/vendors \ && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd \ && chmod 644 /etc/OpenCL/vendors/nvidia.icd +## TODO: remove/re-evaluate after Ubuntu 24.04 is released +## Fix OpenGL issues (e.g. black screen in rviz2) due to old mesa lib in Ubuntu 22.04 +## See https://github.com/autowarefoundation/autoware.universe/issues/2789 +# hadolint ignore=DL3008 +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y software-properties-common \ + && apt-add-repository ppa:kisak/kisak-mesa \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ + libegl-mesa0 libegl1-mesa-dev libgbm-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libglapi-mesa libglx-mesa0 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + ## Create entrypoint # hadolint ignore=DL3059 RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc From 85855048ddfe453fe202c5ff53a49066341e674c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 03:12:39 +0000 Subject: [PATCH 060/380] chore(deps): replace peter-evans/enable-pull-request-automerge with GitHub CLI (#3364) * chore(deps): bump peter-evans/enable-pull-request-automerge from 2 to 3 Bumps [peter-evans/enable-pull-request-automerge](https://github.com/peter-evans/enable-pull-request-automerge) from 2 to 3. - [Release notes](https://github.com/peter-evans/enable-pull-request-automerge/releases) - [Commits](https://github.com/peter-evans/enable-pull-request-automerge/compare/v2...v3) --- updated-dependencies: - dependency-name: peter-evans/enable-pull-request-automerge dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Update update-tool-versions.yaml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> --- .github/workflows/update-tool-versions.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 8c4b5875b43..33242aea7bc 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -62,8 +62,6 @@ jobs: - name: Enable auto-merge if: ${{ steps.create-pr.outputs.pull-request-operation == 'created' }} - uses: peter-evans/enable-pull-request-automerge@v2 - with: - token: ${{ steps.generate-token.outputs.token }} - pull-request-number: ${{ steps.create-pr.outputs.pull-request-number }} - merge-method: squash + run: gh pr merge --squash --auto "${{ steps.create-pr.outputs.pull-request-number }}" + env: + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} From 44c90dd5eadd11ece4b0c577341f71edc0561fc7 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 13:19:19 +0900 Subject: [PATCH 061/380] chore: update tool versions (#3102) Signed-off-by: GitHub Co-authored-by: kenji-miyake --- ansible/roles/pre_commit/README.md | 2 +- ansible/roles/pre_commit/defaults/main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index 46d040f903f..dcef46ec194 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -14,7 +14,7 @@ The `clang_format_version` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) ```bash -clang_format_version=14.0.6 +clang_format_version=16.0.0 pip3 install pre-commit clang-format==${clang_format_version} sudo apt install golang diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml index 4e241783e11..93b1c8c66aa 100644 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ b/ansible/roles/pre_commit/defaults/main.yaml @@ -1 +1 @@ -clang_format_version: 14.0.6 +clang_format_version: 16.0.0 From 9e64636087e48bb33a81d223d55e77ff531d2801 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Tue, 28 Mar 2023 14:17:05 +0900 Subject: [PATCH 062/380] ci: replace set-output with $GITHUB_OUTPUT (#3367) * ci: replace set-output with $GITHUB_OUTPUT Signed-off-by: Kenji Miyake * fix multiline Signed-off-by: Kenji Miyake * fix Signed-off-by: Kenji Miyake --------- Signed-off-by: Kenji Miyake --- .../actions/combine-multi-arch-images/action.yaml | 6 +++--- .../actions/create-main-distro-alias/action.yaml | 2 +- .github/actions/docker-build-and-push/action.yaml | 13 +++++-------- .github/workflows/github-release.yaml | 8 ++++---- .github/workflows/update-tool-versions.yaml | 2 +- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/.github/actions/combine-multi-arch-images/action.yaml b/.github/actions/combine-multi-arch-images/action.yaml index 93b6a54ec06..d0b53ce13e3 100644 --- a/.github/actions/combine-multi-arch-images/action.yaml +++ b/.github/actions/combine-multi-arch-images/action.yaml @@ -18,7 +18,7 @@ runs: - name: Set image name id: set-image-name - run: echo "::set-output name=image-name::ghcr.io/${{ github.repository_owner }}/${{ inputs.package-name }}" + run: echo "image-name=ghcr.io/${{ github.repository_owner }}/${{ inputs.package-name }}" >> $GITHUB_OUTPUT shell: bash - name: Get all tags @@ -48,7 +48,7 @@ runs: all_tags=$(printf "%s\n" ${all_tags[@]}) echo -e "\n[all_tags]\n$all_tags" - echo "::set-output name=tags::$(printf "%s " $all_tags)" + echo "tags=$(printf "%s " $all_tags | sed 's/\s*$//')" >> $GITHUB_OUTPUT shell: bash - name: Get base tags @@ -62,7 +62,7 @@ runs: echo -e "\n[arm64_tags]\n$arm64_tags" echo -e "\n[base_tags]\n$base_tags" - echo "::set-output name=tags::$(printf "%s " $base_tags)" + echo "tags=$(printf "%s " $base_tags | sed 's/\s*$//')" >> $GITHUB_OUTPUT" env: ALL_TAGS: ${{ steps.get-all-tags.outputs.tags }} shell: bash diff --git a/.github/actions/create-main-distro-alias/action.yaml b/.github/actions/create-main-distro-alias/action.yaml index bdfe0cf4f98..40e9d53ee21 100644 --- a/.github/actions/create-main-distro-alias/action.yaml +++ b/.github/actions/create-main-distro-alias/action.yaml @@ -24,7 +24,7 @@ runs: - name: Set image name id: set-image-name - run: echo "::set-output name=image-name::ghcr.io/${{ github.repository_owner }}/${{ inputs.package-name }}" + run: echo "image-name=ghcr.io/${{ github.repository_owner }}/${{ inputs.package-name }}" >> $GITHUB_OUTPUT shell: bash - name: Create Docker manifest for latest diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index c0b9634baba..6caa8974c4a 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -44,14 +44,11 @@ runs: tags+=("type=match,pattern=\d+.\d+") fi - # Workaround for multiline strings - # https://github.community/t/set-output-truncates-multiline-strings/16852 - tags_multiline=$(printf "%s\n" "${tags[@]}") - tags_multiline="${tags_multiline//'%'/'%25'}" - tags_multiline="${tags_multiline//$'\n'/'%0A'}" - tags_multiline="${tags_multiline//$'\r'/'%0D'}" - - echo ::set-output name=tags::$tags_multiline + # Output multiline strings: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + echo "tags<<$EOF" >> $GITHUB_OUTPUT + echo "$(printf "%s\n" "${tags[@]}")" >> $GITHUB_OUTPUT + echo "$EOF" >> $GITHUB_OUTPUT shell: bash - name: Docker meta for devel diff --git a/.github/workflows/github-release.yaml b/.github/workflows/github-release.yaml index 19e1e9c12e5..33677fc1b76 100644 --- a/.github/workflows/github-release.yaml +++ b/.github/workflows/github-release.yaml @@ -26,8 +26,8 @@ jobs: REF_NAME="${{ github.ref_name }}" fi - echo ::set-output name=ref-name::"$REF_NAME" - echo ::set-output name=tag-name::"${REF_NAME#beta/}" + echo "ref-name=$REF_NAME" >> $GITHUB_OUTPUT + echo "tag-name=${REF_NAME#beta/}" >> $GITHUB_OUTPUT" - name: Check out repository uses: actions/checkout@v3 @@ -39,7 +39,7 @@ jobs: id: set-target-name run: | if [[ "${{ steps.set-tag-name.outputs.ref-name }}" =~ "beta/" ]]; then - echo ::set-output name=target-name::"${{ steps.set-tag-name.outputs.ref-name }}" + echo "target-name=${{ steps.set-tag-name.outputs.ref-name }}" >> $GITHUB_OUTPUT fi - name: Create a local tag for beta branches @@ -62,7 +62,7 @@ jobs: verb=edit fi - echo ::set-output name=verb::"$verb" + echo "verb=$verb" >> $GITHUB_OUTPUT env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 33242aea7bc..5262ad2a7a1 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -29,7 +29,7 @@ jobs: pip index versions "$1" 2>/dev/null | head -n1 | sd '.*\((.*)\)' '$1' } - echo ::set-output name=version::$(get-latest-pip-version clang-format) + echo "version=$(get-latest-pip-version clang-format)" >> $GITHUB_OUTPUT env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 9090e5a017c35ad2955bcbb4fb7825b7771a302f Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 29 Mar 2023 12:25:48 +0900 Subject: [PATCH 063/380] ci(github-release): remove unnecessary quote (#3379) Signed-off-by: Kenji Miyake --- .github/actions/combine-multi-arch-images/action.yaml | 2 +- .github/workflows/github-release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/combine-multi-arch-images/action.yaml b/.github/actions/combine-multi-arch-images/action.yaml index d0b53ce13e3..6e5220c4d9e 100644 --- a/.github/actions/combine-multi-arch-images/action.yaml +++ b/.github/actions/combine-multi-arch-images/action.yaml @@ -62,7 +62,7 @@ runs: echo -e "\n[arm64_tags]\n$arm64_tags" echo -e "\n[base_tags]\n$base_tags" - echo "tags=$(printf "%s " $base_tags | sed 's/\s*$//')" >> $GITHUB_OUTPUT" + echo "tags=$(printf "%s " $base_tags | sed 's/\s*$//')" >> $GITHUB_OUTPUT env: ALL_TAGS: ${{ steps.get-all-tags.outputs.tags }} shell: bash diff --git a/.github/workflows/github-release.yaml b/.github/workflows/github-release.yaml index 33677fc1b76..95ebb8725f6 100644 --- a/.github/workflows/github-release.yaml +++ b/.github/workflows/github-release.yaml @@ -27,7 +27,7 @@ jobs: fi echo "ref-name=$REF_NAME" >> $GITHUB_OUTPUT - echo "tag-name=${REF_NAME#beta/}" >> $GITHUB_OUTPUT" + echo "tag-name=${REF_NAME#beta/}" >> $GITHUB_OUTPUT - name: Check out repository uses: actions/checkout@v3 From c725d9cc293938ecd2942ccf9be740456f858876 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 29 Mar 2023 21:09:12 +0900 Subject: [PATCH 064/380] revert: revert "ci(pre-commit-optional): autoupdate" (#3383) Revert "ci(pre-commit-optional): autoupdate (#3349)" This reverts commit df54cf6403ce0dad65db05ddb27819a6b7de888f. --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index caa92d0812a..e0019e10d52 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.11.0 + rev: v3.10.3 hooks: - id: markdown-link-check args: [--config=.markdown-link-check.json] From b5e7d594c41fb7a05374a4753f8e3e74f09cac7d Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 29 Mar 2023 21:28:43 +0900 Subject: [PATCH 065/380] ci(pre-commit): fix token input (#3382) Signed-off-by: Kenji Miyake --- .github/workflows/pre-commit.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index bda722c87ef..b231dbda879 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -20,11 +20,6 @@ jobs: with: ref: ${{ github.event.pull_request.head.ref }} - - name: Set git config - uses: autowarefoundation/autoware-github-actions/set-git-config@v1 - with: - token: ${{ steps.generate-token.outputs.token }} - - name: Run pre-commit uses: autowarefoundation/autoware-github-actions/pre-commit@v1 with: From 6eb510bc558fc2fc8ae0c9177f0d556c027ba560 Mon Sep 17 00:00:00 2001 From: "Takagi, Isamu" <43976882+isamu-takagi@users.noreply.github.com> Date: Thu, 30 Mar 2023 22:12:07 +0900 Subject: [PATCH 066/380] chore(clang-format): change format of short function (#3276) Signed-off-by: Takagi, Isamu --- .clang-format | 1 + 1 file changed, 1 insertion(+) diff --git a/.clang-format b/.clang-format index c3b72db71b4..b41fae9129e 100644 --- a/.clang-format +++ b/.clang-format @@ -4,6 +4,7 @@ BasedOnStyle: Google AccessModifierOffset: -2 AlignAfterOpenBracket: AlwaysBreak +AllowShortFunctionsOnASingleLine: InlineOnly BraceWrapping: AfterClass: true AfterFunction: true From 5b63e0bcdbd42e7c29509e861e959a2867a6d71f Mon Sep 17 00:00:00 2001 From: Shumpei Wakabayashi <42209144+shmpwk@users.noreply.github.com> Date: Sat, 1 Apr 2023 15:56:28 +0900 Subject: [PATCH 067/380] docs(PULL_REQUEST_TEMPLATE): add Tests performed for small change template (#3389) * docs(PULL_REQUEST_TEMPLATE): use standard template when feat or fix Signed-off-by: Shumpei Wakabayashi * Update .github/PULL_REQUEST_TEMPLATE.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Update .github/PULL_REQUEST_TEMPLATE.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * style(pre-commit): autofix * chore: change usage Signed-off-by: Shumpei Wakabayashi * chore: add test performed in small template. Signed-off-by: Shumpei Wakabayashi * Update .github/PULL_REQUEST_TEMPLATE/small-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Update .github/PULL_REQUEST_TEMPLATE/small-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> --------- Signed-off-by: Shumpei Wakabayashi Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .github/PULL_REQUEST_TEMPLATE/small-change.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE/small-change.md b/.github/PULL_REQUEST_TEMPLATE/small-change.md index 7120f5212ef..527c8ed81fd 100644 --- a/.github/PULL_REQUEST_TEMPLATE/small-change.md +++ b/.github/PULL_REQUEST_TEMPLATE/small-change.md @@ -2,6 +2,13 @@ +## Tests performed + + + + +Not applicable. + ## Pre-review checklist for the PR author The PR author **must** check the checkboxes below when creating the PR. From 6bab6e6e0c7be9d0caa23083ebafcca03dc41fad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 12:19:05 +0000 Subject: [PATCH 068/380] chore(deps): bump peter-evans/create-pull-request from 4 to 5 (#3403) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-tool-versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 5262ad2a7a1..3ec3b0533e7 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -40,7 +40,7 @@ jobs: - name: Create PR id: create-pr - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v5 with: token: ${{ steps.generate-token.outputs.token }} base: ${{ github.event.repository.default_branch }} From 40160b8fabe0c32895e52b15ad4507295d7fe2c6 Mon Sep 17 00:00:00 2001 From: Shumpei Wakabayashi <42209144+shmpwk@users.noreply.github.com> Date: Thu, 13 Apr 2023 11:39:09 +0900 Subject: [PATCH 069/380] docs(PULL_REQUEST_TEMPLATE): add Topic changes and Effects for driving behavior (#3423) * docs(PULL_REQUEST_TEMPLATE): add Topic changes and Effects for driving behavior Signed-off-by: Shumpei Wakabayashi * Update .github/PULL_REQUEST_TEMPLATE/small-change.md * Update .github/PULL_REQUEST_TEMPLATE/standard-change.md * Update .github/PULL_REQUEST_TEMPLATE/standard-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Update .github/PULL_REQUEST_TEMPLATE/standard-change.md * Update .github/PULL_REQUEST_TEMPLATE/small-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Update .github/PULL_REQUEST_TEMPLATE/small-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Update .github/PULL_REQUEST_TEMPLATE/small-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Update .github/PULL_REQUEST_TEMPLATE/standard-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Update .github/PULL_REQUEST_TEMPLATE/standard-change.md Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> --------- Signed-off-by: Shumpei Wakabayashi Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> --- .github/PULL_REQUEST_TEMPLATE/small-change.md | 6 ++++++ .github/PULL_REQUEST_TEMPLATE/standard-change.md | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE/small-change.md b/.github/PULL_REQUEST_TEMPLATE/small-change.md index 527c8ed81fd..2ff933c43a3 100644 --- a/.github/PULL_REQUEST_TEMPLATE/small-change.md +++ b/.github/PULL_REQUEST_TEMPLATE/small-change.md @@ -9,6 +9,12 @@ Not applicable. +## Effects on system behavior + + + +Not applicable. + ## Pre-review checklist for the PR author The PR author **must** check the checkboxes below when creating the PR. diff --git a/.github/PULL_REQUEST_TEMPLATE/standard-change.md b/.github/PULL_REQUEST_TEMPLATE/standard-change.md index cfdf7101b5a..7aedefd0a7b 100644 --- a/.github/PULL_REQUEST_TEMPLATE/standard-change.md +++ b/.github/PULL_REQUEST_TEMPLATE/standard-change.md @@ -14,6 +14,14 @@ +## Interface changes + + + +## Effects on system behavior + + + ## Pre-review checklist for the PR author The PR author **must** check the checkboxes below when creating the PR. From 80f7bb10ba48549c296be25a1ced3ad61034d104 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 14 Apr 2023 10:33:54 +0900 Subject: [PATCH 070/380] ci(pre-commit-optional): autoupdate (#3384) Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index e0019e10d52..dd82999050d 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.10.3 + rev: v3.11.1 hooks: - id: markdown-link-check args: [--config=.markdown-link-check.json] From 4ce72cc077deb70354d7bc0651421aa077e80943 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 14 Apr 2023 10:34:28 +0900 Subject: [PATCH 071/380] ci(pre-commit): autoupdate (#3305) Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e309548ac61..57d843e0cb2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,12 +23,12 @@ repos: args: [-c, .markdownlint.yaml, --fix] - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0-alpha.4 + rev: v3.0.0-alpha.6 hooks: - id: prettier - repo: https://github.com/adrienverge/yamllint - rev: v1.29.0 + rev: v1.30.0 hooks: - id: yamllint @@ -38,7 +38,7 @@ repos: - id: shellcheck - repo: https://github.com/scop/pre-commit-shfmt - rev: v3.6.0-1 + rev: v3.6.0-2 hooks: - id: shfmt args: [-w, -s, -i=4] From 5117021ab93c6f9d745c9de30bfd3a6450697ffa Mon Sep 17 00:00:00 2001 From: "Takagi, Isamu" <43976882+isamu-takagi@users.noreply.github.com> Date: Fri, 14 Apr 2023 21:36:06 +0900 Subject: [PATCH 072/380] ci(pre-commit-optional): add quiet option to show only errors (#3431) Signed-off-by: Takagi, Isamu --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index dd82999050d..eb008730c15 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -3,4 +3,4 @@ repos: rev: v3.11.1 hooks: - id: markdown-link-check - args: [--config=.markdown-link-check.json] + args: [--quiet, --config=.markdown-link-check.json] From eb0ac2afd005e0b55a68a9b455d52ef721829290 Mon Sep 17 00:00:00 2001 From: ryohei sasaki Date: Wed, 26 Apr 2023 16:47:41 +0900 Subject: [PATCH 073/380] feat(repos): add gnss/imu localizer (#3261) * Add gnss_imu_localizar Signed-off-by: Ryohei Sasaki * Delete duplicate description Signed-off-by: Ryohei Sasaki * Update eagleye version in autoware.repos Signed-off-by: Ryohei Sasaki * Add llh_converter in autoware.repos Signed-off-by: Ryohei Sasaki * Update autoware.repos Signed-off-by: Ryohei Sasaki * Update eagleye url in autoware.repos Co-authored-by: Yukihiro Saito Signed-off-by: Ryohei Sasaki --------- Signed-off-by: Ryohei Sasaki Co-authored-by: Yukihiro Saito --- autoware.repos | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/autoware.repos b/autoware.repos index 8a721b6eb13..dd8d98c93b1 100644 --- a/autoware.repos +++ b/autoware.repos @@ -49,6 +49,18 @@ repositories: type: git url: https://github.com/tier4/pointcloud_to_laserscan.git version: tier4/main + universe/external/eagleye: + type: git + url: https://github.com/MapIV/eagleye.git + version: autoware-main + universe/external/rtklib_ros_bridge: + type: git + url: https://github.com/MapIV/rtklib_ros_bridge.git + version: ros2-v0.1.0 + universe/external/llh_converter: + type: git + url: https://github.com/MapIV/llh_converter.git + version: ros2 # launcher launcher/autoware_launch: type: git From 2f4855cdafcead27958e1da0cf92f5947c0d57e4 Mon Sep 17 00:00:00 2001 From: Takahiro Ishikawa Date: Wed, 10 May 2023 23:14:20 +0900 Subject: [PATCH 074/380] feat(repos): add heaphook to repos (#3306) Signed-off-by: Takahiro Ishikawa --- autoware.repos | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/autoware.repos b/autoware.repos index dd8d98c93b1..37bb088c141 100644 --- a/autoware.repos +++ b/autoware.repos @@ -102,3 +102,8 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_individual_params.git version: main + # middleware + middleware/external/heaphook: + type: git + url: https://github.com/tier4/heaphook.git + version: main From 4f9908809fcee7d071117f69bc63808fd453ca74 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 12 May 2023 10:50:18 +0900 Subject: [PATCH 075/380] ci(pre-commit): autoupdate (#3453) * ci(pre-commit): autoupdate Signed-off-by: GitHub * style(pre-commit): autofix --------- Signed-off-by: GitHub Co-authored-by: kenji-miyake Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 6 +++--- CODE_OF_CONDUCT.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 57d843e0cb2..664befbc3a3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,18 +17,18 @@ repos: args: [--markdown-linebreak-ext=md] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.33.0 + rev: v0.34.0 hooks: - id: markdownlint args: [-c, .markdownlint.yaml, --fix] - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0-alpha.6 + rev: v3.0.0-alpha.9-for-vscode hooks: - id: prettier - repo: https://github.com/adrienverge/yamllint - rev: v1.30.0 + rev: v1.31.0 hooks: - id: yamllint diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c493cad4da5..8dbcfb8510a 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -60,7 +60,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -conduct@autoware.org. +. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the From fc8ac3865705395ad91db76b723dbc760b9f39f9 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 12 May 2023 11:18:07 +0900 Subject: [PATCH 076/380] ci(pre-commit-optional): autoupdate (#3471) Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index eb008730c15..3b43f9ae113 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.11.1 + rev: v3.11.2 hooks: - id: markdown-link-check args: [--quiet, --config=.markdown-link-check.json] From 391a85b8a7515e7de0f3946a56894d48705c683b Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 12 May 2023 02:52:37 +0000 Subject: [PATCH 077/380] ci(pre-commit-ansible): autoupdate (#3103) Signed-off-by: GitHub Co-authored-by: kenji-miyake --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index 8e446c97a43..fba8f72df0b 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,5 +1,5 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v6.9.0 + rev: v6.16.0 hooks: - id: ansible-lint From fb896172c306d9db5df2232d778ff409ac435613 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Wed, 17 May 2023 22:20:52 +0900 Subject: [PATCH 078/380] ci(pre-commit-ansible): fix errors (#3490) * add additional_dependencies Signed-off-by: Kenji Miyake * fix ansible-lint errors Signed-off-by: Kenji Miyake --------- Signed-off-by: Kenji Miyake --- .ansible-lint | 2 +- .pre-commit-config-ansible.yaml | 2 ++ ansible/playbooks/core.yaml | 3 ++- ansible/playbooks/docker.yaml | 3 ++- ansible/playbooks/universe.yaml | 3 ++- ansible/roles/git_lfs/tasks/main.yaml | 5 +++-- ansible/roles/rmw_implementation/tasks/main.yaml | 2 +- ansible/roles/rocker/tasks/main.yaml | 1 + ansible/roles/ros2/tasks/main.yaml | 3 ++- 9 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.ansible-lint b/.ansible-lint index 61bd4a2c58c..5b4ec4a058d 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -2,7 +2,7 @@ exclude_paths: - src/ skip_list: - - meta-no-info # We don't publish to Ansible Galaxy. + - galaxy # We don't publish to Ansible Galaxy. - package-latest # Since this is a development environment, we allow the latest versions. warn_list: [] diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index fba8f72df0b..34c4e92b66a 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -3,3 +3,5 @@ repos: rev: v6.16.0 hooks: - id: ansible-lint + additional_dependencies: + - ansible diff --git a/ansible/playbooks/core.yaml b/ansible/playbooks/core.yaml index 4f63b33bf9e..dd37be36253 100644 --- a/ansible/playbooks/core.yaml +++ b/ansible/playbooks/core.yaml @@ -1,4 +1,5 @@ -- hosts: localhost +- name: Set up source development environments for Autoware Core + hosts: localhost connection: local pre_tasks: - name: Verify OS diff --git a/ansible/playbooks/docker.yaml b/ansible/playbooks/docker.yaml index 538315cd3e8..434d800c106 100644 --- a/ansible/playbooks/docker.yaml +++ b/ansible/playbooks/docker.yaml @@ -1,4 +1,5 @@ -- hosts: localhost +- name: Set up Docker development environments for Autoware + hosts: localhost connection: local vars_prompt: - name: prompt_install_nvidia diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index e062a29308b..43333357743 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -1,4 +1,5 @@ -- hosts: localhost +- name: Set up source development environments for Autoware Universe + hosts: localhost connection: local vars_prompt: - name: prompt_install_nvidia diff --git a/ansible/roles/git_lfs/tasks/main.yaml b/ansible/roles/git_lfs/tasks/main.yaml index fa1700913d1..f2f617d5e1d 100644 --- a/ansible/roles/git_lfs/tasks/main.yaml +++ b/ansible/roles/git_lfs/tasks/main.yaml @@ -8,11 +8,12 @@ # ref: https://github.com/ansible/ansible-lint/issues/1780 - name: Check if git lfs is installed # https://github.com/git-lfs/git-lfs/issues/901 - git_config: + community.general.git_config: list_all: true scope: global register: git_global_config - name: Setup Git LFS - command: git lfs install + ansible.builtin.command: git lfs install when: "'filter.lfs.required' not in git_global_config.config_values" + changed_when: true diff --git a/ansible/roles/rmw_implementation/tasks/main.yaml b/ansible/roles/rmw_implementation/tasks/main.yaml index 1c5faea1d70..91ff34cd2d0 100644 --- a/ansible/roles/rmw_implementation/tasks/main.yaml +++ b/ansible/roles/rmw_implementation/tasks/main.yaml @@ -3,7 +3,7 @@ register: dash_case_rmw_implementation changed_when: false -- name: Install ros-{{ rosdistro }}-{{ dash_case_rmw_implementation.stdout }} +- name: Install ros-{{ rosdistro + '-' + dash_case_rmw_implementation.stdout }} become: true ansible.builtin.apt: name: ros-{{ rosdistro }}-{{ dash_case_rmw_implementation.stdout }} diff --git a/ansible/roles/rocker/tasks/main.yaml b/ansible/roles/rocker/tasks/main.yaml index 57f1432710c..5c9144bd3b3 100644 --- a/ansible/roles/rocker/tasks/main.yaml +++ b/ansible/roles/rocker/tasks/main.yaml @@ -4,6 +4,7 @@ ansible.builtin.get_url: url: https://raw.githubusercontent.com/ros/rosdistro/master/ros.key dest: /usr/share/keyrings/ros-archive-keyring.gpg + mode: 644 - name: Save result of 'dpkg --print-architecture' ansible.builtin.command: dpkg --print-architecture diff --git a/ansible/roles/ros2/tasks/main.yaml b/ansible/roles/ros2/tasks/main.yaml index 1e208cf7015..f276f04dcd4 100644 --- a/ansible/roles/ros2/tasks/main.yaml +++ b/ansible/roles/ros2/tasks/main.yaml @@ -13,6 +13,7 @@ ansible.builtin.get_url: url: https://raw.githubusercontent.com/ros/rosdistro/master/ros.key dest: /usr/share/keyrings/ros-archive-keyring.gpg + mode: 644 - name: Save result of 'dpkg --print-architecture' ansible.builtin.command: dpkg --print-architecture @@ -33,7 +34,7 @@ state: present update_cache: true -- name: Install ros-{{ rosdistro }}-{{ installation_type }} +- name: Install ros-{{ rosdistro + '-' + installation_type }} become: true ansible.builtin.apt: name: ros-{{ rosdistro }}-{{ installation_type }} From 713dfa1b8d118557226473f5f596877ce137c9e1 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 18 May 2023 01:05:10 +0000 Subject: [PATCH 079/380] ci(pre-commit-ansible): autoupdate (#3500) * ci(pre-commit-ansible): autoupdate Signed-off-by: GitHub * apply var-naming[no-role-prefix] Signed-off-by: Kenji Miyake * ignore colcon directories Signed-off-by: Kenji Miyake * fixup Signed-off-by: Kenji Miyake --------- Signed-off-by: GitHub Signed-off-by: Kenji Miyake Co-authored-by: kenji-miyake Co-authored-by: Kenji Miyake --- .ansible-lint | 3 +++ .pre-commit-config-ansible.yaml | 2 +- ansible/roles/cuda/tasks/main.yaml | 20 +++++++++---------- ansible/roles/docker_engine/tasks/main.yaml | 8 ++++---- ansible/roles/git_lfs/tasks/main.yaml | 4 ++-- ansible/roles/nvidia_docker/tasks/main.yaml | 4 ++-- ansible/roles/pacmod/tasks/main.yaml | 4 ++-- .../roles/rmw_implementation/tasks/main.yaml | 6 +++--- ansible/roles/rocker/tasks/main.yaml | 6 +++--- ansible/roles/ros2/tasks/main.yaml | 6 +++--- 10 files changed, 33 insertions(+), 30 deletions(-) diff --git a/.ansible-lint b/.ansible-lint index 5b4ec4a058d..a1083e74c61 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -1,5 +1,8 @@ exclude_paths: - src/ + - build/ + - install/ + - log/ skip_list: - galaxy # We don't publish to Ansible Galaxy. diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index 34c4e92b66a..cfad1ff9d68 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v6.16.0 + rev: v6.16.1 hooks: - id: ansible-lint additional_dependencies: diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index 8060d455c9d..30e19d41d00 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -38,22 +38,22 @@ - name: Get dash-case name of cuda_version ansible.builtin.shell: bash -c 'sed -e "s/\./-/g" <<< $(echo {{ cuda_version }})' - register: dash_case_cuda_version + register: cuda__dash_case_cuda_version changed_when: false - name: Install CUDA libraries except for cuda-drivers become: true ansible.builtin.apt: name: - - cuda-cudart-dev-{{ dash_case_cuda_version.stdout }} - - cuda-command-line-tools-{{ dash_case_cuda_version.stdout }} - - cuda-minimal-build-{{ dash_case_cuda_version.stdout }} - - cuda-libraries-dev-{{ dash_case_cuda_version.stdout }} - - cuda-nvml-dev-{{ dash_case_cuda_version.stdout }} - - cuda-nvprof-{{ dash_case_cuda_version.stdout }} - - libnpp-dev-{{ dash_case_cuda_version.stdout }} - - libcusparse-dev-{{ dash_case_cuda_version.stdout }} - - libcublas-dev-{{ dash_case_cuda_version.stdout }} + - cuda-cudart-dev-{{ cuda__dash_case_cuda_version.stdout }} + - cuda-command-line-tools-{{ cuda__dash_case_cuda_version.stdout }} + - cuda-minimal-build-{{ cuda__dash_case_cuda_version.stdout }} + - cuda-libraries-dev-{{ cuda__dash_case_cuda_version.stdout }} + - cuda-nvml-dev-{{ cuda__dash_case_cuda_version.stdout }} + - cuda-nvprof-{{ cuda__dash_case_cuda_version.stdout }} + - libnpp-dev-{{ cuda__dash_case_cuda_version.stdout }} + - libcusparse-dev-{{ cuda__dash_case_cuda_version.stdout }} + - libcublas-dev-{{ cuda__dash_case_cuda_version.stdout }} - libnccl-dev update_cache: true diff --git a/ansible/roles/docker_engine/tasks/main.yaml b/ansible/roles/docker_engine/tasks/main.yaml index fffd86c3e3e..6fe822fa575 100644 --- a/ansible/roles/docker_engine/tasks/main.yaml +++ b/ansible/roles/docker_engine/tasks/main.yaml @@ -37,24 +37,24 @@ - name: Save result of 'dpkg --print-architecture' ansible.builtin.command: dpkg --print-architecture - register: deb_architecture + register: docker_engine__deb_architecture changed_when: false - name: Save result of 'lsb_release -cs' ansible.builtin.command: lsb_release -cs - register: lsb_release_cs + register: docker_engine__lsb_release_cs changed_when: false - name: Save result of 'lsb_release -is' ansible.builtin.command: lsb_release -is - register: lsb_release_is + register: docker_engine__lsb_release_is changed_when: false # echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(lsb_release -is | tr '[:upper:]' '[:lower:]') $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - name: Add Docker apt repository to source list become: true ansible.builtin.apt_repository: - repo: deb [arch={{ deb_architecture.stdout }} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/{{ lsb_release_is.stdout | lower }} {{ lsb_release_cs.stdout }} stable + repo: deb [arch={{ docker_engine__deb_architecture.stdout }} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/{{ docker_engine__lsb_release_is.stdout | lower }} {{ docker_engine__lsb_release_cs.stdout }} stable filename: docker state: present update_cache: true diff --git a/ansible/roles/git_lfs/tasks/main.yaml b/ansible/roles/git_lfs/tasks/main.yaml index f2f617d5e1d..b416dc3237d 100644 --- a/ansible/roles/git_lfs/tasks/main.yaml +++ b/ansible/roles/git_lfs/tasks/main.yaml @@ -11,9 +11,9 @@ community.general.git_config: list_all: true scope: global - register: git_global_config + register: git_lfs__git_global_config - name: Setup Git LFS ansible.builtin.command: git lfs install - when: "'filter.lfs.required' not in git_global_config.config_values" + when: "'filter.lfs.required' not in git_lfs__git_global_config.config_values" changed_when: true diff --git a/ansible/roles/nvidia_docker/tasks/main.yaml b/ansible/roles/nvidia_docker/tasks/main.yaml index 7193324b356..215354fbffe 100644 --- a/ansible/roles/nvidia_docker/tasks/main.yaml +++ b/ansible/roles/nvidia_docker/tasks/main.yaml @@ -5,12 +5,12 @@ - name: Save result of '. /etc/os-release;echo $ID$VERSION_ID' ansible.builtin.shell: . /etc/os-release;echo $ID$VERSION_ID - register: distribution + register: nvidia_docker__distribution changed_when: false - name: Save result of 'curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list' ansible.builtin.uri: - url: https://nvidia.github.io/nvidia-docker/{{ distribution.stdout }}/nvidia-docker.list + url: https://nvidia.github.io/nvidia-docker/{{ nvidia_docker__distribution.stdout }}/nvidia-docker.list return_content: true register: nvidia_docker_list diff --git a/ansible/roles/pacmod/tasks/main.yaml b/ansible/roles/pacmod/tasks/main.yaml index d7d96c549b5..ed96c249ef4 100644 --- a/ansible/roles/pacmod/tasks/main.yaml +++ b/ansible/roles/pacmod/tasks/main.yaml @@ -6,14 +6,14 @@ - name: Save result of 'lsb_release -sc' ansible.builtin.command: lsb_release -sc - register: lsb_release + register: pacmod__lsb_release changed_when: false # echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list - name: Add AutonomouStuff apt repository to source list become: true ansible.builtin.apt_repository: - repo: deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ {{ lsb_release.stdout }} main + repo: deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ {{ pacmod__lsb_release.stdout }} main filename: autonomoustuff-public state: present update_cache: true diff --git a/ansible/roles/rmw_implementation/tasks/main.yaml b/ansible/roles/rmw_implementation/tasks/main.yaml index 91ff34cd2d0..bdbb7fa8a01 100644 --- a/ansible/roles/rmw_implementation/tasks/main.yaml +++ b/ansible/roles/rmw_implementation/tasks/main.yaml @@ -1,12 +1,12 @@ - name: Get dash-case name of rmw_implementation ansible.builtin.shell: bash -c 'sed -e "s/_/-/g" <<< $(echo {{ rmw_implementation }})' - register: dash_case_rmw_implementation + register: rmw_implementation__dash_case_rmw_implementation changed_when: false -- name: Install ros-{{ rosdistro + '-' + dash_case_rmw_implementation.stdout }} +- name: Install ros-{{ rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout }} become: true ansible.builtin.apt: - name: ros-{{ rosdistro }}-{{ dash_case_rmw_implementation.stdout }} + name: ros-{{ rosdistro }}-{{ rmw_implementation__dash_case_rmw_implementation.stdout }} state: latest update_cache: true diff --git a/ansible/roles/rocker/tasks/main.yaml b/ansible/roles/rocker/tasks/main.yaml index 5c9144bd3b3..885d2895342 100644 --- a/ansible/roles/rocker/tasks/main.yaml +++ b/ansible/roles/rocker/tasks/main.yaml @@ -8,19 +8,19 @@ - name: Save result of 'dpkg --print-architecture' ansible.builtin.command: dpkg --print-architecture - register: deb_architecture + register: rocker__deb_architecture changed_when: false - name: Save result of 'lsb_release -cs' ansible.builtin.command: lsb_release -cs - register: lsb_release_cs + register: rocker__lsb_release_cs changed_when: false # echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null - name: Add ROS 2 apt repository to source list become: true ansible.builtin.apt_repository: - repo: deb [arch={{ deb_architecture.stdout }} signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu {{ lsb_release_cs.stdout }} main + repo: deb [arch={{ rocker__deb_architecture.stdout }} signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu {{ rocker__lsb_release_cs.stdout }} main filename: ros2 state: present update_cache: true diff --git a/ansible/roles/ros2/tasks/main.yaml b/ansible/roles/ros2/tasks/main.yaml index f276f04dcd4..679f5dc4c90 100644 --- a/ansible/roles/ros2/tasks/main.yaml +++ b/ansible/roles/ros2/tasks/main.yaml @@ -17,19 +17,19 @@ - name: Save result of 'dpkg --print-architecture' ansible.builtin.command: dpkg --print-architecture - register: deb_architecture + register: ros2__deb_architecture changed_when: false - name: Save result of 'source /etc/os-release && echo $UBUNTU_CODENAME' ansible.builtin.shell: bash -c 'source /etc/os-release && echo $UBUNTU_CODENAME' - register: ubuntu_codename + register: ros2__ubuntu_codename changed_when: false # echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null - name: Add ROS 2 apt repository to source list become: true ansible.builtin.apt_repository: - repo: deb [arch={{ deb_architecture.stdout }} signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu {{ ubuntu_codename.stdout }} main + repo: deb [arch={{ ros2__deb_architecture.stdout }} signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu {{ ros2__ubuntu_codename.stdout }} main filename: ros2 state: present update_cache: true From fff363406b319879a3ed34fe21a402a7e6a023be Mon Sep 17 00:00:00 2001 From: "Takagi, Isamu" <43976882+isamu-takagi@users.noreply.github.com> Date: Mon, 12 Jun 2023 13:48:00 +0900 Subject: [PATCH 080/380] ci(pre-commit-optional): add base-branch option for differential execution (#3567) Signed-off-by: Takagi, Isamu --- .github/workflows/pre-commit-optional.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pre-commit-optional.yaml b/.github/workflows/pre-commit-optional.yaml index 93e05dc2c79..e754ecab24f 100644 --- a/.github/workflows/pre-commit-optional.yaml +++ b/.github/workflows/pre-commit-optional.yaml @@ -9,8 +9,11 @@ jobs: steps: - name: Check out repository uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Run pre-commit uses: autowarefoundation/autoware-github-actions/pre-commit@v1 with: pre-commit-config: .pre-commit-config-optional.yaml + base-branch: origin/${{ github.base_ref }} From 985ee15efbcd99b8d04ed9b41516887e48572af5 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Mon, 12 Jun 2023 21:28:02 +0900 Subject: [PATCH 081/380] fix(README): update info for Autoware.AI (#3562) Signed-off-by: Ryohsuke Mitsudome --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5713f156e1a..2be6f0d2124 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ To learn more about using or developing Autoware, refer to the [Autoware documen ## Using Autoware.AI -If you wish to use Autoware.AI, the previous version of Autoware based on ROS 1, switch to [autoware-ai](https://github.com/autowarefoundation/autoware.ai/tree/autoware-ai) branch. However, be aware that Autoware.AI will reach the end-of-life by the end of 2022, and we strongly recommend transitioning to Autoware Core/Universe for future use. +If you wish to use Autoware.AI, the previous version of Autoware based on ROS 1, switch to [autoware-ai](https://github.com/autowarefoundation/autoware_ai) repository. However, be aware that Autoware.AI has reached the end-of-life as of 2022, and we strongly recommend transitioning to Autoware Core/Universe for future use. ## Contributing From fddc3ff81bfb77e67916416f5e9acbf14d5aadda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 16 Jun 2023 15:55:37 +0300 Subject: [PATCH 082/380] ci(workflows): update the docker-build-and-push-main workflow to use self hosted runner (#3579) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/workflows/docker-build-and-push-main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 6f71ac71560..798b4e695e7 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -11,7 +11,7 @@ on: jobs: docker-build-and-push-main: - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, X64] strategy: fail-fast: false matrix: From a91c19a353d6d68ba6622f447e57038b1863f117 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Thu, 22 Jun 2023 20:15:07 +0900 Subject: [PATCH 083/380] ci(docker-build-and-push): add provenance=false to fix errors in combining multi-arch images (#3598) Signed-off-by: Kenji Miyake --- .github/actions/combine-multi-arch-images/action.yaml | 7 ++++--- .github/actions/docker-build-and-push/action.yaml | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/actions/combine-multi-arch-images/action.yaml b/.github/actions/combine-multi-arch-images/action.yaml index 6e5220c4d9e..8c446c5ff2c 100644 --- a/.github/actions/combine-multi-arch-images/action.yaml +++ b/.github/actions/combine-multi-arch-images/action.yaml @@ -95,11 +95,12 @@ runs: echo "amd64_image: $amd64_image" echo "arm64_image: $arm64_image" - docker manifest create ${{ steps.set-image-name.outputs.image-name }}:$base_tag \ + if docker manifest create ${{ steps.set-image-name.outputs.image-name }}:$base_tag \ $amd64_image \ - $arm64_image + $arm64_image; then - docker manifest push ${{ steps.set-image-name.outputs.image-name }}:$base_tag + docker manifest push ${{ steps.set-image-name.outputs.image-name }}:$base_tag + fi done env: ALL_TAGS: ${{ steps.get-all-tags.outputs.tags }} diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 6caa8974c4a..e5f8cf6955d 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -84,7 +84,7 @@ runs: password: ${{ github.token }} - name: Build and push - uses: docker/bake-action@v2 + uses: docker/bake-action@v3 with: # Checking event_name for https://github.com/autowarefoundation/autoware/issues/2796 push: ${{ github.event_name == 'schedule' || github.ref_name == github.event.repository.default_branch || github.event_name == 'push'}} @@ -92,5 +92,6 @@ runs: docker/${{ inputs.bake-target }}/docker-bake.hcl ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-prebuilt.outputs.bake-file }} + provenance: false set: | ${{ inputs.build-args }} From 1fce19bc5c6bebd51546a060f59053975cbf738f Mon Sep 17 00:00:00 2001 From: David Wong <33114676+drwnz@users.noreply.github.com> Date: Wed, 2 Aug 2023 16:52:41 +0900 Subject: [PATCH 084/380] feat(autoware.repos): change vls driver to nebula driver (#3699) Signed-off-by: David Wong --- autoware.repos | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/autoware.repos b/autoware.repos index 37bb088c141..25fa6255625 100644 --- a/autoware.repos +++ b/autoware.repos @@ -75,10 +75,14 @@ repositories: type: git url: https://github.com/tier4/tamagawa_imu_driver.git version: ros2 - sensor_component/external/velodyne_vls: + sensor_component/external/nebula: type: git - url: https://github.com/tier4/velodyne_vls.git - version: tier4/universe + url: https://github.com/tier4/nebula.git + version: main + sensor_component/external/transport_drivers: + type: git + url: https://github.com/MapIV/transport_drivers.git + version: tcp # sensor_kit sensor_kit/sample_sensor_kit_launch: type: git From 0e5ec3109c752b3cd92deaaad4c0b51b3b8d2cf1 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Tue, 8 Aug 2023 17:06:46 +0900 Subject: [PATCH 085/380] feat(autoware.repos): change target branch for transport_drivers from tcp to boost (#3720) Signed-off-by: Ryohsuke Mitsudome --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 25fa6255625..11e67852466 100644 --- a/autoware.repos +++ b/autoware.repos @@ -82,7 +82,7 @@ repositories: sensor_component/external/transport_drivers: type: git url: https://github.com/MapIV/transport_drivers.git - version: tcp + version: boost # sensor_kit sensor_kit/sample_sensor_kit_launch: type: git From f768b2c8707deaff5e393af09844ccc0ce3d8d64 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez <33620+esteve@users.noreply.github.com> Date: Tue, 19 Sep 2023 10:37:11 +0200 Subject: [PATCH 086/380] feat: use ansible to download ONNX files (#3375) * feat: use ansible to download ONNX files Signed-off-by: Esteve Fernandez * feat: add remaining ONNX files Signed-off-by: Esteve Fernandez * feat: add data_dir option to choose the location to store models Signed-off-by: Esteve Fernandez * feat: update artifacts per package Signed-off-by: Esteve Fernandez * fix: fix paths for downloaded artifacts Signed-off-by: Esteve Fernandez * style(pre-commit): autofix * fix: create directories before downloading models Signed-off-by: Esteve Fernandez --------- Signed-off-by: Esteve Fernandez Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/playbooks/universe.yaml | 9 + ansible/roles/artifacts/defaults/main.yaml | 0 ansible/roles/artifacts/meta/main.yaml | 0 ansible/roles/artifacts/tasks/main.yaml | 342 +++++++++++++++++++++ setup-dev-env.sh | 9 + 5 files changed, 360 insertions(+) create mode 100644 ansible/roles/artifacts/defaults/main.yaml create mode 100644 ansible/roles/artifacts/meta/main.yaml create mode 100644 ansible/roles/artifacts/tasks/main.yaml diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index 43333357743..9ffb57bed3c 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -7,6 +7,11 @@ [Warning] Some Autoware components depend on the CUDA, cuDNN and TensorRT NVIDIA libraries which have end-user license agreements that should be reviewed before installation. Install NVIDIA libraries? [y/N] private: false + - name: prompt_download_artifacts + prompt: |- + [Warning] Should the ONNX model files and other artifacts be downloaded alongside setting up the development environment. + Download artifacts? [y/N] + private: false pre_tasks: - name: Verify OS ansible.builtin.fail: @@ -49,3 +54,7 @@ - role: autoware.dev_env.tensorrt when: prompt_install_nvidia == 'y' - role: autoware.dev_env.git_lfs + + # ONNX files and other artifacts + - role: autoware.dev_env.artifacts + when: prompt_download_artifacts == 'y' diff --git a/ansible/roles/artifacts/defaults/main.yaml b/ansible/roles/artifacts/defaults/main.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/artifacts/meta/main.yaml b/ansible/roles/artifacts/meta/main.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml new file mode 100644 index 00000000000..56999fa03be --- /dev/null +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -0,0 +1,342 @@ +# yabloc_pose_initializer +- name: Create yabloc_pose_initializer directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/yabloc_pose_initializer" + mode: "755" + state: directory + +- name: Download yabloc_pose_initializer/resources.tar.gz + become: true + ansible.builtin.get_url: + url: https://s3.ap-northeast-2.wasabisys.com/pinto-model-zoo/136_road-segmentation-adas-0001/resources.tar.gz + dest: "{{ data_dir }}/yabloc_pose_initializer/resources.tar.gz" + mode: "644" + checksum: sha256:1f660e15f95074bade32b1f80dbf618e9cee1f0b9f76d3f4671cb9be7f56eb3a + +# image_projection_based_fusion +- name: Create image_projection_based_fusion directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/image_projection_based_fusion" + mode: "755" + state: directory + +- name: Download image_projection_based_fusion/pts_voxel_encoder_pointpainting.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_voxel_encoder_pointpainting.onnx + dest: "{{ data_dir }}/image_projection_based_fusion/pts_voxel_encoder_pointpainting.onnx" + mode: "644" + checksum: md5:25c70f76a45a64944ccd19f604c99410 + +- name: Download image_projection_based_fusion/pts_backbone_neck_head_pointpainting.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_backbone_neck_head_pointpainting.onnx + dest: "{{ data_dir }}/image_projection_based_fusion/pts_backbone_neck_head_pointpainting.onnx" + mode: "644" + checksum: md5:2c7108245240fbd7bf0104dd68225868 + +# lidar_apollo_instance_segmentation +- name: Create lidar_apollo_instance_segmentation directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_apollo_instance_segmentation" + mode: "755" + state: directory + +- name: Download lidar_apollo_instance_segmentation/vlp-16.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vlp-16.onnx + dest: "{{ data_dir }}/lidar_apollo_instance_segmentation/vlp-16.onnx" + mode: "644" + checksum: md5:63a5a1bb73f7dbb64cf70d04eca45fb4 + +- name: Download lidar_apollo_instance_segmentation/hdl-64.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/hdl-64.onnx + dest: "{{ data_dir }}/lidar_apollo_instance_segmentation/hdl-64.onnx" + mode: "644" + checksum: md5:009745e33b1df44b68296431cc384cd2 + +- name: Download lidar_apollo_instance_segmentation/vls-128.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vls-128.onnx + dest: "{{ data_dir }}/lidar_apollo_instance_segmentation/vls-128.onnx" + mode: "644" + checksum: md5:b2d709f56f73ae2518c9bf4d0214468f + +# lidar_centerpoint +- name: Create lidar_centerpoint directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_centerpoint" + mode: "755" + state: directory + +- name: Download lidar_centerpoint/pts_voxel_encoder_centerpoint.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_voxel_encoder_centerpoint.onnx + dest: "{{ data_dir }}/lidar_centerpoint/pts_voxel_encoder_centerpoint.onnx" + mode: "644" + checksum: sha256:dc1a876580d86ee7a341d543f8ade2ede7f43bd032dc5b44155b1f0175405764 + +- name: Download lidar_centerpoint/pts_backbone_neck_head_centerpoint.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint.onnx + dest: "{{ data_dir }}/lidar_centerpoint/pts_backbone_neck_head_centerpoint.onnx" + mode: "644" + checksum: sha256:3fe7e128955646740c41a25be0c8f141d5a94594fe79d7405fe2a859e391542e + +- name: Download lidar_centerpoint/pts_voxel_encoder_centerpoint_tiny.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_voxel_encoder_centerpoint_tiny.onnx + dest: "{{ data_dir }}/lidar_centerpoint/pts_voxel_encoder_centerpoint_tiny.onnx" + mode: "644" + checksum: sha256:2c53465715c1fd2e9dc5727ef3fca74f4cdf0538f74286b0946e219d0ca5693b + +- name: Download lidar_centerpoint/pts_backbone_neck_head_centerpoint_tiny.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint_tiny.onnx + dest: "{{ data_dir }}/lidar_centerpoint/pts_backbone_neck_head_centerpoint_tiny.onnx" + mode: "644" + checksum: md5:e4658325b70222f7c3637fe00e586b82 + +# tensorrt_yolo +- name: Create tensorrt_yolo directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/tensorrt_yolo" + mode: "755" + state: directory + +- name: Download tensorrt_yolo/yolov3.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolov3.onnx + dest: "{{ data_dir }}/tensorrt_yolo/yolov3.onnx" + mode: "644" + checksum: sha256:61e922f76918dd3d8e0abdc5fb7406f390609e08bd8ab9e5d3b97afb00f30f8c + +- name: Download tensorrt_yolo/yolov4.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolov4.onnx + dest: "{{ data_dir }}/tensorrt_yolo/yolov4.onnx" + mode: "644" + checksum: sha256:7c7343156c1bd4b397fd1e44b27334691a6219db3ce2e29a03b72af65ddb8f39 + +- name: Download tensorrt_yolo/yolov4-tiny.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolov4-tiny.onnx + dest: "{{ data_dir }}/tensorrt_yolo/yolov4-tiny.onnx" + mode: "644" + checksum: sha256:0e877c716fbf8a2b431ee3e57f6c7411a6741319b52c32c6dafc53c7e1b17027 + +- name: Download tensorrt_yolo/yolov5s.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolov5s.onnx + dest: "{{ data_dir }}/tensorrt_yolo/yolov5s.onnx" + mode: "644" + checksum: sha256:be335ff7746957debf1a6903a61fa3f568b780b4afe4958edf2d4bc98e9e0825 + +- name: Download tensorrt_yolo/yolov5m.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolov5m.onnx + dest: "{{ data_dir }}/tensorrt_yolo/yolov5m.onnx" + mode: "644" + checksum: sha256:ee6f67f7c00a34cc4cef2fdd9db30dd714df1a4fb2d7e9fc1731cfe85b673133 + +- name: Download tensorrt_yolo/yolov5l.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolov5l.onnx + dest: "{{ data_dir }}/tensorrt_yolo/yolov5l.onnx" + mode: "644" + checksum: sha256:a627e5f70180a8746482b572194090466db62c8d1256602c1cd20374dd960e34 + +- name: Download tensorrt_yolo/yolov5x.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolov5x.onnx + dest: "{{ data_dir }}/tensorrt_yolo/yolov5x.onnx" + mode: "644" + checksum: sha256:d7cb4cd7078f87bda22a37828d72867accecedf9f74d0d87b5cc1f6f1180a019 + +- name: Download tensorrt_yolo/coco.names + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/coco.names + dest: "{{ data_dir }}/tensorrt_yolo/coco.names" + mode: "644" + checksum: sha256:634a1132eb33f8091d60f2c346ababe8b905ae08387037aed883953b7329af84 + +# tensorrt_yolox +- name: Create tensorrt_yolox directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/tensorrt_yolox" + mode: "755" + state: directory + +- name: Download tensorrt_yolox/yolox-tiny.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolox-tiny.onnx + dest: "{{ data_dir }}/tensorrt_yolox/yolox-tiny.onnx" + mode: "644" + checksum: sha256:471a665f4243e654dff62578394e508db22ee29fe65d9e389dfc3b0f2dee1255 + +- name: Download tensorrt_yolox/yolox-sPlus-opt.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.onnx + dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-opt.onnx" + mode: "644" + checksum: md5:bf3b0155351f90fcdca2626acbfd3bcf + +- name: Download tensorrt_yolox/yolox-sPlus-opt.EntropyV2-calibration.table + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.EntropyV2-calibration.table + dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-opt.EntropyV2-calibration.table" + mode: "644" + checksum: md5:c6e6f1999d5724a017516a956096701f + +- name: Download tensorrt_yolox/label.txt + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/label.txt + dest: "{{ data_dir }}/tensorrt_yolox/label.txt" + mode: "644" + checksum: sha256:3540a365bfd6d8afb1b5d8df4ec47f82cb984760d3270c9b41dbbb3422d09a0c + +# traffic_light_classifier +- name: Create traffic_light_classifier directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/traffic_light_classifier" + mode: "755" + state: directory + +- name: Download traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_1.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_1.onnx + dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_1.onnx" + mode: "644" + checksum: md5:caa51f2080aa2df943e4f884c41898eb + +- name: Download traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_4.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_4.onnx + dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_4.onnx" + mode: "644" + checksum: md5:c2beaf60210f471debfe72b86d076ca0 + +- name: Download traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_6.onnx + dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx" + mode: "644" + checksum: md5:28b408710bcb24f4cdd4d746301d4e78 + +- name: Download traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_1.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_1.onnx + dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_1.onnx" + mode: "644" + checksum: md5:82baba4fcf1abe0c040cd55005e34510 + +- name: Download traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_4.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_4.onnx + dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_4.onnx" + mode: "644" + checksum: md5:21b549c2fe4fbb20d32cc019e6d70cd7 + +- name: Download traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_6.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_6.onnx + dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_6.onnx" + mode: "644" + checksum: md5:378526d9aa9fc6705cf399f7b35b3053 + +- name: Download traffic_light_classifier/lamp_labels.txt + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/lamp_labels.txt + dest: "{{ data_dir }}/traffic_light_classifier/lamp_labels.txt" + mode: "644" + checksum: sha256:1a5a49eeec5593963eab8d70f48b8a01bfb07e753e9688eb1510ad26e803579d + +# traffic_light_fine_detector +- name: Create traffic_light_fine_detector directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/traffic_light_fine_detector" + mode: "755" + state: directory + +- name: Download traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_1.onnx + dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx" + mode: "644" + checksum: md5:2b72d085022b8ee6aacff06bd722cfda + +- name: Download traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_4.onnx + dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx" + mode: "644" + checksum: md5:4044daa86e7776ce241e94d98a09cc0e + +- name: Download traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_6.onnx + dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx" + mode: "644" + checksum: md5:47255a11bde479320d703f1f45db1242 + +- name: Download traffic_light_fine_detector/tlr_labels.txt + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_labels.txt + dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_labels.txt" + mode: "644" + checksum: md5:e9f45efb02f2a9aa8ac27b3d5c164905 + +# traffic_light_ssd_fine_detector +- name: Create traffic_light_ssd_fine_detector directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/traffic_light_ssd_fine_detector" + mode: "755" + state: directory + +- name: Download traffic_light_ssd_fine_detector/mb2-ssd-lite-tlr.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/mb2-ssd-lite-tlr.onnx + dest: "{{ data_dir }}/traffic_light_ssd_fine_detector/mb2-ssd-lite-tlr.onnx" + mode: "644" + checksum: sha256:e29e6ee68751a270fb285fd037713939ca7f61a897b4c3a7ab22b0d6a9a21ddf + +- name: Download traffic_light_ssd_fine_detector/voc_labels_tl.txt + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/voc_labels_tl.txt + dest: "{{ data_dir }}/traffic_light_ssd_fine_detector/voc_labels_tl.txt" + mode: "644" + checksum: sha256:a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 diff --git a/setup-dev-env.sh b/setup-dev-env.sh index da3589512a0..42c714b7b9b 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -9,6 +9,8 @@ SCRIPT_DIR=$(readlink -f "$(dirname "$0")") # Parse arguments args=() +option_data_dir="$HOME/autoware_data" + while [ "$1" != "" ]; do case "$1" in -y) @@ -31,6 +33,11 @@ while [ "$1" != "" ]; do # Disable installation dev package of role 'cuda' and 'tensorrt'. option_runtime=true ;; + --data-dir) + # Set data directory + option_data_dir="$2" + shift + ;; *) args+=("$1") ;; @@ -90,6 +97,8 @@ else ansible_args+=("--extra-vars" "install_devel=true") fi +ansible_args+=("--extra-vars" "data_dir=$option_data_dir") + # Load env source "$SCRIPT_DIR/amd64.env" if [ "$(uname -m)" = "aarch64" ]; then From 871f53c55e288119d2d7e3c3415ee68e850506cf Mon Sep 17 00:00:00 2001 From: Alexey Panferov <37497658+lexavtanke@users.noreply.github.com> Date: Fri, 22 Sep 2023 17:24:55 +0300 Subject: [PATCH 087/380] feat(ansible): add yabloc archive extraction to andsible script (#3855) Signed-off-by: Alexey Panferov --- ansible/roles/artifacts/tasks/main.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 56999fa03be..5cb5b939ee3 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -13,6 +13,11 @@ mode: "644" checksum: sha256:1f660e15f95074bade32b1f80dbf618e9cee1f0b9f76d3f4671cb9be7f56eb3a +- name: Extract yabloc_pose_initializer/resources.tar.gz + ansible.builtin.unarchive: + src: "{{ data_dir }}/yabloc_pose_initializer/resources.tar.gz" + dest: "{{ data_dir }}/yabloc_pose_initializer/" + # image_projection_based_fusion - name: Create image_projection_based_fusion directory inside {{ data_dir }} ansible.builtin.file: From 86f1ff6b88be86aa86468a08ca5f3af3a8518d44 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez <33620+esteve@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:02:32 +0200 Subject: [PATCH 088/380] fix: add updated artifacts for tensorrt_yolox (#3848) Signed-off-by: Esteve Fernandez --- ansible/roles/artifacts/tasks/main.yaml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 5cb5b939ee3..a1d6c999238 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -203,7 +203,7 @@ url: https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.onnx dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-opt.onnx" mode: "644" - checksum: md5:bf3b0155351f90fcdca2626acbfd3bcf + checksum: sha256:36b0832177b01e6b278e00c7369f1de71e616c36261cbae50f0753d41289da01 - name: Download tensorrt_yolox/yolox-sPlus-opt.EntropyV2-calibration.table become: true @@ -211,7 +211,23 @@ url: https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.EntropyV2-calibration.table dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-opt.EntropyV2-calibration.table" mode: "644" - checksum: md5:c6e6f1999d5724a017516a956096701f + checksum: sha256:b9e9d7da33342262ccaea4469b4d02b8abb32b6d7bf737f9e0883fece1b8f580 + +- name: Download tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/object_detection_yolox_s/v1/yolox-sPlus-T4-960x960-pseudo-finetune.onnx + dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.onnx" + mode: "644" + checksum: sha256:f5054e8a890c3be86dc1b4b89a5a36fb2279d4f6110b0159e793be062641bf65 + +- name: Download tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.EntropyV2-calibration.table + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/object_detection_yolox_s/v1/yolox-sPlus-T4-960x960-pseudo-finetune.EntropyV2-calibration.table + dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.EntropyV2-calibration.table" + mode: "644" + checksum: sha256:cc378d327db5616b0b3a4d077bf37100c25a50ecd22d2b542f54098da100f34c - name: Download tensorrt_yolox/label.txt become: true From 459dda99c38f8914ff8d0d44229f5b66e3c91c3c Mon Sep 17 00:00:00 2001 From: Alexey Panferov <37497658+lexavtanke@users.noreply.github.com> Date: Tue, 26 Sep 2023 14:44:43 +0300 Subject: [PATCH 089/380] docs(ansible): add readme with manual artifacts downloading explanation (#3850) * doc(ansible): add readme with manual artifacts downloading explanation Signed-off-by: Alexey Panferov * docs(ansible): add readme with manual artifacts downloading explanation Signed-off-by: Alexey Panferov * docs(ansible): add file checksums to readme Signed-off-by: Alexey Panferov * style(pre-commit): autofix * docs(ansible): add sha256sum instruction for downloaded files Signed-off-by: Alexey Panferov * style(pre-commit): autofix * docs(ansible): typo fix Signed-off-by: Alexey Panferov * style(pre-commit): autofix * docs(ansible): update README, add checksum file Signed-off-by: Alexey Panferov * style(pre-commit): autofix --------- Signed-off-by: Alexey Panferov Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/roles/artifacts/README.md | 110 +++++++++++++++++++++++++++++ ansible/roles/artifacts/SHA256SUMS | 37 ++++++++++ 2 files changed, 147 insertions(+) create mode 100644 ansible/roles/artifacts/README.md create mode 100644 ansible/roles/artifacts/SHA256SUMS diff --git a/ansible/roles/artifacts/README.md b/ansible/roles/artifacts/README.md new file mode 100644 index 00000000000..d34f3e168c1 --- /dev/null +++ b/ansible/roles/artifacts/README.md @@ -0,0 +1,110 @@ +# Autoware artifacts + +The Autoware perception stack uses models for inference. These models are automatically downloaded if using `ansible`, but they can also be downloaded manually. + +## ONNX model files + +### Download instructions + +The ONNX model files are stored in a common location, hosted by Web.Auto + +Any tool that can download files from the web (e.g. `wget` or `curl`) is the only requirement for downloading these files: + +```console +# yabloc_pose_initializer + +$ mkdir -p ~/autoware_data/yabloc_pose_initializer/ +$ wget -P ~/autoware_data/yabloc_pose_initializer/ \ + https://s3.ap-northeast-2.wasabisys.com/pinto-model-zoo/136_road-segmentation-adas-0001/resources.tar.gz + + +# image_projection_based_fusion + +$ mkdir -p ~/autoware_data/image_projection_based_fusion/ +$ wget -P ~/autoware_data/image_projection_based_fusion/ \ + https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_voxel_encoder_pointpainting.onnx \ + https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_backbone_neck_head_pointpainting.onnx + + +# lidar_apollo_instance_segmentation + +$ mkdir -p ~/autoware_data/lidar_apollo_instance_segmentation/ +$ wget -P ~/autoware_data/lidar_apollo_instance_segmentation/ \ + https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vlp-16.onnx \ + https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/hdl-64.onnx \ + https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vls-128.onnx + + +# lidar_centerpoint + +$ mkdir -p ~/autoware_data/lidar_centerpoint/ +$ wget -P ~/autoware_data/lidar_centerpoint/ \ + https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_voxel_encoder_centerpoint.onnx \ + https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint.onnx \ + https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_voxel_encoder_centerpoint_tiny.onnx \ + https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint_tiny.onnx + + +# tensorrt_yolo + +$ mkdir -p ~/autoware_data/tensorrt_yolo/ +$ wget -P ~/autoware_data/tensorrt_yolo/ \ + https://awf.ml.dev.web.auto/perception/models/yolov3.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolov4.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolov4-tiny.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolov5s.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolov5m.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolov5l.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolov5x.onnx \ + https://awf.ml.dev.web.auto/perception/models/coco.names + + +# tensorrt_yolox + +$ mkdir -p ~/autoware_data/tensorrt_yolox/ +$ wget -P ~/autoware_data/tensorrt_yolox/ \ + https://awf.ml.dev.web.auto/perception/models/yolox-tiny.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.onnx \ + https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.EntropyV2-calibration.table \ + https://awf.ml.dev.web.auto/perception/models/object_detection_yolox_s/v1/yolox-sPlus-T4-960x960-pseudo-finetune.onnx \ + https://awf.ml.dev.web.auto/perception/models/object_detection_yolox_s/v1/yolox-sPlus-T4-960x960-pseudo-finetune.EntropyV2-calibration.table \ + https://awf.ml.dev.web.auto/perception/models/label.txt + + +# traffic_light_classifier + +$ mkdir -p ~/autoware_data/traffic_light_classifier/ +$ wget -P ~/autoware_data/traffic_light_classifier/ \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_1.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_4.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_6.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_1.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_4.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_6.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/lamp_labels.txt + + +# traffic_light_fine_detector + +$ mkdir -p ~/autoware_data/traffic_light_fine_detector/ +$ wget -P ~/autoware_data/traffic_light_fine_detector/ \ + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_1.onnx \ + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_4.onnx \ + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_6.onnx \ + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_labels.txt + + +# traffic_light_ssd_fine_detector + +$ mkdir -p ~/autoware_data/traffic_light_ssd_fine_detector/ +$ wget -P ~/autoware_data/traffic_light_ssd_fine_detector/ \ + https://awf.ml.dev.web.auto/perception/models/mb2-ssd-lite-tlr.onnx \ + https://awf.ml.dev.web.auto/perception/models/voc_labels_tl.txt +``` + +After downloading you can check integrity of the files with `sha256sum`: + +```console +cd ~/autoware_data/ +wget -q -O - https://raw.githubusercontent.com/autowarefoundation/autoware/main/ansible/roles/artifacts/SHA256SUMS | sha256sum -c +``` diff --git a/ansible/roles/artifacts/SHA256SUMS b/ansible/roles/artifacts/SHA256SUMS new file mode 100644 index 00000000000..49416eecc64 --- /dev/null +++ b/ansible/roles/artifacts/SHA256SUMS @@ -0,0 +1,37 @@ +7fe62fcebe0e0f62a000d06aa94d779feb444d933671a4a3189fe01be8c19a00 ./image_projection_based_fusion/pts_backbone_neck_head_pointpainting.onnx +3ca452ea5ca9467bf782955f75704ba8466841e275e8b8acd991b9911d53249e ./image_projection_based_fusion/pts_voxel_encoder_pointpainting.onnx +86348d8c4bced750f54288b01cc471c0d4f1ec9c693466169ef19413731e6ecc ./lidar_apollo_instance_segmentation/hdl-64.onnx +eec521ebad7553d0ea2c90472a293aecb7499ab592632f0e100481c8196eb421 ./lidar_apollo_instance_segmentation/vlp-16.onnx +95ef950bb694bd6de91b7e47f5d191d557e92a7f5e2a6bdf655a8b5eed4075cc ./lidar_apollo_instance_segmentation/vls-128.onnx +3fe7e128955646740c41a25be0c8f141d5a94594fe79d7405fe2a859e391542e ./lidar_centerpoint/pts_backbone_neck_head_centerpoint.onnx +9bb0b634f3664bd098ce7d6a3d8a9fb7cc8d9b8252b27f302c71e43316bab551 ./lidar_centerpoint/pts_backbone_neck_head_centerpoint_tiny.onnx +dc1a876580d86ee7a341d543f8ade2ede7f43bd032dc5b44155b1f0175405764 ./lidar_centerpoint/pts_voxel_encoder_centerpoint.onnx +2c53465715c1fd2e9dc5727ef3fca74f4cdf0538f74286b0946e219d0ca5693b ./lidar_centerpoint/pts_voxel_encoder_centerpoint_tiny.onnx +634a1132eb33f8091d60f2c346ababe8b905ae08387037aed883953b7329af84 ./tensorrt_yolo/coco.names +61e922f76918dd3d8e0abdc5fb7406f390609e08bd8ab9e5d3b97afb00f30f8c ./tensorrt_yolo/yolov3.onnx +0e877c716fbf8a2b431ee3e57f6c7411a6741319b52c32c6dafc53c7e1b17027 ./tensorrt_yolo/yolov4-tiny.onnx +7c7343156c1bd4b397fd1e44b27334691a6219db3ce2e29a03b72af65ddb8f39 ./tensorrt_yolo/yolov4.onnx +a627e5f70180a8746482b572194090466db62c8d1256602c1cd20374dd960e34 ./tensorrt_yolo/yolov5l.onnx +ee6f67f7c00a34cc4cef2fdd9db30dd714df1a4fb2d7e9fc1731cfe85b673133 ./tensorrt_yolo/yolov5m.onnx +be335ff7746957debf1a6903a61fa3f568b780b4afe4958edf2d4bc98e9e0825 ./tensorrt_yolo/yolov5s.onnx +d7cb4cd7078f87bda22a37828d72867accecedf9f74d0d87b5cc1f6f1180a019 ./tensorrt_yolo/yolov5x.onnx +3540a365bfd6d8afb1b5d8df4ec47f82cb984760d3270c9b41dbbb3422d09a0c ./tensorrt_yolox/label.txt +cc378d327db5616b0b3a4d077bf37100c25a50ecd22d2b542f54098da100f34c ./tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.EntropyV2-calibration.table +f5054e8a890c3be86dc1b4b89a5a36fb2279d4f6110b0159e793be062641bf65 ./tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.onnx +b9e9d7da33342262ccaea4469b4d02b8abb32b6d7bf737f9e0883fece1b8f580 ./tensorrt_yolox/yolox-sPlus-opt.EntropyV2-calibration.table +36b0832177b01e6b278e00c7369f1de71e616c36261cbae50f0753d41289da01 ./tensorrt_yolox/yolox-sPlus-opt.onnx +471a665f4243e654dff62578394e508db22ee29fe65d9e389dfc3b0f2dee1255 ./tensorrt_yolox/yolox-tiny.onnx +1a5a49eeec5593963eab8d70f48b8a01bfb07e753e9688eb1510ad26e803579d ./traffic_light_classifier/lamp_labels.txt +55ebb0d117a5e8943f8d1c6769f1d856b533079d4d871d8e923255cc992ad48a ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_1.onnx +684e29843e3128eadb774018730644b3ab9b0a06dc4cdaeed579c2f3fa5d5265 ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_4.onnx +44d94540fa8b89dfb39cd9a8523cf010ddfb10ea2f1f9b53bf3618ce7f4912ad ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_6.onnx +455b71b3b20d3a96aa0e49f32714ba50421f668a2f9b9907c30b1346ac8a3703 ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_1.onnx +41bb79a23a4ac57956adb8e9cb3904420db1b0cd032e97b670cc4f8b174ae3fe ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_4.onnx +e4792eed6a46fdbd02be2f3a4f1ce91f36fa77698493caf3102e445178c0f058 ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx +a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 ./traffic_light_fine_detector/tlr_labels.txt +922839fcf22bd32ae5065146fcec193e9d6360ca03bd4c83faea835045daf8eb ./traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx +b3c6e00acc6ff547d165469684ffb620a9a6330e9d591d445f50c4cf5cb4e292 ./traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx +2824d4c5b7ab5f6bfd41e43e82747107c53e1c727b1cf1dd6746bc49e6749128 ./traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx +e29e6ee68751a270fb285fd037713939ca7f61a897b4c3a7ab22b0d6a9a21ddf ./traffic_light_ssd_fine_detector/mb2-ssd-lite-tlr.onnx +a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 ./traffic_light_ssd_fine_detector/voc_labels_tl.txt +1f660e15f95074bade32b1f80dbf618e9cee1f0b9f76d3f4671cb9be7f56eb3a ./yabloc_pose_initializer/resources.tar.gz From 255ddabbfd37043f691d44f5526326cc945c3239 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez <33620+esteve@users.noreply.github.com> Date: Tue, 26 Sep 2023 16:29:43 +0200 Subject: [PATCH 090/380] fix: update all downloaded files with their SHA256 checksum (2) (#3866) fix: update all downloaded files with their SHA256 checksum Signed-off-by: Esteve Fernandez --- ansible/roles/artifacts/tasks/main.yaml | 32 ++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index a1d6c999238..4be7a3400c9 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -31,7 +31,7 @@ url: https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_voxel_encoder_pointpainting.onnx dest: "{{ data_dir }}/image_projection_based_fusion/pts_voxel_encoder_pointpainting.onnx" mode: "644" - checksum: md5:25c70f76a45a64944ccd19f604c99410 + checksum: sha256:3ca452ea5ca9467bf782955f75704ba8466841e275e8b8acd991b9911d53249e - name: Download image_projection_based_fusion/pts_backbone_neck_head_pointpainting.onnx become: true @@ -39,7 +39,7 @@ url: https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_backbone_neck_head_pointpainting.onnx dest: "{{ data_dir }}/image_projection_based_fusion/pts_backbone_neck_head_pointpainting.onnx" mode: "644" - checksum: md5:2c7108245240fbd7bf0104dd68225868 + checksum: sha256:7fe62fcebe0e0f62a000d06aa94d779feb444d933671a4a3189fe01be8c19a00 # lidar_apollo_instance_segmentation - name: Create lidar_apollo_instance_segmentation directory inside {{ data_dir }} @@ -54,7 +54,7 @@ url: https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vlp-16.onnx dest: "{{ data_dir }}/lidar_apollo_instance_segmentation/vlp-16.onnx" mode: "644" - checksum: md5:63a5a1bb73f7dbb64cf70d04eca45fb4 + checksum: sha256:eec521ebad7553d0ea2c90472a293aecb7499ab592632f0e100481c8196eb421 - name: Download lidar_apollo_instance_segmentation/hdl-64.onnx become: true @@ -62,7 +62,7 @@ url: https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/hdl-64.onnx dest: "{{ data_dir }}/lidar_apollo_instance_segmentation/hdl-64.onnx" mode: "644" - checksum: md5:009745e33b1df44b68296431cc384cd2 + checksum: sha256:86348d8c4bced750f54288b01cc471c0d4f1ec9c693466169ef19413731e6ecc - name: Download lidar_apollo_instance_segmentation/vls-128.onnx become: true @@ -70,7 +70,7 @@ url: https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vls-128.onnx dest: "{{ data_dir }}/lidar_apollo_instance_segmentation/vls-128.onnx" mode: "644" - checksum: md5:b2d709f56f73ae2518c9bf4d0214468f + checksum: sha256:95ef950bb694bd6de91b7e47f5d191d557e92a7f5e2a6bdf655a8b5eed4075cc # lidar_centerpoint - name: Create lidar_centerpoint directory inside {{ data_dir }} @@ -109,7 +109,7 @@ url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint_tiny.onnx dest: "{{ data_dir }}/lidar_centerpoint/pts_backbone_neck_head_centerpoint_tiny.onnx" mode: "644" - checksum: md5:e4658325b70222f7c3637fe00e586b82 + checksum: sha256:9bb0b634f3664bd098ce7d6a3d8a9fb7cc8d9b8252b27f302c71e43316bab551 # tensorrt_yolo - name: Create tensorrt_yolo directory inside {{ data_dir }} @@ -250,7 +250,7 @@ url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_1.onnx dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_1.onnx" mode: "644" - checksum: md5:caa51f2080aa2df943e4f884c41898eb + checksum: sha256:455b71b3b20d3a96aa0e49f32714ba50421f668a2f9b9907c30b1346ac8a3703 - name: Download traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_4.onnx become: true @@ -258,7 +258,7 @@ url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_4.onnx dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_4.onnx" mode: "644" - checksum: md5:c2beaf60210f471debfe72b86d076ca0 + checksum: sha256:41bb79a23a4ac57956adb8e9cb3904420db1b0cd032e97b670cc4f8b174ae3fe - name: Download traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx become: true @@ -266,7 +266,7 @@ url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_6.onnx dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx" mode: "644" - checksum: md5:28b408710bcb24f4cdd4d746301d4e78 + checksum: sha256:e4792eed6a46fdbd02be2f3a4f1ce91f36fa77698493caf3102e445178c0f058 - name: Download traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_1.onnx become: true @@ -274,7 +274,7 @@ url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_1.onnx dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_1.onnx" mode: "644" - checksum: md5:82baba4fcf1abe0c040cd55005e34510 + checksum: sha256:55ebb0d117a5e8943f8d1c6769f1d856b533079d4d871d8e923255cc992ad48a - name: Download traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_4.onnx become: true @@ -282,7 +282,7 @@ url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_4.onnx dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_4.onnx" mode: "644" - checksum: md5:21b549c2fe4fbb20d32cc019e6d70cd7 + checksum: sha256:684e29843e3128eadb774018730644b3ab9b0a06dc4cdaeed579c2f3fa5d5265 - name: Download traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_6.onnx become: true @@ -290,7 +290,7 @@ url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_6.onnx dest: "{{ data_dir }}/traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_6.onnx" mode: "644" - checksum: md5:378526d9aa9fc6705cf399f7b35b3053 + checksum: sha256:44d94540fa8b89dfb39cd9a8523cf010ddfb10ea2f1f9b53bf3618ce7f4912ad - name: Download traffic_light_classifier/lamp_labels.txt become: true @@ -313,7 +313,7 @@ url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_1.onnx dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx" mode: "644" - checksum: md5:2b72d085022b8ee6aacff06bd722cfda + checksum: sha256:922839fcf22bd32ae5065146fcec193e9d6360ca03bd4c83faea835045daf8eb - name: Download traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx become: true @@ -321,7 +321,7 @@ url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_4.onnx dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx" mode: "644" - checksum: md5:4044daa86e7776ce241e94d98a09cc0e + checksum: sha256:b3c6e00acc6ff547d165469684ffb620a9a6330e9d591d445f50c4cf5cb4e292 - name: Download traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx become: true @@ -329,7 +329,7 @@ url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_6.onnx dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx" mode: "644" - checksum: md5:47255a11bde479320d703f1f45db1242 + checksum: sha256:2824d4c5b7ab5f6bfd41e43e82747107c53e1c727b1cf1dd6746bc49e6749128 - name: Download traffic_light_fine_detector/tlr_labels.txt become: true @@ -337,7 +337,7 @@ url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_labels.txt dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_labels.txt" mode: "644" - checksum: md5:e9f45efb02f2a9aa8ac27b3d5c164905 + checksum: sha256:a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 # traffic_light_ssd_fine_detector - name: Create traffic_light_ssd_fine_detector directory inside {{ data_dir }} From b92953c3ded0bcfb0d7f56b686011888547ed43c Mon Sep 17 00:00:00 2001 From: Alexey Panferov <37497658+lexavtanke@users.noreply.github.com> Date: Mon, 23 Oct 2023 14:11:29 +0300 Subject: [PATCH 091/380] feat(ansible): tvm artifacts download (#3916) * feat(ansible): add tvm artifacts download to artifacts role Signed-off-by: Alexey Panferov * feat(ansible): add tvm artifacts download instruction to readme Signed-off-by: Alexey Panferov * feat(ansible): add tvm artifacts sha256 checksum Signed-off-by: Alexey Panferov * style(pre-commit): autofix * feat(ansible): fix ansible-lint errors, add file permission Signed-off-by: Alexey Panferov --------- Signed-off-by: Alexey Panferov Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/roles/artifacts/README.md | 63 ++++++++++++++-- ansible/roles/artifacts/SHA256SUMS | 4 + ansible/roles/artifacts/tasks/main.yaml | 97 +++++++++++++++++++++++++ 3 files changed, 158 insertions(+), 6 deletions(-) diff --git a/ansible/roles/artifacts/README.md b/ansible/roles/artifacts/README.md index d34f3e168c1..144b6432ba1 100644 --- a/ansible/roles/artifacts/README.md +++ b/ansible/roles/artifacts/README.md @@ -2,11 +2,9 @@ The Autoware perception stack uses models for inference. These models are automatically downloaded if using `ansible`, but they can also be downloaded manually. -## ONNX model files +## Download instructions -### Download instructions - -The ONNX model files are stored in a common location, hosted by Web.Auto +The artifacts files are stored in a common location, hosted by Web.Auto Any tool that can download files from the web (e.g. `wget` or `curl`) is the only requirement for downloading these files: @@ -100,11 +98,64 @@ $ mkdir -p ~/autoware_data/traffic_light_ssd_fine_detector/ $ wget -P ~/autoware_data/traffic_light_ssd_fine_detector/ \ https://awf.ml.dev.web.auto/perception/models/mb2-ssd-lite-tlr.onnx \ https://awf.ml.dev.web.auto/perception/models/voc_labels_tl.txt + + +# tvm_utility + +$ mkdir -p ~/autoware_data/tvm_utility/models/yolo_v2_tiny +$ wget -P ~/autoware_data/tvm_utility/ \ + https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz + + +# lidar_centerpoint_tvm + +$ mkdir -p ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_encoder +$ mkdir -p ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_backbone +$ wget -P ~/autoware_data/lidar_centerpoint_tvm/ \ + https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz \ + https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz + + +# lidar_apollo_segmentation_tvm + +$ mkdir -p ~/autoware_data/lidar_apollo_segmentation_tvm/models/baidu_cnn +$ wget -P ~/autoware_data/lidar_apollo_segmentation_tvm/ \ + https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz ``` After downloading you can check integrity of the files with `sha256sum`: ```console -cd ~/autoware_data/ -wget -q -O - https://raw.githubusercontent.com/autowarefoundation/autoware/main/ansible/roles/artifacts/SHA256SUMS | sha256sum -c +# +$ cd ~/autoware_data/ +$ wget -q -O - https://raw.githubusercontent.com/autowarefoundation/autoware/main/ansible/roles/artifacts/SHA256SUMS | sha256sum -c +``` + +Extracting files: + +```console +# yabloc_pose_initializer + +$ tar -xf ~/autoware_data/yabloc_pose_initializer/resources.tar.gz \ + -C ~/autoware_data/yabloc_pose_initializer/ + + +# tvm_utility + +$ tar -xf ~/autoware_data/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz \ + -C ~/autoware_data/tvm_utility/models/yolo_v2_tiny/ + + +# lidar_centerpoint_tvm + +$ tar -xf ~/autoware_data/lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz \ + -C ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_encoder +$ tar -xf ~/autoware_data/lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz \ + -C ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_backbone + + +# lidar_apollo_segmentation_tvm + +$ tar -xf ~/autoware_data/lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz \ + -C ~/autoware_data/lidar_apollo_segmentation_tvm/models/baidu_cnn ``` diff --git a/ansible/roles/artifacts/SHA256SUMS b/ansible/roles/artifacts/SHA256SUMS index 49416eecc64..6b007cd88d3 100644 --- a/ansible/roles/artifacts/SHA256SUMS +++ b/ansible/roles/artifacts/SHA256SUMS @@ -3,10 +3,13 @@ 86348d8c4bced750f54288b01cc471c0d4f1ec9c693466169ef19413731e6ecc ./lidar_apollo_instance_segmentation/hdl-64.onnx eec521ebad7553d0ea2c90472a293aecb7499ab592632f0e100481c8196eb421 ./lidar_apollo_instance_segmentation/vlp-16.onnx 95ef950bb694bd6de91b7e47f5d191d557e92a7f5e2a6bdf655a8b5eed4075cc ./lidar_apollo_instance_segmentation/vls-128.onnx +4293e6196ec937d2cd5ec658e5ce70933647d2d38633a1805febb36cafd684e3 ./lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz 3fe7e128955646740c41a25be0c8f141d5a94594fe79d7405fe2a859e391542e ./lidar_centerpoint/pts_backbone_neck_head_centerpoint.onnx 9bb0b634f3664bd098ce7d6a3d8a9fb7cc8d9b8252b27f302c71e43316bab551 ./lidar_centerpoint/pts_backbone_neck_head_centerpoint_tiny.onnx dc1a876580d86ee7a341d543f8ade2ede7f43bd032dc5b44155b1f0175405764 ./lidar_centerpoint/pts_voxel_encoder_centerpoint.onnx 2c53465715c1fd2e9dc5727ef3fca74f4cdf0538f74286b0946e219d0ca5693b ./lidar_centerpoint/pts_voxel_encoder_centerpoint_tiny.onnx +3840b6b3590984e8115d66b12061aea3a2cfaed70b4e8d59457f04b0d6f6a1fc ./lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz +41e19de43f30549c325968aee06b4ad0d9701220be819e79d37efdfa86b918d0 ./lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz 634a1132eb33f8091d60f2c346ababe8b905ae08387037aed883953b7329af84 ./tensorrt_yolo/coco.names 61e922f76918dd3d8e0abdc5fb7406f390609e08bd8ab9e5d3b97afb00f30f8c ./tensorrt_yolo/yolov3.onnx 0e877c716fbf8a2b431ee3e57f6c7411a6741319b52c32c6dafc53c7e1b17027 ./tensorrt_yolo/yolov4-tiny.onnx @@ -34,4 +37,5 @@ b3c6e00acc6ff547d165469684ffb620a9a6330e9d591d445f50c4cf5cb4e292 ./traffic_ligh 2824d4c5b7ab5f6bfd41e43e82747107c53e1c727b1cf1dd6746bc49e6749128 ./traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx e29e6ee68751a270fb285fd037713939ca7f61a897b4c3a7ab22b0d6a9a21ddf ./traffic_light_ssd_fine_detector/mb2-ssd-lite-tlr.onnx a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 ./traffic_light_ssd_fine_detector/voc_labels_tl.txt +66b3ca668e577393b657fbe1ed626538d89ca3adccd5862de6c7fa190238dbca ./tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz 1f660e15f95074bade32b1f80dbf618e9cee1f0b9f76d3f4671cb9be7f56eb3a ./yabloc_pose_initializer/resources.tar.gz diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 4be7a3400c9..5e151296e28 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -361,3 +361,100 @@ dest: "{{ data_dir }}/traffic_light_ssd_fine_detector/voc_labels_tl.txt" mode: "644" checksum: sha256:a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 + +# tvm_utility +- name: Create tvm_utility/models directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/tvm_utility/models" + mode: "755" + state: directory + +- name: Download yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz + become: true + ansible.builtin.get_url: + url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz + dest: "{{ data_dir }}/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz" + mode: "644" + checksum: sha256:66b3ca668e577393b657fbe1ed626538d89ca3adccd5862de6c7fa190238dbca + +- name: Create yolo_v2_tiny folder in tvm_utility/models of {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/tvm_utility/models/yolo_v2_tiny" + mode: "755" + state: directory + +- name: Extract yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz + ansible.builtin.unarchive: + src: "{{ data_dir }}/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz" + dest: "{{ data_dir }}/tvm_utility/models/yolo_v2_tiny" + +# lidar_centerpoint_tvm +- name: Create lidar_centerpoint_tvm/models directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_centerpoint_tvm/models" + mode: "755" + state: directory + +- name: Download centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz + become: true + ansible.builtin.get_url: + url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz + dest: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz" + mode: "644" + checksum: sha256:41e19de43f30549c325968aee06b4ad0d9701220be819e79d37efdfa86b918d0 + +- name: Create centerpoint_encoder folder in lidar_centerpoint_tvm/models of {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_encoder" + mode: "755" + state: directory + +- name: Extract centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz + ansible.builtin.unarchive: + src: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz" + dest: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_encoder" + +- name: Download centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz + become: true + ansible.builtin.get_url: + url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz + dest: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz" + mode: "644" + checksum: sha256:3840b6b3590984e8115d66b12061aea3a2cfaed70b4e8d59457f04b0d6f6a1fc + +- name: Create centerpoint_backbone folder in lidar_centerpoint_tvm/models of {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_backbone" + mode: "755" + state: directory + +- name: Extract centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz + ansible.builtin.unarchive: + src: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz" + dest: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_backbone" + +# lidar_apollo_segmentation_tvm +- name: Create lidar_apollo_segmentation_tvm/models directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_apollo_segmentation_tvm/models" + mode: "755" + state: directory + +- name: Download baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz + become: true + ansible.builtin.get_url: + url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz + dest: "{{ data_dir }}/lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz" + mode: "644" + checksum: sha256:4293e6196ec937d2cd5ec658e5ce70933647d2d38633a1805febb36cafd684e3 + +- name: Create baidu_cnn folder in lidar_apollo_segmentation_tvm/models of {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_apollo_segmentation_tvm/models/baidu_cnn" + mode: "755" + state: directory + +- name: Extract baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz + ansible.builtin.unarchive: + src: "{{ data_dir }}/lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz" + dest: "{{ data_dir }}/lidar_apollo_segmentation_tvm/models/baidu_cnn" From a58a98687cc7904448ab5dd26dd237cf68da291a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 3 Nov 2023 14:36:03 +0300 Subject: [PATCH 092/380] ci(sync-files): update the bot labels (#3957) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/workflows/sync-files.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync-files.yaml b/.github/workflows/sync-files.yaml index b9dc5907a50..5025e6c8bd7 100644 --- a/.github/workflows/sync-files.yaml +++ b/.github/workflows/sync-files.yaml @@ -28,6 +28,6 @@ jobs: with: token: ${{ steps.generate-token.outputs.token }} pr-labels: | - bot - sync-files + tag:bot + tag:sync-files auto-merge-method: squash From d04c4a6d123c09527c61fbae030019682268a53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 3 Nov 2023 16:35:51 +0300 Subject: [PATCH 093/380] ci(dependabot): update the bot labels (#3958) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/dependabot.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 3f3bf243f63..0264c035357 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -6,5 +6,5 @@ updates: interval: daily open-pull-requests-limit: 1 labels: - - bot - - github-actions + - tag:bot + - type:github-actions From a08fc46bf5ab957b1b156c3dac517a76459dec20 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez <33620+esteve@users.noreply.github.com> Date: Mon, 13 Nov 2023 14:01:43 +0100 Subject: [PATCH 094/380] build: update to CUDA 12.3 (#3956) * build: update to CUDA 12.3 Signed-off-by: Esteve Fernandez * build: cuDNN and TensorRT packages are installed in a separate Ansible script Signed-off-by: Esteve Fernandez --------- Signed-off-by: Esteve Fernandez --- amd64.env | 6 +++--- ansible/roles/cuda/README.md | 19 +++++-------------- ansible/roles/cuda/tasks/main.yaml | 27 +++++++++------------------ arm64.env | 2 ++ 4 files changed, 19 insertions(+), 35 deletions(-) diff --git a/amd64.env b/amd64.env index afa17255034..76a02c8e780 100644 --- a/amd64.env +++ b/amd64.env @@ -3,6 +3,6 @@ rmw_implementation=rmw_cyclonedds_cpp base_image=ubuntu:22.04 cuda_base_image=ubuntu:22.04 prebuilt_base_image=ubuntu:22.04 -cuda_version=11.6 -cudnn_version=8.4.1.50-1+cuda11.6 -tensorrt_version=8.4.2-1+cuda11.6 +cuda_version=12.3 +cudnn_version=8.9.5.29-1+cuda12.2 +tensorrt_version=8.6.1.6-1+cuda12.0 diff --git a/ansible/roles/cuda/README.md b/ansible/roles/cuda/README.md index 858031d5782..b5075576055 100644 --- a/ansible/roles/cuda/README.md +++ b/ansible/roles/cuda/README.md @@ -19,20 +19,11 @@ For Universe, the `cuda_version` version can also be found in: ```bash wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# Modified from: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network - -# A temporary workaround for Ubuntu 22.04 with the ubuntu2004 repository -if [[ "$(uname -m)" == "x86_64" ]]; then - liburcu6_url=http://archive.ubuntu.com/ubuntu -else - liburcu6_url=http://ports.ubuntu.com/ubuntu-ports -fi -sudo echo "deb $liburcu6_url focal main restricted" > /etc/apt/sources.list.d/focal.list - -# TODO: Use 22.04 in https://github.com/autowarefoundation/autoware/pull/3084. Currently, 20.04 is intentionally used. -os=ubuntu2004 -wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$(uname -m)/cuda-keyring_1.0-1_all.deb -sudo dpkg -i cuda-keyring_1.0-1_all.deb +# From: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#network-repo-installation-for-ubuntu + +os=ubuntu2204 +wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$(uname -m)/cuda-keyring_1.1-1_all.deb +sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}") sudo apt-get -y install cuda-${cuda_version_dashed} diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index 30e19d41d00..81dd8ada902 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -8,22 +8,6 @@ register: cuda_architecture changed_when: false -- name: (tmp for Ubuntu 22.04) Add liburcu6 repository into sources.list for amd64 - become: true - ansible.builtin.apt_repository: - repo: deb http://archive.ubuntu.com/ubuntu focal main restricted - filename: focal - state: present - when: cuda_architecture.stdout == "x86_64" - -- name: (tmp for Ubuntu 22.04) Add liburcu6 repository into sources.list for arm64 - become: true - ansible.builtin.apt_repository: - repo: deb http://ports.ubuntu.com/ubuntu-ports focal main restricted - filename: focal - state: present - when: cuda_architecture.stdout == "aarch64" - - name: Remove old /etc/apt/sources.list.d/cuda.list become: true ansible.builtin.file: @@ -33,7 +17,7 @@ - name: Install CUDA keyring become: true ansible.builtin.apt: - deb: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/{{ cuda_architecture.stdout }}/cuda-keyring_1.0-1_all.deb + deb: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/{{ cuda_architecture.stdout }}/cuda-keyring_1.1-1_all.deb update_cache: true - name: Get dash-case name of cuda_version @@ -50,13 +34,20 @@ - cuda-minimal-build-{{ cuda__dash_case_cuda_version.stdout }} - cuda-libraries-dev-{{ cuda__dash_case_cuda_version.stdout }} - cuda-nvml-dev-{{ cuda__dash_case_cuda_version.stdout }} - - cuda-nvprof-{{ cuda__dash_case_cuda_version.stdout }} - libnpp-dev-{{ cuda__dash_case_cuda_version.stdout }} - libcusparse-dev-{{ cuda__dash_case_cuda_version.stdout }} - libcublas-dev-{{ cuda__dash_case_cuda_version.stdout }} - libnccl-dev update_cache: true +- name: Install extra CUDA libraries for x86_64 + become: true + ansible.builtin.apt: + name: + - cuda-nvprof-{{ cuda__dash_case_cuda_version.stdout }} + update_cache: true + when: cuda_architecture.stdout == "x86_64" + - name: Install cuda-drivers become: true ansible.builtin.apt: diff --git a/arm64.env b/arm64.env index f9aba790b05..efd9db194da 100644 --- a/arm64.env +++ b/arm64.env @@ -1 +1,3 @@ # Override amd64's settings +cudnn_version=8.9.6.50-1+cuda12.2 +tensorrt_version=8.6.2.2-1+cuda12.0 From 61d50fb7e6147674e03afd8150d33d111cf49c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Tue, 14 Nov 2023 17:51:51 +0300 Subject: [PATCH 095/380] ci(workflows): update bot labels (#3986) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/workflows/pre-commit-ansible-autoupdate.yaml | 4 ++-- .github/workflows/pre-commit-autoupdate.yaml | 4 ++-- .github/workflows/pre-commit-optional-autoupdate.yaml | 4 ++-- .github/workflows/update-tool-versions.yaml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pre-commit-ansible-autoupdate.yaml b/.github/workflows/pre-commit-ansible-autoupdate.yaml index 5595c69d563..c8749e55fe2 100644 --- a/.github/workflows/pre-commit-ansible-autoupdate.yaml +++ b/.github/workflows/pre-commit-ansible-autoupdate.yaml @@ -29,8 +29,8 @@ jobs: token: ${{ steps.generate-token.outputs.token }} pre-commit-config: .pre-commit-config-ansible.yaml pr-labels: | - bot - pre-commit-ansible-autoupdate + tag:bot + tag:pre-commit-autoupdate pr-branch: pre-commit-ansible-autoupdate pr-title: "ci(pre-commit-ansible): autoupdate" pr-commit-message: "ci(pre-commit-ansible): autoupdate" diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml index 02e3ab2c678..597ca2207e8 100644 --- a/.github/workflows/pre-commit-autoupdate.yaml +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -29,8 +29,8 @@ jobs: token: ${{ steps.generate-token.outputs.token }} pre-commit-config: .pre-commit-config.yaml pr-labels: | - bot - pre-commit-autoupdate + tag:bot + tag:pre-commit-autoupdate pr-branch: pre-commit-autoupdate pr-title: "ci(pre-commit): autoupdate" pr-commit-message: "ci(pre-commit): autoupdate" diff --git a/.github/workflows/pre-commit-optional-autoupdate.yaml b/.github/workflows/pre-commit-optional-autoupdate.yaml index 12f9c3c0d24..664e8ba6054 100644 --- a/.github/workflows/pre-commit-optional-autoupdate.yaml +++ b/.github/workflows/pre-commit-optional-autoupdate.yaml @@ -29,8 +29,8 @@ jobs: token: ${{ steps.generate-token.outputs.token }} pre-commit-config: .pre-commit-config-optional.yaml pr-labels: | - bot - pre-commit-optional-autoupdate + tag:bot + tag:pre-commit-autoupdate pr-branch: pre-commit-optional-autoupdate pr-title: "ci(pre-commit-optional): autoupdate" pr-commit-message: "ci(pre-commit-optional): autoupdate" diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 3ec3b0533e7..0fd325d7434 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -49,8 +49,8 @@ jobs: commit-message: "chore: update tool versions" body: "" labels: | - bot - update-tool-versions + tag:bot + tag:update-tool-versions signoff: true delete-branch: true From ab85021fd69ed0e52b6564c0dc3406b99b2cd1ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 11:03:08 +0300 Subject: [PATCH 096/380] chore(deps): bump actions/checkout from 3 to 4 (#3805) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build-main-self-hosted.yaml | 2 +- .github/workflows/build-main.yaml | 2 +- .github/workflows/docker-build-and-push-main-self-hosted.yaml | 2 +- .github/workflows/docker-build-and-push-main.yaml | 2 +- .github/workflows/github-release.yaml | 2 +- .github/workflows/load-env.yaml | 2 +- .github/workflows/pre-commit-ansible.yaml | 2 +- .github/workflows/pre-commit-optional.yaml | 2 +- .github/workflows/pre-commit.yaml | 2 +- .github/workflows/setup-docker.yaml | 2 +- .github/workflows/setup-universe.yaml | 2 +- .github/workflows/spell-check-differential.yaml | 2 +- .github/workflows/update-docker-manifest.yaml | 2 +- .github/workflows/update-tool-versions.yaml | 2 +- .github/workflows/vcs-import.yaml | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 3f0fdb23b13..02dd6472811 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -15,7 +15,7 @@ jobs: container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run setup script run: | diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index a57934080b0..45cb811ae17 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -15,7 +15,7 @@ jobs: container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run setup script run: | diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index e2c435fc0ee..9774de4e5cb 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -34,7 +34,7 @@ jobs: sudo chown -R $USER:$USER ${{ github.workspace }} - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Free disk space uses: ./.github/actions/free-disk-space diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 798b4e695e7..f5cebc8eb99 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -29,7 +29,7 @@ jobs: additional-tag-suffix: -cuda steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Free disk space uses: ./.github/actions/free-disk-space diff --git a/.github/workflows/github-release.yaml b/.github/workflows/github-release.yaml index 95ebb8725f6..b426d0cba66 100644 --- a/.github/workflows/github-release.yaml +++ b/.github/workflows/github-release.yaml @@ -30,7 +30,7 @@ jobs: echo "tag-name=${REF_NAME#beta/}" >> $GITHUB_OUTPUT - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 ref: ${{ steps.set-tag-name.outputs.ref-name }} diff --git a/.github/workflows/load-env.yaml b/.github/workflows/load-env.yaml index 1e86a6d0bba..508a30bf74a 100644 --- a/.github/workflows/load-env.yaml +++ b/.github/workflows/load-env.yaml @@ -16,7 +16,7 @@ jobs: rosdistro: ${{ steps.set-env.outputs.rosdistro }} steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Load env run: | diff --git a/.github/workflows/pre-commit-ansible.yaml b/.github/workflows/pre-commit-ansible.yaml index feaef88fe2e..2de37e26ef9 100644 --- a/.github/workflows/pre-commit-ansible.yaml +++ b/.github/workflows/pre-commit-ansible.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Ansible Galaxy depends for ansible-lint run: | diff --git a/.github/workflows/pre-commit-optional.yaml b/.github/workflows/pre-commit-optional.yaml index e754ecab24f..38738196a0b 100644 --- a/.github/workflows/pre-commit-optional.yaml +++ b/.github/workflows/pre-commit-optional.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index b231dbda879..33c00ee1066 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -16,7 +16,7 @@ jobs: private_key: ${{ secrets.PRIVATE_KEY }} - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/setup-docker.yaml b/.github/workflows/setup-docker.yaml index 9e3fee08f8c..515002da06a 100644 --- a/.github/workflows/setup-docker.yaml +++ b/.github/workflows/setup-docker.yaml @@ -13,7 +13,7 @@ jobs: container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run setup script run: | diff --git a/.github/workflows/setup-universe.yaml b/.github/workflows/setup-universe.yaml index 5735967e674..1750d34b913 100644 --- a/.github/workflows/setup-universe.yaml +++ b/.github/workflows/setup-universe.yaml @@ -13,7 +13,7 @@ jobs: container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run setup script run: | diff --git a/.github/workflows/spell-check-differential.yaml b/.github/workflows/spell-check-differential.yaml index eb18ccdba38..1fbf2ff4692 100644 --- a/.github/workflows/spell-check-differential.yaml +++ b/.github/workflows/spell-check-differential.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run spell-check uses: autowarefoundation/autoware-github-actions/spell-check@v1 diff --git a/.github/workflows/update-docker-manifest.yaml b/.github/workflows/update-docker-manifest.yaml index 26cda041fc9..a82929bcdeb 100644 --- a/.github/workflows/update-docker-manifest.yaml +++ b/.github/workflows/update-docker-manifest.yaml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Combine multi arch images for 'autoware-universe' uses: ./.github/actions/combine-multi-arch-images diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 0fd325d7434..d69a3f3d8b0 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -17,7 +17,7 @@ jobs: private_key: ${{ secrets.PRIVATE_KEY }} - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up sd uses: kenji-miyake/setup-sd@v1 diff --git a/.github/workflows/vcs-import.yaml b/.github/workflows/vcs-import.yaml index 829c1c81e29..235c2b19df3 100644 --- a/.github/workflows/vcs-import.yaml +++ b/.github/workflows/vcs-import.yaml @@ -14,7 +14,7 @@ jobs: container: ros:${{ needs.load-env.outputs.rosdistro }} steps: - name: Check out repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install pip for rosdep run: | From 2561c2a661a77df716ec36db6723ba777b8a07e8 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 12:27:46 +0300 Subject: [PATCH 097/380] chore: update tool versions (#3413) Signed-off-by: GitHub Co-authored-by: mitsudome-r --- ansible/roles/pre_commit/README.md | 2 +- ansible/roles/pre_commit/defaults/main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index dcef46ec194..2eebce36c6d 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -14,7 +14,7 @@ The `clang_format_version` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) ```bash -clang_format_version=16.0.0 +clang_format_version=17.0.4 pip3 install pre-commit clang-format==${clang_format_version} sudo apt install golang diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml index 93b1c8c66aa..b8afe445d6e 100644 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ b/ansible/roles/pre_commit/defaults/main.yaml @@ -1 +1 @@ -clang_format_version: 16.0.0 +clang_format_version: 17.0.4 From afad2daf68b9ae77ab73bbab2c0c56a7c0692915 Mon Sep 17 00:00:00 2001 From: Zulfaqar Azmi <93502286+zulfaqar-azmi-t4@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:44:04 +0900 Subject: [PATCH 098/380] chore(.clang-tidy): adds bugprone-unchecked-optional-access check (#3911) Signed-off-by: Muhammad Zulfaqar --- .clang-tidy | 1 + 1 file changed, 1 insertion(+) diff --git a/.clang-tidy b/.clang-tidy index f9210b66546..c4533f50cce 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -41,6 +41,7 @@ Checks: " bugprone-terminating-continue, bugprone-throw-keyword-missing, bugprone-too-small-loop-variable, + bugprone-unchecked-optional-access, bugprone-undefined-memory-manipulation, bugprone-undelegated-constructor, bugprone-unhandled-self-assignment, From 63d9f392247cd4e35f06f9fd86c4ada191f8b7f7 Mon Sep 17 00:00:00 2001 From: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:54:21 +0900 Subject: [PATCH 099/380] revert: "feat(repos): add heaphook to repos (#3306)" (#3519) revert "feat(repos): add heaphook to repos (#3306)" This reverts commit 2f4855cdafcead27958e1da0cf92f5947c0d57e4. --- autoware.repos | 5 ----- 1 file changed, 5 deletions(-) diff --git a/autoware.repos b/autoware.repos index 11e67852466..093075200b8 100644 --- a/autoware.repos +++ b/autoware.repos @@ -106,8 +106,3 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_individual_params.git version: main - # middleware - middleware/external/heaphook: - type: git - url: https://github.com/tier4/heaphook.git - version: main From 82bd9cab03399e51f0e899a5935f845d206c8ac9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 15:23:30 +0300 Subject: [PATCH 100/380] chore(deps): bump styfle/cancel-workflow-action from 0.11.0 to 0.12.0 (#3992) Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.11.0 to 0.12.0. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.11.0...0.12.0) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/cancel-previous-workflows.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cancel-previous-workflows.yaml b/.github/workflows/cancel-previous-workflows.yaml index f9c29b81b6e..1da4d24966d 100644 --- a/.github/workflows/cancel-previous-workflows.yaml +++ b/.github/workflows/cancel-previous-workflows.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel previous runs - uses: styfle/cancel-workflow-action@0.11.0 + uses: styfle/cancel-workflow-action@0.12.0 with: workflow_id: all all_but_latest: true From d3cd823c1a0382f5fff3ccabc487cbe2ba5f5349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Wed, 15 Nov 2023 16:07:07 +0300 Subject: [PATCH 101/380] ci: update the stale label (#3993) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/stale.yml b/.github/stale.yml index 84928d1b815..bc99e4383ca 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -4,7 +4,7 @@ daysUntilClose: false # Label to use when marking as stale -staleLabel: stale +staleLabel: status:stale # Comment to post when marking as stale markComment: > From 439c8cdc03df6fe1944a1868de48610cc6d1be7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Thu, 16 Nov 2023 14:54:25 +0300 Subject: [PATCH 102/380] refactor(ansible): rename some variables to conform new lint rules (#3988) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/workflows/update-tool-versions.yaml | 4 ++-- ansible/playbooks/docker.yaml | 2 +- ansible/playbooks/universe.yaml | 6 +++--- ansible/roles/cuda/README.md | 2 +- ansible/roles/cuda/defaults/main.yaml | 2 +- ansible/roles/cuda/tasks/main.yaml | 2 +- ansible/roles/pre_commit/README.md | 12 ++++++------ ansible/roles/pre_commit/defaults/main.yaml | 2 +- ansible/roles/pre_commit/tasks/main.yaml | 2 +- ansible/roles/ros2/README.md | 14 +++++++------- ansible/roles/ros2/defaults/main.yaml | 2 +- ansible/roles/ros2/tasks/main.yaml | 4 ++-- ansible/roles/tensorrt/defaults/main.yaml | 2 +- ansible/roles/tensorrt/tasks/main.yaml | 4 ++-- setup-dev-env.sh | 8 ++++---- 15 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index d69a3f3d8b0..513289ad93e 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -35,8 +35,8 @@ jobs: - name: Update clang-format version run: | - sd '(clang_format_version): .*' '$1: ${{ steps.get-clang-format-version.outputs.version }}' ansible/roles/pre_commit/defaults/main.yaml - sd '(clang_format_version)=.*' '$1=${{ steps.get-clang-format-version.outputs.version }}' ansible/roles/pre_commit/README.md + sd '(pre_commit_clang_format_version): .*' '$1: ${{ steps.get-clang-format-version.outputs.version }}' ansible/roles/pre_commit/defaults/main.yaml + sd '(pre_commit_clang_format_version)=.*' '$1=${{ steps.get-clang-format-version.outputs.version }}' ansible/roles/pre_commit/README.md - name: Create PR id: create-pr diff --git a/ansible/playbooks/docker.yaml b/ansible/playbooks/docker.yaml index 434d800c106..2302909c94b 100644 --- a/ansible/playbooks/docker.yaml +++ b/ansible/playbooks/docker.yaml @@ -21,7 +21,7 @@ when: prompt_install_nvidia != 'y' roles: - role: autoware.dev_env.cuda - when: prompt_install_nvidia == 'y' and install_devel == 'true' + when: prompt_install_nvidia == 'y' and tensorrt_install_devel == 'true' - role: autoware.dev_env.docker_engine - role: autoware.dev_env.nvidia_docker - role: autoware.dev_env.rocker diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index 9ffb57bed3c..3d09c9f259f 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -37,10 +37,10 @@ # Core - role: autoware.dev_env.autoware_core - role: autoware.dev_env.ccache - when: install_devel == 'true' + when: tensorrt_install_devel == 'true' - role: autoware.dev_env.plotjuggler - role: autoware.dev_env.pre_commit - when: install_devel == 'true' + when: tensorrt_install_devel == 'true' - role: autoware.dev_env.ros2 - role: autoware.dev_env.ros2_dev_tools - role: autoware.dev_env.rmw_implementation @@ -48,7 +48,7 @@ # Universe - role: autoware.dev_env.autoware_universe - role: autoware.dev_env.cuda - when: prompt_install_nvidia == 'y' and install_devel == 'true' + when: prompt_install_nvidia == 'y' and tensorrt_install_devel == 'true' - role: autoware.dev_env.pacmod when: rosdistro != 'rolling' - role: autoware.dev_env.tensorrt diff --git a/ansible/roles/cuda/README.md b/ansible/roles/cuda/README.md index b5075576055..9264489f701 100644 --- a/ansible/roles/cuda/README.md +++ b/ansible/roles/cuda/README.md @@ -7,7 +7,7 @@ This role installs [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) fol | Name | Required | Description | | -------------------- | -------- | -------------------------------- | | cuda_version | true | The version of CUDA Toolkit. | -| install_cuda_drivers | false | Whether to install cuda-drivers. | +| cuda_install_drivers | false | Whether to install cuda-drivers. | ## Manual Installation diff --git a/ansible/roles/cuda/defaults/main.yaml b/ansible/roles/cuda/defaults/main.yaml index 3488c01e83e..1945f8820bf 100644 --- a/ansible/roles/cuda/defaults/main.yaml +++ b/ansible/roles/cuda/defaults/main.yaml @@ -1 +1 @@ -install_cuda_drivers: true +cuda_install_drivers: true diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index 81dd8ada902..e4a3c2f4107 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -54,7 +54,7 @@ name: - cuda-drivers update_cache: true - when: install_cuda_drivers | bool + when: cuda_install_drivers | bool - name: Add PATH to .bashrc ansible.builtin.lineinfile: diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index 2eebce36c6d..5839f5d08ba 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -4,18 +4,18 @@ This role installs dependent tools for [pre-commit](https://pre-commit.com/). ## Inputs -| Name | Required | Description | -| -------------------- | -------- | --------------------------- | -| clang_format_version | false | The version of ClangFormat. | +| Name | Required | Description | +| ------------------------------- | -------- | --------------------------- | +| pre_commit_clang_format_version | false | The version of ClangFormat. | ## Manual Installation -The `clang_format_version` variable can also be found in: +The `pre_commit_clang_format_version` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) ```bash -clang_format_version=17.0.4 -pip3 install pre-commit clang-format==${clang_format_version} +pre_commit_clang_format_version=17.0.4 +pip3 install pre-commit clang-format==${pre_commit_clang_format_version} sudo apt install golang ``` diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml index b8afe445d6e..111748d7e90 100644 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ b/ansible/roles/pre_commit/defaults/main.yaml @@ -1 +1 @@ -clang_format_version: 17.0.4 +pre_commit_clang_format_version: 17.0.4 diff --git a/ansible/roles/pre_commit/tasks/main.yaml b/ansible/roles/pre_commit/tasks/main.yaml index 6a69af8db76..bd185cc164e 100644 --- a/ansible/roles/pre_commit/tasks/main.yaml +++ b/ansible/roles/pre_commit/tasks/main.yaml @@ -7,7 +7,7 @@ - name: Install clang-format ansible.builtin.pip: name: clang-format - version: "{{ clang_format_version }}" + version: "{{ pre_commit_clang_format_version }}" executable: pip3 - name: Install Go diff --git a/ansible/roles/ros2/README.md b/ansible/roles/ros2/README.md index 0fd0ce65607..54fb39e0a94 100644 --- a/ansible/roles/ros2/README.md +++ b/ansible/roles/ros2/README.md @@ -16,14 +16,14 @@ $ apt-cache policy | grep universe ## Inputs -| Name | Required | Description | -| ----------------- | -------- | ------------------------------------------------ | -| rosdistro | true | The ROS distro. | -| installation_type | false | The installation type (`desktop` or `ros-base`). | +| Name | Required | Description | +| ---------------------- | -------- | ------------------------------------------------ | +| rosdistro | true | The ROS distro. | +| ros2_installation_type | false | The installation type (`desktop` or `ros-base`). | ## Manual Installation -The `installation_type` variable can also be found in: +The `ros2_installation_type` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) For Universe, the `rosdistro` variable can also be found in: @@ -57,8 +57,8 @@ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-a sudo apt update # Desktop Install -installation_type=desktop -sudo apt install ros-${rosdistro}-${installation_type} +ros2_installation_type=desktop +sudo apt install ros-${rosdistro}-${ros2_installation_type} # Environment setup # (Optional) You can source ros2 in the ~/.bashrc file. diff --git a/ansible/roles/ros2/defaults/main.yaml b/ansible/roles/ros2/defaults/main.yaml index fca2d3a0cdd..ad22b88e874 100644 --- a/ansible/roles/ros2/defaults/main.yaml +++ b/ansible/roles/ros2/defaults/main.yaml @@ -1 +1 @@ -installation_type: desktop +ros2_installation_type: desktop diff --git a/ansible/roles/ros2/tasks/main.yaml b/ansible/roles/ros2/tasks/main.yaml index 679f5dc4c90..ab77bb632c1 100644 --- a/ansible/roles/ros2/tasks/main.yaml +++ b/ansible/roles/ros2/tasks/main.yaml @@ -34,10 +34,10 @@ state: present update_cache: true -- name: Install ros-{{ rosdistro + '-' + installation_type }} +- name: Install ros-{{ rosdistro + '-' + ros2_installation_type }} become: true ansible.builtin.apt: - name: ros-{{ rosdistro }}-{{ installation_type }} + name: ros-{{ rosdistro }}-{{ ros2_installation_type }} state: latest update_cache: true diff --git a/ansible/roles/tensorrt/defaults/main.yaml b/ansible/roles/tensorrt/defaults/main.yaml index 8419eba6fa9..02edd251d82 100644 --- a/ansible/roles/tensorrt/defaults/main.yaml +++ b/ansible/roles/tensorrt/defaults/main.yaml @@ -1 +1 @@ -install_devel: true +tensorrt_install_devel: true diff --git a/ansible/roles/tensorrt/tasks/main.yaml b/ansible/roles/tensorrt/tasks/main.yaml index 9e9d80d05c3..df85ae75bb5 100644 --- a/ansible/roles/tensorrt/tasks/main.yaml +++ b/ansible/roles/tensorrt/tasks/main.yaml @@ -23,7 +23,7 @@ allow_change_held_packages: true allow_downgrade: true update_cache: true - when: install_devel | bool + when: tensorrt_install_devel | bool # apt-mark hold - name: Prevent CUDA-related packages from upgrading @@ -49,4 +49,4 @@ - libnvinfer-plugin-dev - libnvparsers-dev - libnvonnxparsers-dev - when: install_devel | bool + when: tensorrt_install_devel | bool diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 42c714b7b9b..14f215ef6f2 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Set up development environment for Autoware Core/Universe. -# Usage: setup-dev-env.sh [-y] [-v] [--no-nvidia] +# Usage: setup-dev-env.sh [-y] [-v] [--no-nvidia] # Note: -y option is only for CI. set -e @@ -90,11 +90,11 @@ fi # Check installation of dev package if [ "$option_runtime" = "true" ]; then - ansible_args+=("--extra-vars" "install_devel=false") + ansible_args+=("--extra-vars" "tensorrt_install_devel=false") # ROS installation type, default "desktop" - ansible_args+=("--extra-vars" "installation_type=ros-base") + ansible_args+=("--extra-vars" "ros2_installation_type=ros-base") else - ansible_args+=("--extra-vars" "install_devel=true") + ansible_args+=("--extra-vars" "tensorrt_install_devel=true") fi ansible_args+=("--extra-vars" "data_dir=$option_data_dir") From 5c420db9aa4354327554467199c1fc7e4a9dc395 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 12:12:01 +0000 Subject: [PATCH 103/380] ci(pre-commit-ansible): autoupdate (#3512) Signed-off-by: GitHub Co-authored-by: github-actions --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index cfad1ff9d68..0fbe1ce312f 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v6.16.1 + rev: v6.22.0 hooks: - id: ansible-lint additional_dependencies: From 839a0da232e9969677eb4a13c1ba10af7e2a8617 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:28:44 +0300 Subject: [PATCH 104/380] chore: update tool versions (#3996) Signed-off-by: GitHub Co-authored-by: xmfcx --- ansible/roles/pre_commit/README.md | 2 +- ansible/roles/pre_commit/defaults/main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index 5839f5d08ba..87096f9823b 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -14,7 +14,7 @@ The `pre_commit_clang_format_version` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) ```bash -pre_commit_clang_format_version=17.0.4 +pre_commit_clang_format_version=17.0.5 pip3 install pre-commit clang-format==${pre_commit_clang_format_version} sudo apt install golang diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml index 111748d7e90..dc6fbd290a2 100644 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ b/ansible/roles/pre_commit/defaults/main.yaml @@ -1 +1 @@ -pre_commit_clang_format_version: 17.0.4 +pre_commit_clang_format_version: 17.0.5 From c9c4546705bc5a3ef4ebaff0cd151e32b1a5b16b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:31:03 +0300 Subject: [PATCH 105/380] chore(deps): bump kenji-miyake/setup-sd from 1 to 2 (#4000) Bumps [kenji-miyake/setup-sd](https://github.com/kenji-miyake/setup-sd) from 1 to 2. - [Release notes](https://github.com/kenji-miyake/setup-sd/releases) - [Commits](https://github.com/kenji-miyake/setup-sd/compare/v1...v2) --- updated-dependencies: - dependency-name: kenji-miyake/setup-sd dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-tool-versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 513289ad93e..351d16740ab 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v4 - name: Set up sd - uses: kenji-miyake/setup-sd@v1 + uses: kenji-miyake/setup-sd@v2 - name: Get clang-format version id: get-clang-format-version From 894fd0b0dc0e77ab0dbfc72f6e42c3971542ab97 Mon Sep 17 00:00:00 2001 From: Alexey Panferov <37497658+lexavtanke@users.noreply.github.com> Date: Thu, 30 Nov 2023 02:01:15 +0300 Subject: [PATCH 106/380] fix(ansible): disable artifact download prompt in with -y flag (#4026) * fix(ansible): disable artifact download prompt in with -y flag Signed-off-by: Alexey Panferov * style(pre-commit): autofix --------- Signed-off-by: Alexey Panferov Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- setup-dev-env.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 14f215ef6f2..71338f7f58d 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -38,6 +38,10 @@ while [ "$1" != "" ]; do option_data_dir="$2" shift ;; + --download-artifacts) + # Set download artifacts option + option_download_artifacts=true + ;; *) args+=("$1") ;; @@ -97,6 +101,12 @@ else ansible_args+=("--extra-vars" "tensorrt_install_devel=true") fi +# Check downloading artifacts +if [ "$option_yes" = "true" ] || [ "$option_download_artifacts" = "true" ]; then + echo -e "\e[36mArtifacts will be downloaded to $option_data_dir\e[m" + ansible_args+=("--extra-vars" "prompt_download_artifacts=y") +fi + ansible_args+=("--extra-vars" "data_dir=$option_data_dir") # Load env From d4dccbc948fa18de0be0ea4ff3056b371e58ac08 Mon Sep 17 00:00:00 2001 From: Kotaro Yoshimoto Date: Wed, 6 Dec 2023 23:01:39 +0900 Subject: [PATCH 107/380] fix: wrong option in setup-dev-env.sh (#4039) Signed-off-by: Kotaro Yoshimoto --- setup-dev-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 71338f7f58d..3eb24732940 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -89,7 +89,7 @@ fi # Check installation of CUDA Drivers if [ "$option_no_cuda_drivers" = "true" ]; then - ansible_args+=("--extra-vars" "install_cuda_drivers=false") + ansible_args+=("--extra-vars" "cuda_install_drivers=false") fi # Check installation of dev package From aab95ebcb90da2ef82f5da24db13019fde96de6b Mon Sep 17 00:00:00 2001 From: Berkay Karaman Date: Fri, 15 Dec 2023 06:03:22 +0300 Subject: [PATCH 108/380] feat(autoware): increase initialize duration (#4053) Signed-off-by: Berkay Karaman --- .webauto-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.webauto-ci.yaml b/.webauto-ci.yaml index 95995293ddf..8e753b6c9ba 100644 --- a/.webauto-ci.yaml +++ b/.webauto-ci.yaml @@ -23,7 +23,7 @@ simulations: architecture_type: awf/universe vehicle_model: sample_vehicle sensor_model: sample_sensor_kit - initialize_duration: "45" + initialize_duration: "90" release: components: From bf95c380db6debdf07fb9b6854036df567e98903 Mon Sep 17 00:00:00 2001 From: Yusuke Muramatsu Date: Thu, 28 Dec 2023 15:10:50 +0900 Subject: [PATCH 109/380] feat(artifacts): update traffic_light_fine_detector and traffic_light_classifier artifacts (#4087) * feat: add traffic_light_classifier artifacts Signed-off-by: yukke42 * feat: update traffic_light_fine_detector artifacts Signed-off-by: yukke42 * chore: rename tlr yolox-s onnx files Signed-off-by: yukke42 * docs: update instruction Signed-off-by: yukke42 --------- Signed-off-by: yukke42 --- ansible/roles/artifacts/README.md | 15 ++++--- ansible/roles/artifacts/tasks/main.yaml | 60 +++++++++++++++++++------ 2 files changed, 56 insertions(+), 19 deletions(-) diff --git a/ansible/roles/artifacts/README.md b/ansible/roles/artifacts/README.md index 144b6432ba1..4333ee68726 100644 --- a/ansible/roles/artifacts/README.md +++ b/ansible/roles/artifacts/README.md @@ -79,17 +79,22 @@ $ wget -P ~/autoware_data/traffic_light_classifier/ \ https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_1.onnx \ https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_4.onnx \ https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_6.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/lamp_labels.txt + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/lamp_labels.txt \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_1.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_4.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_6.onnx \ + https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/lamp_labels_ped.txt + # traffic_light_fine_detector $ mkdir -p ~/autoware_data/traffic_light_fine_detector/ $ wget -P ~/autoware_data/traffic_light_fine_detector/ \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_1.onnx \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_4.onnx \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_6.onnx \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_labels.txt + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_1.onnx \ + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_4.onnx \ + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_6.onnx \ + https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_labels.txt # traffic_light_ssd_fine_detector diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 5e151296e28..3a859777d06 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -292,6 +292,30 @@ mode: "644" checksum: sha256:44d94540fa8b89dfb39cd9a8523cf010ddfb10ea2f1f9b53bf3618ce7f4912ad +- name: Download traffic_light_classifier/ped_traffic_light_classifier_mobilenetv2_batch_1.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_1.onnx + dest: "{{ data_dir }}/traffic_light_classifier/ped_traffic_light_classifier_mobilenetv2_batch_1.onnx" + mode: "644" + checksum: sha256:b52632fee96d1bc99922e743335ebfd49d6a0645c8a04e615f156e38661add24 + +- name: Download traffic_light_classifier/ped_traffic_light_classifier_mobilenetv2_batch_4.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_4.onnx + dest: "{{ data_dir }}/traffic_light_classifier/ped_traffic_light_classifier_mobilenetv2_batch_4.onnx" + mode: "644" + checksum: sha256:ef0a3052857cdc6f380da524560548b40e9e46f876cccf3cd0cb40ccddae9892 + +- name: Download traffic_light_classifier/ped_traffic_light_classifier_mobilenetv2_batch_6.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_6.onnx + dest: "{{ data_dir }}/traffic_light_classifier/ped_traffic_light_classifier_mobilenetv2_batch_6.onnx" + mode: "644" + checksum: sha256:b56700551254afa985916d03b74372ebc675f2d9b76ee0e39c46e88c37744a4f + - name: Download traffic_light_classifier/lamp_labels.txt become: true ansible.builtin.get_url: @@ -300,6 +324,14 @@ mode: "644" checksum: sha256:1a5a49eeec5593963eab8d70f48b8a01bfb07e753e9688eb1510ad26e803579d +- name: Download traffic_light_classifier/lamp_labels_ped.txt + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/lamp_labels_ped.txt + dest: "{{ data_dir }}/traffic_light_classifier/lamp_labels_ped.txt" + mode: "644" + checksum: sha256:5427e1b7c2e33acd9565ede29e77992c38137bcf7d7074c73ebbc38080c6bcac + # traffic_light_fine_detector - name: Create traffic_light_fine_detector directory inside {{ data_dir }} ansible.builtin.file: @@ -307,37 +339,37 @@ mode: "755" state: directory -- name: Download traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx +- name: Download traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_1.onnx become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_1.onnx - dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx" + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_1.onnx + dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_1.onnx" mode: "644" - checksum: sha256:922839fcf22bd32ae5065146fcec193e9d6360ca03bd4c83faea835045daf8eb + checksum: sha256:1ad633066a1195006f4709f8fa07800dd65a74a814b3efb4c99bcc5a1a7962f6 -- name: Download traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx +- name: Download traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_4.onnx become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_4.onnx - dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx" + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_4.onnx + dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_4.onnx" mode: "644" - checksum: sha256:b3c6e00acc6ff547d165469684ffb620a9a6330e9d591d445f50c4cf5cb4e292 + checksum: sha256:cf93eb1e1a97aefc6edd0c0c4d77c7f5fc2aa1e81e3c5c9cd49d976173d03a04 -- name: Download traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx +- name: Download traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_6.onnx become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_yolox_s_batch_6.onnx - dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx" + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_6.onnx + dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_6.onnx" mode: "644" - checksum: sha256:2824d4c5b7ab5f6bfd41e43e82747107c53e1c727b1cf1dd6746bc49e6749128 + checksum: sha256:0b05a89fb30f1f92c6ec687d48e8ceda4da6f81cbd82d8a102d168753a6cedb6 - name: Download traffic_light_fine_detector/tlr_labels.txt become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v2/tlr_labels.txt + url: https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_labels.txt dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_labels.txt" mode: "644" - checksum: sha256:a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 + checksum: sha256:a2a91f5fe9c2e68e3e3647a272bb9bb25cd07631a1990a3fb15efddce7691131 # traffic_light_ssd_fine_detector - name: Create traffic_light_ssd_fine_detector directory inside {{ data_dir }} From 01feac76870bc226903130bbb5233a06c45aa756 Mon Sep 17 00:00:00 2001 From: Satoshi OTA <44889564+satoshi-ota@users.noreply.github.com> Date: Thu, 25 Jan 2024 17:55:46 +0900 Subject: [PATCH 110/380] feat(ansible): add new task to install libqt5charts5-dev (#4119) Signed-off-by: satoshi-ota --- ansible/roles/autoware_universe/tasks/main.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ansible/roles/autoware_universe/tasks/main.yaml b/ansible/roles/autoware_universe/tasks/main.yaml index c59e688f538..a1768a394f7 100644 --- a/ansible/roles/autoware_universe/tasks/main.yaml +++ b/ansible/roles/autoware_universe/tasks/main.yaml @@ -1,3 +1,10 @@ +- name: Install libqt5charts5-dev # remove this task after merging https://github.com/ros/rosdistro/pull/39705. + become: true + ansible.builtin.apt: + name: libqt5charts5-dev + state: latest + update_cache: true + - name: Install geographiclib-tools become: true ansible.builtin.apt: From 483e3b679fdf07355801ddeedbba53eda614107b Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Wed, 31 Jan 2024 19:30:10 +0900 Subject: [PATCH 111/380] feat(autoware.repos): add tools.repos file (#4127) Signed-off-by: Ryohsuke Mitsudome --- tools.repos | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 tools.repos diff --git a/tools.repos b/tools.repos new file mode 100644 index 00000000000..f2d1a47d9fa --- /dev/null +++ b/tools.repos @@ -0,0 +1,5 @@ +repositories: + tools: + type: git + url: https://github.com/autowarefoundation/autoware_tools.git + version: main From 2c2edff5559fe8d12c8d5c46b55c2aade51b14da Mon Sep 17 00:00:00 2001 From: Esteve Fernandez <33620+esteve@users.noreply.github.com> Date: Thu, 8 Feb 2024 15:20:40 +0100 Subject: [PATCH 112/380] chore(ansible): remove task installing libqt5charts5-dev (#4156) Signed-off-by: Esteve Fernandez --- ansible/roles/autoware_universe/tasks/main.yaml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ansible/roles/autoware_universe/tasks/main.yaml b/ansible/roles/autoware_universe/tasks/main.yaml index a1768a394f7..c59e688f538 100644 --- a/ansible/roles/autoware_universe/tasks/main.yaml +++ b/ansible/roles/autoware_universe/tasks/main.yaml @@ -1,10 +1,3 @@ -- name: Install libqt5charts5-dev # remove this task after merging https://github.com/ros/rosdistro/pull/39705. - become: true - ansible.builtin.apt: - name: libqt5charts5-dev - state: latest - update_cache: true - - name: Install geographiclib-tools become: true ansible.builtin.apt: From e91a061d5a4735b64b78b5773d790be24ffcca2d Mon Sep 17 00:00:00 2001 From: kminoda <44218668+kminoda@users.noreply.github.com> Date: Fri, 9 Feb 2024 17:16:50 +0900 Subject: [PATCH 113/380] feat(traffic_light_ssd_fine_detector): remove package (#4161) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: kminoda Co-authored-by: M. Fatih Cırıt --- ansible/roles/artifacts/README.md | 8 -------- ansible/roles/artifacts/SHA256SUMS | 2 -- ansible/roles/artifacts/tasks/main.yaml | 23 ----------------------- 3 files changed, 33 deletions(-) diff --git a/ansible/roles/artifacts/README.md b/ansible/roles/artifacts/README.md index 4333ee68726..d5782ebdc86 100644 --- a/ansible/roles/artifacts/README.md +++ b/ansible/roles/artifacts/README.md @@ -97,14 +97,6 @@ $ wget -P ~/autoware_data/traffic_light_fine_detector/ \ https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_labels.txt -# traffic_light_ssd_fine_detector - -$ mkdir -p ~/autoware_data/traffic_light_ssd_fine_detector/ -$ wget -P ~/autoware_data/traffic_light_ssd_fine_detector/ \ - https://awf.ml.dev.web.auto/perception/models/mb2-ssd-lite-tlr.onnx \ - https://awf.ml.dev.web.auto/perception/models/voc_labels_tl.txt - - # tvm_utility $ mkdir -p ~/autoware_data/tvm_utility/models/yolo_v2_tiny diff --git a/ansible/roles/artifacts/SHA256SUMS b/ansible/roles/artifacts/SHA256SUMS index 6b007cd88d3..06e4b2f481a 100644 --- a/ansible/roles/artifacts/SHA256SUMS +++ b/ansible/roles/artifacts/SHA256SUMS @@ -35,7 +35,5 @@ a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 ./traffic_ligh 922839fcf22bd32ae5065146fcec193e9d6360ca03bd4c83faea835045daf8eb ./traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx b3c6e00acc6ff547d165469684ffb620a9a6330e9d591d445f50c4cf5cb4e292 ./traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx 2824d4c5b7ab5f6bfd41e43e82747107c53e1c727b1cf1dd6746bc49e6749128 ./traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx -e29e6ee68751a270fb285fd037713939ca7f61a897b4c3a7ab22b0d6a9a21ddf ./traffic_light_ssd_fine_detector/mb2-ssd-lite-tlr.onnx -a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 ./traffic_light_ssd_fine_detector/voc_labels_tl.txt 66b3ca668e577393b657fbe1ed626538d89ca3adccd5862de6c7fa190238dbca ./tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz 1f660e15f95074bade32b1f80dbf618e9cee1f0b9f76d3f4671cb9be7f56eb3a ./yabloc_pose_initializer/resources.tar.gz diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 3a859777d06..b18d84a2518 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -371,29 +371,6 @@ mode: "644" checksum: sha256:a2a91f5fe9c2e68e3e3647a272bb9bb25cd07631a1990a3fb15efddce7691131 -# traffic_light_ssd_fine_detector -- name: Create traffic_light_ssd_fine_detector directory inside {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/traffic_light_ssd_fine_detector" - mode: "755" - state: directory - -- name: Download traffic_light_ssd_fine_detector/mb2-ssd-lite-tlr.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/mb2-ssd-lite-tlr.onnx - dest: "{{ data_dir }}/traffic_light_ssd_fine_detector/mb2-ssd-lite-tlr.onnx" - mode: "644" - checksum: sha256:e29e6ee68751a270fb285fd037713939ca7f61a897b4c3a7ab22b0d6a9a21ddf - -- name: Download traffic_light_ssd_fine_detector/voc_labels_tl.txt - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/voc_labels_tl.txt - dest: "{{ data_dir }}/traffic_light_ssd_fine_detector/voc_labels_tl.txt" - mode: "644" - checksum: sha256:a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 - # tvm_utility - name: Create tvm_utility/models directory inside {{ data_dir }} ansible.builtin.file: From 108c7bb3f03c861dafabe50e4819ef5b07c300cc Mon Sep 17 00:00:00 2001 From: kminoda <44218668+kminoda@users.noreply.github.com> Date: Sun, 11 Feb 2024 15:10:08 +0900 Subject: [PATCH 114/380] feat(tensorrt_yolo): remove package (#4160) Signed-off-by: kminoda --- ansible/roles/artifacts/README.md | 14 ----- ansible/roles/artifacts/SHA256SUMS | 14 ----- ansible/roles/artifacts/tasks/main.yaml | 71 ------------------------- 3 files changed, 99 deletions(-) diff --git a/ansible/roles/artifacts/README.md b/ansible/roles/artifacts/README.md index d5782ebdc86..7b8d6f67d77 100644 --- a/ansible/roles/artifacts/README.md +++ b/ansible/roles/artifacts/README.md @@ -43,20 +43,6 @@ $ wget -P ~/autoware_data/lidar_centerpoint/ \ https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint_tiny.onnx -# tensorrt_yolo - -$ mkdir -p ~/autoware_data/tensorrt_yolo/ -$ wget -P ~/autoware_data/tensorrt_yolo/ \ - https://awf.ml.dev.web.auto/perception/models/yolov3.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolov4.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolov4-tiny.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolov5s.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolov5m.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolov5l.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolov5x.onnx \ - https://awf.ml.dev.web.auto/perception/models/coco.names - - # tensorrt_yolox $ mkdir -p ~/autoware_data/tensorrt_yolox/ diff --git a/ansible/roles/artifacts/SHA256SUMS b/ansible/roles/artifacts/SHA256SUMS index 06e4b2f481a..0c5a32543f6 100644 --- a/ansible/roles/artifacts/SHA256SUMS +++ b/ansible/roles/artifacts/SHA256SUMS @@ -10,20 +10,6 @@ dc1a876580d86ee7a341d543f8ade2ede7f43bd032dc5b44155b1f0175405764 ./lidar_center 2c53465715c1fd2e9dc5727ef3fca74f4cdf0538f74286b0946e219d0ca5693b ./lidar_centerpoint/pts_voxel_encoder_centerpoint_tiny.onnx 3840b6b3590984e8115d66b12061aea3a2cfaed70b4e8d59457f04b0d6f6a1fc ./lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz 41e19de43f30549c325968aee06b4ad0d9701220be819e79d37efdfa86b918d0 ./lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz -634a1132eb33f8091d60f2c346ababe8b905ae08387037aed883953b7329af84 ./tensorrt_yolo/coco.names -61e922f76918dd3d8e0abdc5fb7406f390609e08bd8ab9e5d3b97afb00f30f8c ./tensorrt_yolo/yolov3.onnx -0e877c716fbf8a2b431ee3e57f6c7411a6741319b52c32c6dafc53c7e1b17027 ./tensorrt_yolo/yolov4-tiny.onnx -7c7343156c1bd4b397fd1e44b27334691a6219db3ce2e29a03b72af65ddb8f39 ./tensorrt_yolo/yolov4.onnx -a627e5f70180a8746482b572194090466db62c8d1256602c1cd20374dd960e34 ./tensorrt_yolo/yolov5l.onnx -ee6f67f7c00a34cc4cef2fdd9db30dd714df1a4fb2d7e9fc1731cfe85b673133 ./tensorrt_yolo/yolov5m.onnx -be335ff7746957debf1a6903a61fa3f568b780b4afe4958edf2d4bc98e9e0825 ./tensorrt_yolo/yolov5s.onnx -d7cb4cd7078f87bda22a37828d72867accecedf9f74d0d87b5cc1f6f1180a019 ./tensorrt_yolo/yolov5x.onnx -3540a365bfd6d8afb1b5d8df4ec47f82cb984760d3270c9b41dbbb3422d09a0c ./tensorrt_yolox/label.txt -cc378d327db5616b0b3a4d077bf37100c25a50ecd22d2b542f54098da100f34c ./tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.EntropyV2-calibration.table -f5054e8a890c3be86dc1b4b89a5a36fb2279d4f6110b0159e793be062641bf65 ./tensorrt_yolox/yolox-sPlus-T4-960x960-pseudo-finetune.onnx -b9e9d7da33342262ccaea4469b4d02b8abb32b6d7bf737f9e0883fece1b8f580 ./tensorrt_yolox/yolox-sPlus-opt.EntropyV2-calibration.table -36b0832177b01e6b278e00c7369f1de71e616c36261cbae50f0753d41289da01 ./tensorrt_yolox/yolox-sPlus-opt.onnx -471a665f4243e654dff62578394e508db22ee29fe65d9e389dfc3b0f2dee1255 ./tensorrt_yolox/yolox-tiny.onnx 1a5a49eeec5593963eab8d70f48b8a01bfb07e753e9688eb1510ad26e803579d ./traffic_light_classifier/lamp_labels.txt 55ebb0d117a5e8943f8d1c6769f1d856b533079d4d871d8e923255cc992ad48a ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_1.onnx 684e29843e3128eadb774018730644b3ab9b0a06dc4cdaeed579c2f3fa5d5265 ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_4.onnx diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index b18d84a2518..fde86abbe0d 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -111,77 +111,6 @@ mode: "644" checksum: sha256:9bb0b634f3664bd098ce7d6a3d8a9fb7cc8d9b8252b27f302c71e43316bab551 -# tensorrt_yolo -- name: Create tensorrt_yolo directory inside {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/tensorrt_yolo" - mode: "755" - state: directory - -- name: Download tensorrt_yolo/yolov3.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/yolov3.onnx - dest: "{{ data_dir }}/tensorrt_yolo/yolov3.onnx" - mode: "644" - checksum: sha256:61e922f76918dd3d8e0abdc5fb7406f390609e08bd8ab9e5d3b97afb00f30f8c - -- name: Download tensorrt_yolo/yolov4.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/yolov4.onnx - dest: "{{ data_dir }}/tensorrt_yolo/yolov4.onnx" - mode: "644" - checksum: sha256:7c7343156c1bd4b397fd1e44b27334691a6219db3ce2e29a03b72af65ddb8f39 - -- name: Download tensorrt_yolo/yolov4-tiny.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/yolov4-tiny.onnx - dest: "{{ data_dir }}/tensorrt_yolo/yolov4-tiny.onnx" - mode: "644" - checksum: sha256:0e877c716fbf8a2b431ee3e57f6c7411a6741319b52c32c6dafc53c7e1b17027 - -- name: Download tensorrt_yolo/yolov5s.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/yolov5s.onnx - dest: "{{ data_dir }}/tensorrt_yolo/yolov5s.onnx" - mode: "644" - checksum: sha256:be335ff7746957debf1a6903a61fa3f568b780b4afe4958edf2d4bc98e9e0825 - -- name: Download tensorrt_yolo/yolov5m.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/yolov5m.onnx - dest: "{{ data_dir }}/tensorrt_yolo/yolov5m.onnx" - mode: "644" - checksum: sha256:ee6f67f7c00a34cc4cef2fdd9db30dd714df1a4fb2d7e9fc1731cfe85b673133 - -- name: Download tensorrt_yolo/yolov5l.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/yolov5l.onnx - dest: "{{ data_dir }}/tensorrt_yolo/yolov5l.onnx" - mode: "644" - checksum: sha256:a627e5f70180a8746482b572194090466db62c8d1256602c1cd20374dd960e34 - -- name: Download tensorrt_yolo/yolov5x.onnx - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/yolov5x.onnx - dest: "{{ data_dir }}/tensorrt_yolo/yolov5x.onnx" - mode: "644" - checksum: sha256:d7cb4cd7078f87bda22a37828d72867accecedf9f74d0d87b5cc1f6f1180a019 - -- name: Download tensorrt_yolo/coco.names - become: true - ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/coco.names - dest: "{{ data_dir }}/tensorrt_yolo/coco.names" - mode: "644" - checksum: sha256:634a1132eb33f8091d60f2c346ababe8b905ae08387037aed883953b7329af84 - # tensorrt_yolox - name: Create tensorrt_yolox directory inside {{ data_dir }} ansible.builtin.file: From f9761f1c193373ee8e0cf3d336eaa9665971403c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 14:57:46 +0900 Subject: [PATCH 115/380] chore(deps): bump tibdex/github-app-token from 1 to 2 (#4007) Bumps [tibdex/github-app-token](https://github.com/tibdex/github-app-token) from 1 to 2. - [Release notes](https://github.com/tibdex/github-app-token/releases) - [Commits](https://github.com/tibdex/github-app-token/compare/v1...v2) --- updated-dependencies: - dependency-name: tibdex/github-app-token dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/backport.yaml | 2 +- .github/workflows/pre-commit-ansible-autoupdate.yaml | 2 +- .github/workflows/pre-commit-autoupdate.yaml | 2 +- .github/workflows/pre-commit-optional-autoupdate.yaml | 2 +- .github/workflows/pre-commit.yaml | 2 +- .github/workflows/sync-files.yaml | 2 +- .github/workflows/update-tool-versions.yaml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/backport.yaml b/.github/workflows/backport.yaml index 7a9d63f79c5..d79e7098883 100644 --- a/.github/workflows/backport.yaml +++ b/.github/workflows/backport.yaml @@ -22,7 +22,7 @@ jobs: steps: - name: Generate token id: generate-token - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} diff --git a/.github/workflows/pre-commit-ansible-autoupdate.yaml b/.github/workflows/pre-commit-ansible-autoupdate.yaml index c8749e55fe2..84bc42eada2 100644 --- a/.github/workflows/pre-commit-ansible-autoupdate.yaml +++ b/.github/workflows/pre-commit-ansible-autoupdate.yaml @@ -18,7 +18,7 @@ jobs: steps: - name: Generate token id: generate-token - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml index 597ca2207e8..23b403f2a52 100644 --- a/.github/workflows/pre-commit-autoupdate.yaml +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -18,7 +18,7 @@ jobs: steps: - name: Generate token id: generate-token - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} diff --git a/.github/workflows/pre-commit-optional-autoupdate.yaml b/.github/workflows/pre-commit-optional-autoupdate.yaml index 664e8ba6054..72718377c75 100644 --- a/.github/workflows/pre-commit-optional-autoupdate.yaml +++ b/.github/workflows/pre-commit-optional-autoupdate.yaml @@ -18,7 +18,7 @@ jobs: steps: - name: Generate token id: generate-token - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 33c00ee1066..c724885fcb3 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -10,7 +10,7 @@ jobs: steps: - name: Generate token id: generate-token - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} diff --git a/.github/workflows/sync-files.yaml b/.github/workflows/sync-files.yaml index 5025e6c8bd7..51e523b8031 100644 --- a/.github/workflows/sync-files.yaml +++ b/.github/workflows/sync-files.yaml @@ -18,7 +18,7 @@ jobs: steps: - name: Generate token id: generate-token - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 351d16740ab..579e756312f 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -11,7 +11,7 @@ jobs: steps: - name: Generate token id: generate-token - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} From 185d5f8b0743248b432659ed73d36735f290fe1f Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 06:15:10 +0000 Subject: [PATCH 116/380] chore: update tool versions (#4027) Signed-off-by: GitHub Co-authored-by: mitsudome-r Co-authored-by: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> --- ansible/roles/pre_commit/README.md | 2 +- ansible/roles/pre_commit/defaults/main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md index 87096f9823b..de9fe77522b 100644 --- a/ansible/roles/pre_commit/README.md +++ b/ansible/roles/pre_commit/README.md @@ -14,7 +14,7 @@ The `pre_commit_clang_format_version` variable can also be found in: [./defaults/main.yaml](./defaults/main.yaml) ```bash -pre_commit_clang_format_version=17.0.5 +pre_commit_clang_format_version=17.0.6 pip3 install pre-commit clang-format==${pre_commit_clang_format_version} sudo apt install golang diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml index dc6fbd290a2..34550552379 100644 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ b/ansible/roles/pre_commit/defaults/main.yaml @@ -1 +1 @@ -pre_commit_clang_format_version: 17.0.5 +pre_commit_clang_format_version: 17.0.6 From af0fbe322ba075ee4b4f0f87789c43b54800a234 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Tue, 13 Feb 2024 23:40:31 +0900 Subject: [PATCH 117/380] feat(autoware.repos): add fork of ament_cmake for faster build (#4141) Signed-off-by: Ryohsuke Mitsudome --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index 093075200b8..d5801a6a535 100644 --- a/autoware.repos +++ b/autoware.repos @@ -61,6 +61,10 @@ repositories: type: git url: https://github.com/MapIV/llh_converter.git version: ros2 + universe/external/ament_cmake: # TODO(mitsudome-r): remove when https://github.com/ament/ament_cmake/pull/448 is merged + type: git + url: https://github.com/autowarefoundation/ament_cmake.git + version: feat/faster_ament_libraries_deduplicate # launcher launcher/autoware_launch: type: git From 0d594f70b2a5913c9f1f061b5454c516f6c2911b Mon Sep 17 00:00:00 2001 From: Kotaro Yoshimoto Date: Tue, 20 Feb 2024 16:42:25 +0900 Subject: [PATCH 118/380] chore(webauto-ci): update architecture_type parameter for simulation (#4098) Signed-off-by: Kotaro Yoshimoto --- .webauto-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.webauto-ci.yaml b/.webauto-ci.yaml index 8e753b6c9ba..74a23b71d4e 100644 --- a/.webauto-ci.yaml +++ b/.webauto-ci.yaml @@ -20,7 +20,7 @@ simulations: launch_autoware: "true" autoware_launch_package: autoware_launch autoware_launch_file: planning_simulator.launch.xml - architecture_type: awf/universe + architecture_type: awf/universe/20230906 vehicle_model: sample_vehicle sensor_model: sample_sensor_kit initialize_duration: "90" From c02aa1da58660759c18210d94eade0b96664e488 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Wed, 21 Feb 2024 18:14:47 +0300 Subject: [PATCH 119/380] ci(build-main): improve storage cleaning and ci build pipeline (#4191) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .../actions/docker-build-and-push/action.yaml | 6 +- .github/actions/free-disk-space/action.yaml | 35 ++++----- .github/workflows/build-main-self-hosted.yaml | 72 +++++++++++-------- .github/workflows/build-main.yaml | 67 +++++++++-------- 4 files changed, 100 insertions(+), 80 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index e5f8cf6955d..757c7c3cead 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -14,6 +14,10 @@ inputs: tag-suffix: description: "" required: false + allow-push: + description: "" + default: "true" + required: false runs: using: composite @@ -87,7 +91,7 @@ runs: uses: docker/bake-action@v3 with: # Checking event_name for https://github.com/autowarefoundation/autoware/issues/2796 - push: ${{ github.event_name == 'schedule' || github.ref_name == github.event.repository.default_branch || github.event_name == 'push'}} + push: ${{ (github.event_name == 'schedule' || github.ref_name == github.event.repository.default_branch || github.event_name == 'push') && inputs.allow-push == 'true' }} files: | docker/${{ inputs.bake-target }}/docker-bake.hcl ${{ steps.meta-devel.outputs.bake-file }} diff --git a/.github/actions/free-disk-space/action.yaml b/.github/actions/free-disk-space/action.yaml index 04b0e85235d..963b656313f 100644 --- a/.github/actions/free-disk-space/action.yaml +++ b/.github/actions/free-disk-space/action.yaml @@ -12,25 +12,18 @@ runs: fi shell: bash - # https://github.community/t/bug-strange-no-space-left-on-device-ioexceptions-on-github-runners/17616 - - name: Free disk space - run: | - df -h - - sudo apt-get -y purge \ - dotnet* \ - ghc* \ - php* \ - || true - sudo apt-get -y autoremove - sudo apt-get -y autoclean - - sudo rm -rf \ - /usr/local/lib/android \ - /usr/share/dotnet/ \ - /opt/ghc + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: true - docker rmi $(docker image ls -aq) || true - - df -h - shell: bash + # all of these default to true, but feel free to set to + # "false" if necessary for your workflow + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: true + swap-storage: false diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 02dd6472811..8f51ba5a262 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -6,42 +6,56 @@ on: workflow_dispatch: jobs: - load-env: - uses: ./.github/workflows/load-env.yaml - build-main-self-hosted: - needs: load-env runs-on: [self-hosted, linux, ARM64] - container: ${{ needs.load-env.outputs.base-image }} + strategy: + fail-fast: false + matrix: + name: + - no-cuda + - cuda + include: + - name: no-cuda + base_image_env: base_image + setup-args: --no-nvidia + additional-tag-suffix: "" + - name: cuda + base_image_env: cuda_base_image + setup-args: --no-cuda-drivers + additional-tag-suffix: -cuda steps: - - name: Check out repository - uses: actions/checkout@v4 - - - name: Run setup script + # https://github.com/actions/checkout/issues/211 + - name: Change permission of workspace run: | - ./setup-dev-env.sh -y - - - name: Set git config - uses: autowarefoundation/autoware-github-actions/set-git-config@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} + sudo chown -R $USER:$USER ${{ github.workspace }} - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos + - name: Check out repository + uses: actions/checkout@v4 - - name: Run vcs export - run: | - vcs export --exact src || true + - name: Free disk space + uses: ./.github/actions/free-disk-space - - name: Run rosdep install + - name: Load env run: | - sudo apt-get -y update - rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro ${{ needs.load-env.outputs.rosdistro }} + cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + if [ "$(uname -m)" = "aarch64" ]; then + cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + fi - - name: Build + - name: Build 'autoware-universe' + uses: ./.github/actions/docker-build-and-push + with: + bake-target: autoware-universe + build-args: | + *.platform=linux/arm64 + *.args.ROS_DISTRO=${{ env.rosdistro }} + *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} + *.args.SETUP_ARGS=${{ matrix.setup-args }} + tag-prefix: ${{ env.rosdistro }}- + tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 + allow-push: false + + - name: Show disk space run: | - . /opt/ros/${{ needs.load-env.outputs.rosdistro }}/setup.sh - colcon build --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release + df -h diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 45cb811ae17..0b55e94658e 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -6,42 +6,51 @@ on: workflow_dispatch: jobs: - load-env: - uses: ./.github/workflows/load-env.yaml - build-main: - needs: load-env runs-on: ubuntu-latest - container: ${{ needs.load-env.outputs.base-image }} + strategy: + fail-fast: false + matrix: + name: + - no-cuda + - cuda + include: + - name: no-cuda + base_image_env: base_image + setup-args: --no-nvidia + additional-tag-suffix: "" + - name: cuda + base_image_env: cuda_base_image + setup-args: --no-cuda-drivers + additional-tag-suffix: -cuda steps: - name: Check out repository uses: actions/checkout@v4 - - name: Run setup script - run: | - ./setup-dev-env.sh -y + - name: Free disk space + uses: ./.github/actions/free-disk-space - - name: Set git config - uses: autowarefoundation/autoware-github-actions/set-git-config@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Run vcs import + - name: Load env run: | - mkdir src - vcs import src < autoware.repos + cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + if [ "$(uname -m)" = "aarch64" ]; then + cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV + fi - - name: Run vcs export - run: | - vcs export --exact src || true - - - name: Run rosdep install - run: | - sudo apt-get -y update - rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro ${{ needs.load-env.outputs.rosdistro }} - - - name: Build + - name: Build 'autoware-universe' + uses: ./.github/actions/docker-build-and-push + with: + bake-target: autoware-universe + build-args: | + *.platform=linux/amd64 + *.args.ROS_DISTRO=${{ env.rosdistro }} + *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} + *.args.SETUP_ARGS=${{ matrix.setup-args }} + tag-prefix: ${{ env.rosdistro }}- + tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 + allow-push: false + + - name: Show disk space run: | - . /opt/ros/${{ needs.load-env.outputs.rosdistro }}/setup.sh - colcon build --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release + df -h From 14432298cd298bf285eef9cb935125204af9c573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Thu, 22 Feb 2024 23:28:52 +0300 Subject: [PATCH 120/380] docs(ansible): update ros2_dev_tools readme file (#4206) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- ansible/roles/ros2_dev_tools/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ansible/roles/ros2_dev_tools/README.md b/ansible/roles/ros2_dev_tools/README.md index 6a10a8b5316..1afe660799c 100644 --- a/ansible/roles/ros2_dev_tools/README.md +++ b/ansible/roles/ros2_dev_tools/README.md @@ -11,12 +11,11 @@ None. ```bash # Taken from https://docs.ros.org/en/humble/Installation/Ubuntu-Development-Setup.html sudo apt update && sudo apt install -y \ + python3-colcon-mixin \ python3-flake8-docstrings \ python3-pip \ python3-pytest-cov \ - ros-dev-tools - -sudo apt install -y \ + ros-dev-tools \ python3-flake8-blind-except \ python3-flake8-builtins \ python3-flake8-class-newline \ From e6dc52c0a3b7fec293a95d9889f1433b8b927016 Mon Sep 17 00:00:00 2001 From: Berkay Karaman Date: Mon, 26 Feb 2024 17:33:03 +0300 Subject: [PATCH 121/380] feat(autoware.repos): add autoware_internal_msgs repository (#4212) Signed-off-by: Berkay Karaman --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index d5801a6a535..dee58c86c22 100644 --- a/autoware.repos +++ b/autoware.repos @@ -8,6 +8,10 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_adapi_msgs.git version: main + core/autoware_internal_msgs: + type: git + url: https://github.com/autowarefoundation/autoware_internal_msgs.git + version: main core/autoware_common: type: git url: https://github.com/autowarefoundation/autoware_common.git From da22bdc9215edf188cdbf8ef34637b43956d9049 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Wed, 6 Mar 2024 19:17:52 +0300 Subject: [PATCH 122/380] feat(docker): re-organize the autoware docker containers (#4072) Signed-off-by: oguzkaganozt --- .devcontainer/base/Dockerfile | 14 ++ .devcontainer/base/devcontainer.json | 24 ++ .devcontainer/cuda/Dockerfile | 14 ++ .devcontainer/cuda/devcontainer.json | 26 ++ .dockerignore | 17 ++ .../create-main-distro-alias/action.yaml | 49 ---- .../actions/docker-build-and-push/action.yaml | 127 ++++++++-- ...ocker-build-and-push-main-self-hosted.yaml | 33 ++- .../workflows/docker-build-and-push-main.yaml | 35 ++- .github/workflows/setup-docker.yaml | 5 - .github/workflows/setup-universe.yaml | 5 - .github/workflows/update-docker-manifest.yaml | 36 +-- .hadolint.yaml | 5 + amd64.env | 5 +- ansible/playbooks/core.yaml | 22 -- ansible/playbooks/docker.yaml | 5 +- ansible/playbooks/openadk.yaml | 48 ++++ ansible/playbooks/universe.yaml | 21 +- .../roles/autoware_universe/meta/main.yaml | 2 - ansible/roles/build_tools/README.md | 19 ++ .../defaults/main.yaml | 0 .../meta/main.yaml | 0 .../{ccache => build_tools}/tasks/main.yaml | 3 +- ansible/roles/ccache/README.md | 13 - ansible/roles/cuda/README.md | 31 ++- ansible/roles/cuda/tasks/main.yaml | 82 ++++++- ansible/roles/dev_tools/README.md | 45 ++++ .../defaults/main.yaml | 0 .../defaults => dev_tools/meta}/main.yaml | 0 .../{git_lfs => dev_tools}/tasks/main.yaml | 27 +++ .../roles/{autoware_core => gdown}/README.md | 4 +- .../{ccache/meta => gdown/defaults}/main.yaml | 0 .../defaults => gdown/meta}/main.yaml | 0 .../{autoware_core => gdown}/tasks/main.yaml | 0 .../README.md | 4 +- .../meta => geographiclib/defaults}/main.yaml | 0 .../defaults => geographiclib/meta}/main.yaml | 0 .../tasks/main.yaml | 0 ansible/roles/git_lfs/README.md | 14 -- ansible/roles/kisak_mesa/README.md | 36 +++ .../meta => kisak_mesa/defaults}/main.yaml | 0 .../defaults => kisak_mesa/meta}/main.yaml | 0 ansible/roles/kisak_mesa/tasks/main.yaml | 24 ++ .../README.md | 29 ++- .../defaults}/main.yaml | 0 .../meta}/main.yaml | 0 .../nvidia_container_toolkit/tasks/main.yaml | 34 +++ ansible/roles/nvidia_docker/tasks/main.yaml | 30 --- ansible/roles/pacmod/meta/main.yaml | 2 - ansible/roles/plotjuggler/README.md | 16 -- ansible/roles/plotjuggler/meta/main.yaml | 2 - ansible/roles/plotjuggler/tasks/main.yaml | 7 - ansible/roles/pre_commit/README.md | 21 -- ansible/roles/pre_commit/defaults/main.yaml | 1 - ansible/roles/pre_commit/tasks/main.yaml | 18 -- .../roles/rmw_implementation/meta/main.yaml | 2 - ansible/roles/rocker/README.md | 25 -- ansible/roles/rocker/meta/main.yaml | 0 ansible/roles/rocker/tasks/main.yaml | 33 --- ansible/roles/ros2_dev_tools/meta/main.yaml | 2 - ansible/roles/tensorrt/README.md | 36 ++- ansible/roles/tensorrt/defaults/main.yaml | 1 - ansible/roles/tensorrt/tasks/main.yaml | 4 +- docker/README.md | 222 ++++++++++-------- docker/autoware-openadk/Dockerfile | 136 +++++++++++ docker/autoware-openadk/docker-bake.hcl | 26 ++ docker/autoware-openadk/etc/.bash_aliases | 28 +++ docker/autoware-openadk/etc/ros_entrypoint.sh | 32 +++ docker/autoware-universe/Dockerfile | 139 ----------- docker/autoware-universe/docker-bake.hcl | 19 -- docker/build.sh | 175 +++++++++----- docker/run.sh | 167 +++++++++++++ setup-dev-env.sh | 51 +++- 73 files changed, 1335 insertions(+), 718 deletions(-) create mode 100644 .devcontainer/base/Dockerfile create mode 100644 .devcontainer/base/devcontainer.json create mode 100644 .devcontainer/cuda/Dockerfile create mode 100644 .devcontainer/cuda/devcontainer.json create mode 100644 .dockerignore delete mode 100644 .github/actions/create-main-distro-alias/action.yaml create mode 100644 .hadolint.yaml delete mode 100644 ansible/playbooks/core.yaml create mode 100644 ansible/playbooks/openadk.yaml delete mode 100644 ansible/roles/autoware_universe/meta/main.yaml create mode 100644 ansible/roles/build_tools/README.md rename ansible/roles/{autoware_core => build_tools}/defaults/main.yaml (100%) rename ansible/roles/{autoware_core => build_tools}/meta/main.yaml (100%) rename ansible/roles/{ccache => build_tools}/tasks/main.yaml (80%) delete mode 100644 ansible/roles/ccache/README.md create mode 100644 ansible/roles/dev_tools/README.md rename ansible/roles/{autoware_universe => dev_tools}/defaults/main.yaml (100%) rename ansible/roles/{ccache/defaults => dev_tools/meta}/main.yaml (100%) rename ansible/roles/{git_lfs => dev_tools}/tasks/main.yaml (53%) rename ansible/roles/{autoware_core => gdown}/README.md (59%) rename ansible/roles/{ccache/meta => gdown/defaults}/main.yaml (100%) rename ansible/roles/{git_lfs/defaults => gdown/meta}/main.yaml (100%) rename ansible/roles/{autoware_core => gdown}/tasks/main.yaml (100%) rename ansible/roles/{autoware_universe => geographiclib}/README.md (64%) rename ansible/roles/{git_lfs/meta => geographiclib/defaults}/main.yaml (100%) rename ansible/roles/{nvidia_docker/defaults => geographiclib/meta}/main.yaml (100%) rename ansible/roles/{autoware_universe => geographiclib}/tasks/main.yaml (100%) delete mode 100644 ansible/roles/git_lfs/README.md create mode 100644 ansible/roles/kisak_mesa/README.md rename ansible/roles/{nvidia_docker/meta => kisak_mesa/defaults}/main.yaml (100%) rename ansible/roles/{plotjuggler/defaults => kisak_mesa/meta}/main.yaml (100%) create mode 100644 ansible/roles/kisak_mesa/tasks/main.yaml rename ansible/roles/{nvidia_docker => nvidia_container_toolkit}/README.md (61%) rename ansible/roles/{pre_commit/meta => nvidia_container_toolkit/defaults}/main.yaml (100%) rename ansible/roles/{rocker/defaults => nvidia_container_toolkit/meta}/main.yaml (100%) create mode 100644 ansible/roles/nvidia_container_toolkit/tasks/main.yaml delete mode 100644 ansible/roles/nvidia_docker/tasks/main.yaml delete mode 100644 ansible/roles/plotjuggler/README.md delete mode 100644 ansible/roles/plotjuggler/meta/main.yaml delete mode 100644 ansible/roles/plotjuggler/tasks/main.yaml delete mode 100644 ansible/roles/pre_commit/README.md delete mode 100644 ansible/roles/pre_commit/defaults/main.yaml delete mode 100644 ansible/roles/pre_commit/tasks/main.yaml delete mode 100644 ansible/roles/rocker/README.md delete mode 100644 ansible/roles/rocker/meta/main.yaml delete mode 100644 ansible/roles/rocker/tasks/main.yaml create mode 100644 docker/autoware-openadk/Dockerfile create mode 100644 docker/autoware-openadk/docker-bake.hcl create mode 100644 docker/autoware-openadk/etc/.bash_aliases create mode 100644 docker/autoware-openadk/etc/ros_entrypoint.sh delete mode 100644 docker/autoware-universe/Dockerfile delete mode 100644 docker/autoware-universe/docker-bake.hcl create mode 100755 docker/run.sh diff --git a/.devcontainer/base/Dockerfile b/.devcontainer/base/Dockerfile new file mode 100644 index 00000000000..4392e159588 --- /dev/null +++ b/.devcontainer/base/Dockerfile @@ -0,0 +1,14 @@ +FROM ghcr.io/autowarefoundation/autoware-openadk:latest-devel + +ENV SHELL /bin/bash + +ARG USERNAME=autoware +ARG USER_UID=1000 +ARG USER_GID=$USER_UID + +RUN groupadd --gid $USER_GID $USERNAME \ + && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ + && apt-get update \ + && apt-get install -y sudo \ + && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ + && chmod 0440 /etc/sudoers.d/$USERNAME diff --git a/.devcontainer/base/devcontainer.json b/.devcontainer/base/devcontainer.json new file mode 100644 index 00000000000..bf5238b4c7a --- /dev/null +++ b/.devcontainer/base/devcontainer.json @@ -0,0 +1,24 @@ +{ + "name": "Autoware", + "build": { + "dockerfile": "Dockerfile" + }, + "remoteUser": "autoware", + "hostRequirements": { + "gpu": true + }, + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined", + "--net=host", + "--volume=/etc/localtime:/etc/localtime:ro" + ], + "customizations": { + "vscode": { + "settings.json": { + "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } } + } + } + } +} diff --git a/.devcontainer/cuda/Dockerfile b/.devcontainer/cuda/Dockerfile new file mode 100644 index 00000000000..e0c09f5de29 --- /dev/null +++ b/.devcontainer/cuda/Dockerfile @@ -0,0 +1,14 @@ +FROM ghcr.io/autowarefoundation/autoware-openadk:latest-devel-cuda + +ENV SHELL /bin/bash + +ARG USERNAME=autoware +ARG USER_UID=1000 +ARG USER_GID=$USER_UID + +RUN groupadd --gid $USER_GID $USERNAME \ + && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ + && apt-get update \ + && apt-get install -y sudo \ + && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ + && chmod 0440 /etc/sudoers.d/$USERNAME diff --git a/.devcontainer/cuda/devcontainer.json b/.devcontainer/cuda/devcontainer.json new file mode 100644 index 00000000000..ccae5a61799 --- /dev/null +++ b/.devcontainer/cuda/devcontainer.json @@ -0,0 +1,26 @@ +{ + "name": "Autoware-cuda", + "build": { + "dockerfile": "Dockerfile" + }, + "remoteUser": "autoware", + "hostRequirements": { + "gpu": true + }, + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined", + "--net=host", + "--volume=/etc/localtime:/etc/localtime:ro", + "--gpus", + "all" + ], + "customizations": { + "vscode": { + "settings.json": { + "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } } + } + } + } +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000000..8ae6e191434 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,17 @@ +# Ignore git and metadata directories +.git +.github +.vscode + +# Ignore all markdown files +*.md + +# Ignore Docker files +docker-bake.hcl + +# Etc +*.ignore +*.lint +*.lock +*.log +*.out diff --git a/.github/actions/create-main-distro-alias/action.yaml b/.github/actions/create-main-distro-alias/action.yaml deleted file mode 100644 index 40e9d53ee21..00000000000 --- a/.github/actions/create-main-distro-alias/action.yaml +++ /dev/null @@ -1,49 +0,0 @@ -name: create-main-distro-alias -description: "" - -inputs: - package-name: - description: "" - required: true - rosdistro: - description: "" - required: true - tag-name: - description: "" - required: true - -runs: - using: composite - steps: - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ github.token }} - - - name: Set image name - id: set-image-name - run: echo "image-name=ghcr.io/${{ github.repository_owner }}/${{ inputs.package-name }}" >> $GITHUB_OUTPUT - shell: bash - - - name: Create Docker manifest for latest - run: | - # Check image existence - distro_image="${{ steps.set-image-name.outputs.image-name }}:${{ inputs.rosdistro }}-${{ inputs.tag-name }}" - if docker manifest inspect "$distro_image-amd64" >/dev/null 2>&1; then - amd64_image="$distro_image-amd64" - fi - if docker manifest inspect "$distro_image-arm64" >/dev/null 2>&1; then - arm64_image="$distro_image-arm64" - fi - - echo "amd64_image: $amd64_image" - echo "arm64_image: $arm64_image" - - docker manifest create --amend ${{ steps.set-image-name.outputs.image-name }}:${{ inputs.tag-name }} \ - $amd64_image \ - $arm64_image - - docker manifest push ${{ steps.set-image-name.outputs.image-name }}:${{ inputs.tag-name }} - shell: bash diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 757c7c3cead..13526e9083e 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -31,23 +31,18 @@ runs: sudo apt-get -y install jq shell: bash - # workflow_dispatch: latest, date - # schedule: latest, date - # tag: semver - name: Set Docker tags id: set-docker-tags run: | tags=() - if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - tags+=("latest") - tags+=("{{date 'YYYYMMDD'}}") - else - tags+=("type=schedule,pattern=latest") - tags+=("type=schedule,pattern={{date 'YYYYMMDD'}}") - tags+=("type=semver,pattern={{version}}") - tags+=("type=match,pattern=\d+.\d+") + if [ "${{ github.event_name }}" == "push" ] && [ "${{ github.ref_type }}" == "tag" ]; then + tags+=("$(echo "${{ github.ref }}" | sed -E 's/.*([vV][0-9]+\.[0-9]+\.[0-9]+).*/\1/')") fi + tags+=("{{date 'YYYYMMDD'}}") + tags+=("latest") + tags+=("latest-${{ inputs.tag-prefix }}") + # Output multiline strings: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "tags<<$EOF" >> $GITHUB_OUTPUT @@ -55,6 +50,17 @@ runs: echo "$EOF" >> $GITHUB_OUTPUT shell: bash + - name: Docker meta for prebuilt + id: meta-prebuilt + uses: docker/metadata-action@v4 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: ${{ steps.set-docker-tags.outputs.tags }} + bake-target: docker-metadata-action-prebuilt + flavor: | + latest=false + suffix=-prebuilt${{ inputs.tag-suffix }} + - name: Docker meta for devel id: meta-devel uses: docker/metadata-action@v4 @@ -64,20 +70,19 @@ runs: bake-target: docker-metadata-action-devel flavor: | latest=false - prefix=${{ inputs.tag-prefix }} - suffix=${{ inputs.tag-suffix }} + suffix=-devel${{ inputs.tag-suffix }} - - name: Docker meta for prebuilt - id: meta-prebuilt + - name: Docker meta for runtime + if: ${{ github.event_name == 'workflow_dispatch' }} || ${{ (github.event_name == 'push' && github.ref_type == 'tag') }} + id: meta-runtime uses: docker/metadata-action@v4 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: ${{ steps.set-docker-tags.outputs.tags }} - bake-target: docker-metadata-action-prebuilt + bake-target: docker-metadata-action-runtime flavor: | - latest=false - prefix=${{ inputs.tag-prefix }} - suffix=-prebuilt${{ inputs.tag-suffix }} + latest=${{ github.event_name == 'push' && github.ref_type == 'tag' }} + suffix=-runtime${{ inputs.tag-suffix }} - name: Login to GitHub Container Registry if: ${{ github.event_name != 'pull_request' }} @@ -87,15 +92,93 @@ runs: username: ${{ github.repository_owner }} password: ${{ github.token }} - - name: Build and push + - name: Build and Push - prebuilt and devel + if: ${{ (github.event_name == 'push' && github.ref_type == 'branch') || github.event_name == 'schedule' }} + uses: docker/bake-action@v3 + with: + push: ${{ inputs.allow-push == 'true' }} + files: | + docker/${{ inputs.bake-target }}/docker-bake.hcl + ${{ steps.meta-prebuilt.outputs.bake-file }} + ${{ steps.meta-devel.outputs.bake-file }} + targets: | + prebuilt + devel + provenance: false + set: | + ${{ inputs.build-args }} + + - name: Build and Publish to GitHub Container Registry + if: ${{ ( github.event_name == 'push' && github.ref_type == 'tag' ) || ( github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} uses: docker/bake-action@v3 with: - # Checking event_name for https://github.com/autowarefoundation/autoware/issues/2796 - push: ${{ (github.event_name == 'schedule' || github.ref_name == github.event.repository.default_branch || github.event_name == 'push') && inputs.allow-push == 'true' }} + push: true files: | docker/${{ inputs.bake-target }}/docker-bake.hcl ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-prebuilt.outputs.bake-file }} + ${{ steps.meta-runtime.outputs.bake-file }} provenance: false set: | ${{ inputs.build-args }} + + - name: Build and Save Artifacts + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} + uses: docker/bake-action@v3 + with: + push: false + files: | + docker/${{ inputs.bake-target }}/docker-bake.hcl + ${{ steps.meta-devel.outputs.bake-file }} + ${{ steps.meta-prebuilt.outputs.bake-file }} + ${{ steps.meta-runtime.outputs.bake-file }} + provenance: false + set: | + ${{ inputs.build-args }} + prebuilt.output=type=docker,dest=/tmp/prebuilt.tar + devel.output=type=docker,dest=/tmp/devel.tar + runtime.output=type=docker,dest=/tmp/runtime.tar + + - name: Upload Artifact - prebuilt + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} + id: artifact-upload-step-prebuilt + uses: actions/upload-artifact@v4 + with: + name: prebuilt-image${{ inputs.tag-suffix }} + path: /tmp/prebuilt.tar + retention-days: 7 + compression-level: 6 + overwrite: true + if-no-files-found: error + + - name: Upload Artifact - devel + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} + id: artifact-upload-step-devel + uses: actions/upload-artifact@v4 + with: + name: devel-image${{ inputs.tag-suffix }} + path: /tmp/devel.tar + retention-days: 7 + compression-level: 6 + overwrite: true + if-no-files-found: error + + - name: Upload Artifact - runtime + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} + id: artifact-upload-step-runtime + uses: actions/upload-artifact@v4 + with: + name: runtime-image${{ inputs.tag-suffix }} + path: /tmp/runtime.tar + retention-days: 7 + compression-level: 6 + overwrite: true + if-no-files-found: error + + - name: Output artifact URLs + id: output-artifact-urls + run: | + echo 'prebuilt URL ${{ steps.artifact-upload-step-prebuilt.outputs.artifact-url }}' + echo 'devel URL ${{ steps.artifact-upload-step-devel.outputs.artifact-url }}' + echo 'runtime URL ${{ steps.artifact-upload-step-runtime.outputs.artifact-url }}' + shell: bash diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 9774de4e5cb..315e5b1ed07 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -1,13 +1,28 @@ +# EVENTS: push, schedule, workflow_dispatch +# workflow_dispatch: Build all. No publish to registry; save as tarball. +# schedule: Build only devel and prebuilt. TAGS: date, latest +# push-branch: Build only devel and prebuilt. TAGS: date, latest +# push-tag: Build all. TAGS: version, date, latest + name: docker-build-and-push-main-self-hosted on: push: tags: - - v* - - "[0-9]+.[0-9]+*" + - adkit-v*.*.* + branches: + - main schedule: - cron: 0 0 1,15 * * workflow_dispatch: + inputs: + artifacts-destination: + type: choice + description: Destination for the artifacts + options: + - registry + - tarball + default: tarball jobs: docker-build-and-push-main-self-hosted: @@ -21,11 +36,12 @@ jobs: include: - name: no-cuda base_image_env: base_image + lib_dir: aarch64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda - base_image_env: cuda_base_image - setup-args: --no-cuda-drivers + base_image_env: base_image + lib_dir: aarch64 additional-tag-suffix: -cuda steps: # https://github.com/actions/checkout/issues/211 @@ -46,18 +62,19 @@ jobs: cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV fi - - name: Build 'autoware-universe' + - name: Build 'autoware-openadk' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-universe + bake-target: autoware-openadk build-args: | *.platform=linux/arm64 *.args.ROS_DISTRO=${{ env.rosdistro }} *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} - *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} *.args.SETUP_ARGS=${{ matrix.setup-args }} - tag-prefix: ${{ env.rosdistro }}- + *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 + tag-prefix: ${{ env.rosdistro }} + allow-push: true - name: Show disk space run: | diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index f5cebc8eb99..d5fe698bccf 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -1,17 +1,32 @@ +# EVENTS: push, schedule, workflow_dispatch +# workflow_dispatch: Build all. No publish to registry; save as tarball. +# schedule: Build only devel and prebuilt. TAGS: date, latest +# push-branch: Build only devel and prebuilt. TAGS: date, latest +# push-tag: Build all. TAGS: version, date, latest + name: docker-build-and-push-main on: push: tags: - - v* - - "[0-9]+.[0-9]+*" + - adkit-v*.*.* + branches: + - main schedule: - cron: 0 0 1,15 * * workflow_dispatch: + inputs: + artifacts-destination: + type: choice + description: Destination for the artifacts + options: + - registry + - tarball + default: tarball jobs: docker-build-and-push-main: - runs-on: [self-hosted, linux, X64] + runs-on: ubuntu-latest strategy: fail-fast: false matrix: @@ -21,11 +36,12 @@ jobs: include: - name: no-cuda base_image_env: base_image + lib_dir: x86_64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda - base_image_env: cuda_base_image - setup-args: --no-cuda-drivers + base_image_env: base_image + lib_dir: x86_64 additional-tag-suffix: -cuda steps: - name: Check out repository @@ -41,18 +57,19 @@ jobs: cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV fi - - name: Build 'autoware-universe' + - name: Build 'autoware-openadk' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-universe + bake-target: autoware-openadk build-args: | *.platform=linux/amd64 *.args.ROS_DISTRO=${{ env.rosdistro }} *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} - *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} *.args.SETUP_ARGS=${{ matrix.setup-args }} - tag-prefix: ${{ env.rosdistro }}- + *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 + tag-prefix: ${{ env.rosdistro }} + allow-push: true - name: Show disk space run: | diff --git a/.github/workflows/setup-docker.yaml b/.github/workflows/setup-docker.yaml index 515002da06a..caca7bcc9ce 100644 --- a/.github/workflows/setup-docker.yaml +++ b/.github/workflows/setup-docker.yaml @@ -4,13 +4,8 @@ on: pull_request: jobs: - load-env: - uses: ./.github/workflows/load-env.yaml - setup-docker: - needs: load-env runs-on: ubuntu-latest - container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/setup-universe.yaml b/.github/workflows/setup-universe.yaml index 1750d34b913..5840c359d52 100644 --- a/.github/workflows/setup-universe.yaml +++ b/.github/workflows/setup-universe.yaml @@ -4,13 +4,8 @@ on: pull_request: jobs: - load-env: - uses: ./.github/workflows/load-env.yaml - setup-universe: - needs: load-env runs-on: ubuntu-latest - container: ${{ needs.load-env.outputs.base-image }} steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/update-docker-manifest.yaml b/.github/workflows/update-docker-manifest.yaml index a82929bcdeb..7c63a54dcb5 100644 --- a/.github/workflows/update-docker-manifest.yaml +++ b/.github/workflows/update-docker-manifest.yaml @@ -6,45 +6,13 @@ on: workflow_dispatch: jobs: - load-env: - uses: ./.github/workflows/load-env.yaml - update-docker-manifest: - needs: load-env runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - - name: Combine multi arch images for 'autoware-universe' + - name: Combine multi arch images for 'autoware-openadk' uses: ./.github/actions/combine-multi-arch-images with: - package-name: autoware-universe - - - name: Create alias from 'autoware-universe:{rosdistro}-latest' to 'autoware-universe:latest' - uses: ./.github/actions/create-main-distro-alias - with: - package-name: autoware-universe - rosdistro: ${{ needs.load-env.outputs.rosdistro }} - tag-name: latest - - - name: Create alias from 'autoware-universe:{rosdistro}-latest-prebuilt' to 'autoware-universe:latest-prebuilt' - uses: ./.github/actions/create-main-distro-alias - with: - package-name: autoware-universe - rosdistro: ${{ needs.load-env.outputs.rosdistro }} - tag-name: latest-prebuilt - - - name: Create alias from 'autoware-universe:{rosdistro}-latest-cuda' to 'autoware-universe:latest-cuda' - uses: ./.github/actions/create-main-distro-alias - with: - package-name: autoware-universe - rosdistro: ${{ needs.load-env.outputs.rosdistro }} - tag-name: latest-cuda - - - name: Create alias from 'autoware-universe:{rosdistro}-latest-prebuilt-cuda' to 'autoware-universe:latest-prebuilt-cuda' - uses: ./.github/actions/create-main-distro-alias - with: - package-name: autoware-universe - rosdistro: ${{ needs.load-env.outputs.rosdistro }} - tag-name: latest-prebuilt-cuda + package-name: autoware-openadk diff --git a/.hadolint.yaml b/.hadolint.yaml new file mode 100644 index 00000000000..10c6f4532b7 --- /dev/null +++ b/.hadolint.yaml @@ -0,0 +1,5 @@ +ignored: + - DL3008 # Pin versions in apt get install. Instead of `apt-get install ` use `apt-get install =` + - DL3013 # Pin versions in pip. Instead of `pip install `, use `pip install ==` + - DL3015 # Avoid additional packages by specifying `--no-install-recommends` + - DL3009 # Delete the apt-get lists after installing something diff --git a/amd64.env b/amd64.env index 76a02c8e780..38eadee0a91 100644 --- a/amd64.env +++ b/amd64.env @@ -1,8 +1,7 @@ rosdistro=humble rmw_implementation=rmw_cyclonedds_cpp -base_image=ubuntu:22.04 -cuda_base_image=ubuntu:22.04 -prebuilt_base_image=ubuntu:22.04 +base_image=ros:humble-ros-base-jammy cuda_version=12.3 cudnn_version=8.9.5.29-1+cuda12.2 tensorrt_version=8.6.1.6-1+cuda12.0 +pre_commit_clang_format_version=17.0.5 diff --git a/ansible/playbooks/core.yaml b/ansible/playbooks/core.yaml deleted file mode 100644 index dd37be36253..00000000000 --- a/ansible/playbooks/core.yaml +++ /dev/null @@ -1,22 +0,0 @@ -- name: Set up source development environments for Autoware Core - hosts: localhost - connection: local - pre_tasks: - - name: Verify OS - ansible.builtin.fail: - msg: Only Ubuntu 22.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. - when: ansible_distribution_version != '22.04' - - - name: Print args - ansible.builtin.debug: - msg: - - rosdistro: "{{ rosdistro }}" - - rmw_implementation: "{{ rmw_implementation }}" - roles: - - role: autoware.dev_env.autoware_core - - role: autoware.dev_env.ccache - - role: autoware.dev_env.plotjuggler - - role: autoware.dev_env.pre_commit - - role: autoware.dev_env.ros2 - - role: autoware.dev_env.ros2_dev_tools - - role: autoware.dev_env.rmw_implementation diff --git a/ansible/playbooks/docker.yaml b/ansible/playbooks/docker.yaml index 2302909c94b..5cc84043e27 100644 --- a/ansible/playbooks/docker.yaml +++ b/ansible/playbooks/docker.yaml @@ -21,7 +21,6 @@ when: prompt_install_nvidia != 'y' roles: - role: autoware.dev_env.cuda - when: prompt_install_nvidia == 'y' and tensorrt_install_devel == 'true' + when: prompt_install_nvidia == 'y' - role: autoware.dev_env.docker_engine - - role: autoware.dev_env.nvidia_docker - - role: autoware.dev_env.rocker + - role: autoware.dev_env.nvidia_container_toolkit diff --git a/ansible/playbooks/openadk.yaml b/ansible/playbooks/openadk.yaml new file mode 100644 index 00000000000..496b3d8a73b --- /dev/null +++ b/ansible/playbooks/openadk.yaml @@ -0,0 +1,48 @@ +- name: Set up source development environments for Autoware Universe + hosts: localhost + connection: local + pre_tasks: + - name: Verify OS + ansible.builtin.fail: + msg: Only Ubuntu 22.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. + when: ansible_distribution != 'Ubuntu' or ansible_distribution_version != '22.04' + + - name: Print args + ansible.builtin.debug: + msg: + - module: "{{ module }}" + - rosdistro: "{{ rosdistro }}" + - rmw_implementation: "{{ rmw_implementation }}" + - cuda_version: "{{ cuda_version }}" + - cudnn_version: "{{ cudnn_version }}" + - tensorrt_version: "{{ tensorrt_version }}" + roles: + # Autoware base dependencies + - role: autoware.dev_env.rmw_implementation + when: module == 'base' + - role: autoware.dev_env.gdown + when: module == 'base' + - role: autoware.dev_env.kisak_mesa + when: module == 'base' + - role: autoware.dev_env.build_tools + when: module == 'all' and install_devel=='true' + + # Module specific dependencies + - role: autoware.dev_env.geographiclib + when: module == 'perception-localization' or module == 'all' + - role: autoware.dev_env.cuda + when: (module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' + - role: autoware.dev_env.tensorrt + when: (module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' + - role: autoware.dev_env.pacmod + when: module == 'planning-control' or module == 'perception-localization' or module == 'all' + + # Development environment + - role: autoware.dev_env.dev_tools + when: module == 'dev-tools' + - role: autoware.dev_env.ros2_dev_tools + when: module == 'dev-tools' + + # ONNX files and other artifacts + - role: autoware.dev_env.artifacts + when: prompt_download_artifacts == 'y' diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index 3d09c9f259f..ea9b9fbb64b 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -34,26 +34,25 @@ [Warning] Skipping installation of NVIDIA libraries. Please manually install them if you plan to use any dependent components. when: prompt_install_nvidia != 'y' roles: - # Core - - role: autoware.dev_env.autoware_core - - role: autoware.dev_env.ccache - when: tensorrt_install_devel == 'true' - - role: autoware.dev_env.plotjuggler - - role: autoware.dev_env.pre_commit - when: tensorrt_install_devel == 'true' + # Autoware base dependencies - role: autoware.dev_env.ros2 - role: autoware.dev_env.ros2_dev_tools - role: autoware.dev_env.rmw_implementation + - role: autoware.dev_env.gdown + - role: autoware.dev_env.build_tools - # Universe - - role: autoware.dev_env.autoware_universe + # Autoware module dependencies + - role: autoware.dev_env.geographiclib - role: autoware.dev_env.cuda - when: prompt_install_nvidia == 'y' and tensorrt_install_devel == 'true' + when: prompt_install_nvidia == 'y' - role: autoware.dev_env.pacmod when: rosdistro != 'rolling' - role: autoware.dev_env.tensorrt when: prompt_install_nvidia == 'y' - - role: autoware.dev_env.git_lfs + + # Autoware devel dependencies + - role: autoware.dev_env.dev_tools + when: install_devel == 'true' # ONNX files and other artifacts - role: autoware.dev_env.artifacts diff --git a/ansible/roles/autoware_universe/meta/main.yaml b/ansible/roles/autoware_universe/meta/main.yaml deleted file mode 100644 index 626281ada2a..00000000000 --- a/ansible/roles/autoware_universe/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: autoware.dev_env.autoware_core diff --git a/ansible/roles/build_tools/README.md b/ansible/roles/build_tools/README.md new file mode 100644 index 00000000000..3db8fa73d2f --- /dev/null +++ b/ansible/roles/build_tools/README.md @@ -0,0 +1,19 @@ +# Build Tools + +This role installs build tools for building Autoware. + +## Tools + +- ccache + +## Inputs + +## Manual Installation + +```bash +# Update package lists +sudo apt-get update + +# Install ccache +sudo apt-get install -y ccache +``` diff --git a/ansible/roles/autoware_core/defaults/main.yaml b/ansible/roles/build_tools/defaults/main.yaml similarity index 100% rename from ansible/roles/autoware_core/defaults/main.yaml rename to ansible/roles/build_tools/defaults/main.yaml diff --git a/ansible/roles/autoware_core/meta/main.yaml b/ansible/roles/build_tools/meta/main.yaml similarity index 100% rename from ansible/roles/autoware_core/meta/main.yaml rename to ansible/roles/build_tools/meta/main.yaml diff --git a/ansible/roles/ccache/tasks/main.yaml b/ansible/roles/build_tools/tasks/main.yaml similarity index 80% rename from ansible/roles/ccache/tasks/main.yaml rename to ansible/roles/build_tools/tasks/main.yaml index 3623238c6b6..e83056a6428 100644 --- a/ansible/roles/ccache/tasks/main.yaml +++ b/ansible/roles/build_tools/tasks/main.yaml @@ -1,7 +1,6 @@ - name: Install ccache become: true ansible.builtin.apt: - name: - - ccache + name: ccache state: latest update_cache: true diff --git a/ansible/roles/ccache/README.md b/ansible/roles/ccache/README.md deleted file mode 100644 index e77979ee4ea..00000000000 --- a/ansible/roles/ccache/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# ccache - -This role installs Ccache. You can access detailed information about Ccache with this [link](https://ccache.dev/). - -## Inputs - -None. - -## Manual Installation - -```bash -sudo apt update && sudo apt install ccache -``` diff --git a/ansible/roles/cuda/README.md b/ansible/roles/cuda/README.md index 9264489f701..57d638d1187 100644 --- a/ansible/roles/cuda/README.md +++ b/ansible/roles/cuda/README.md @@ -1,6 +1,8 @@ # cuda -This role installs [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) following [this page](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network) and [this page](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions). +This role installs [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) following [this page](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network) and [this page](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions). + +This role also registers Vulkan, OpenGL, and OpenCL GPU vendors for future use. ## Inputs @@ -35,4 +37,31 @@ Perform the post installation actions: # Taken from: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc + +# Register Vulkan, OpenGL, and OpenCL GPU vendors + +# Create Vulkan directory +sudo mkdir -p /etc/vulkan/icd.d +sudo chmod 0755 /etc/vulkan/icd.d + +# Create OpenGL directory +sudo mkdir -p /etc/glvnd/egl_vendor.d +sudo chmod 0755 /etc/glvnd/egl_vendor.d + +# Create OpenCL directory +sudo mkdir -p /etc/OpenCL/vendors +sudo chmod 0755 /etc/OpenCL/vendors + +# Download and set permissions for Vulkan GPU vendors JSON +sudo wget https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json -O /etc/vulkan/icd.d/nvidia_icd.json +sudo chmod 0644 /etc/vulkan/icd.d/nvidia_icd.json + +# Download and set permissions for OpenGL GPU vendors JSON +sudo wget https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json -O /etc/glvnd/egl_vendor.d/10_nvidia.json +sudo chmod 0644 /etc/glvnd/egl_vendor.d/10_nvidia.json + +# Register and set permissions for OpenCL GPU vendors +sudo touch /etc/OpenCL/vendors/nvidia.icd +echo "libnvidia-opencl.so.1" | sudo tee /etc/OpenCL/vendors/nvidia.icd > /dev/null +sudo chmod 0644 /etc/OpenCL/vendors/nvidia.icd ``` diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index e4a3c2f4107..0a075de1cfb 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -25,20 +25,28 @@ register: cuda__dash_case_cuda_version changed_when: false -- name: Install CUDA libraries except for cuda-drivers +- name: Install CUDA devel libraries except for cuda-drivers become: true ansible.builtin.apt: name: - - cuda-cudart-dev-{{ cuda__dash_case_cuda_version.stdout }} - cuda-command-line-tools-{{ cuda__dash_case_cuda_version.stdout }} - cuda-minimal-build-{{ cuda__dash_case_cuda_version.stdout }} - - cuda-libraries-dev-{{ cuda__dash_case_cuda_version.stdout }} - - cuda-nvml-dev-{{ cuda__dash_case_cuda_version.stdout }} - - libnpp-dev-{{ cuda__dash_case_cuda_version.stdout }} - libcusparse-dev-{{ cuda__dash_case_cuda_version.stdout }} - libcublas-dev-{{ cuda__dash_case_cuda_version.stdout }} - - libnccl-dev + - libcurand-dev-{{ cuda__dash_case_cuda_version.stdout }} update_cache: true + when: install_devel == 'true' + +- name: Install CUDA libraries except for cuda-drivers + become: true + ansible.builtin.apt: + name: + - cuda-minimal-build-{{ cuda__dash_case_cuda_version.stdout }} + - libcusparse-{{ cuda__dash_case_cuda_version.stdout }} + - libcublas-{{ cuda__dash_case_cuda_version.stdout }} + - libcurand-{{ cuda__dash_case_cuda_version.stdout }} + update_cache: true + when: install_devel == 'false' - name: Install extra CUDA libraries for x86_64 become: true @@ -71,3 +79,65 @@ state: present create: true mode: 0644 + +- name: Create Vulkan directory + become: true + ansible.builtin.file: + path: /etc/vulkan/icd.d + state: directory + mode: "0755" + +- name: Create OpenGL directory + become: true + ansible.builtin.file: + path: /etc/glvnd/egl_vendor.d + state: directory + mode: "0755" + +- name: Create OpenCL directory + become: true + ansible.builtin.file: + path: /etc/OpenCL/vendors + state: directory + mode: "0755" + +- name: Register Vulkan GPU vendors + become: true + ansible.builtin.get_url: + url: https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json + dest: /etc/vulkan/icd.d/nvidia_icd.json + mode: "0644" + +- name: Set permissions for Vulkan GPU vendors + become: true + ansible.builtin.file: + path: /etc/vulkan/icd.d/nvidia_icd.json + mode: "0644" + +- name: Register OpenGL GPU vendors + become: true + ansible.builtin.get_url: + url: https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json + dest: /etc/glvnd/egl_vendor.d/10_nvidia.json + mode: "0644" + +- name: Set permissions for OpenGL GPU vendors + become: true + ansible.builtin.file: + path: /etc/glvnd/egl_vendor.d/10_nvidia.json + mode: "0644" + +- name: Register OpenCL GPU vendors + become: true + ansible.builtin.file: + path: /etc/OpenCL/vendors/nvidia.icd + state: touch + mode: "0644" + +- name: Set permissions for OpenCL GPU vendors + become: true + ansible.builtin.lineinfile: + path: /etc/OpenCL/vendors/nvidia.icd + line: libnvidia-opencl.so.1 + create: true + mode: "0644" diff --git a/ansible/roles/dev_tools/README.md b/ansible/roles/dev_tools/README.md new file mode 100644 index 00000000000..145c70f020b --- /dev/null +++ b/ansible/roles/dev_tools/README.md @@ -0,0 +1,45 @@ +# devel + +This role installs optional development tools for Autoware. + +## Tools + +- Git LFS +- pre-commit +- clang-format +- Go +- PlotJuggler + +## Inputs + +| Name | Required | Description | +| ------------- | -------- | --------------------------------------- | +| clang-version | true | The version of clang-format to install. | +| ros-distro | true | The ROS distribution. | + +## Manual Installation + +```bash +#!/bin/bash + +# Update package lists +sudo apt-get update + +# Install Git LFS +sudo apt-get install -y git-lfs + +# Setup Git LFS +git lfs install + +# Install pre-commit using pip3 +pip3 install pre-commit + +# Install a specific version of clang-format using pip3 +pip3 install clang-format==${pre_commit_clang_format_version} + +# Install Go +sudo apt-get install -y golang + +# Install PlotJuggler +sudo apt-get install -y ros-${ROS_DISTRO}-plotjuggler-ros +``` diff --git a/ansible/roles/autoware_universe/defaults/main.yaml b/ansible/roles/dev_tools/defaults/main.yaml similarity index 100% rename from ansible/roles/autoware_universe/defaults/main.yaml rename to ansible/roles/dev_tools/defaults/main.yaml diff --git a/ansible/roles/ccache/defaults/main.yaml b/ansible/roles/dev_tools/meta/main.yaml similarity index 100% rename from ansible/roles/ccache/defaults/main.yaml rename to ansible/roles/dev_tools/meta/main.yaml diff --git a/ansible/roles/git_lfs/tasks/main.yaml b/ansible/roles/dev_tools/tasks/main.yaml similarity index 53% rename from ansible/roles/git_lfs/tasks/main.yaml rename to ansible/roles/dev_tools/tasks/main.yaml index b416dc3237d..2a11dd7ffc6 100644 --- a/ansible/roles/git_lfs/tasks/main.yaml +++ b/ansible/roles/dev_tools/tasks/main.yaml @@ -17,3 +17,30 @@ ansible.builtin.command: git lfs install when: "'filter.lfs.required' not in git_lfs__git_global_config.config_values" changed_when: true + +- name: Install pre-commit + ansible.builtin.pip: + name: pre-commit + state: latest + executable: pip3 + +- name: Install clang-format + ansible.builtin.pip: + name: clang-format + version: "{{ pre_commit_clang_format_version }}" + executable: pip3 + +- name: Install Go + become: true + ansible.builtin.apt: + name: golang + state: latest + update_cache: true + +- name: Install plotjuggler + become: true + ansible.builtin.apt: + name: + - ros-{{ rosdistro }}-plotjuggler-ros + state: latest + update_cache: true diff --git a/ansible/roles/autoware_core/README.md b/ansible/roles/gdown/README.md similarity index 59% rename from ansible/roles/autoware_core/README.md rename to ansible/roles/gdown/README.md index a834adb9e79..4d5e1e5dbab 100644 --- a/ansible/roles/autoware_core/README.md +++ b/ansible/roles/gdown/README.md @@ -1,6 +1,6 @@ -# autoware_core +# Role: gdown -This role installs development/runtime dependencies for Autoware Core. +This role installs gdown to download files from CMakeLists.txt. ## Inputs diff --git a/ansible/roles/ccache/meta/main.yaml b/ansible/roles/gdown/defaults/main.yaml similarity index 100% rename from ansible/roles/ccache/meta/main.yaml rename to ansible/roles/gdown/defaults/main.yaml diff --git a/ansible/roles/git_lfs/defaults/main.yaml b/ansible/roles/gdown/meta/main.yaml similarity index 100% rename from ansible/roles/git_lfs/defaults/main.yaml rename to ansible/roles/gdown/meta/main.yaml diff --git a/ansible/roles/autoware_core/tasks/main.yaml b/ansible/roles/gdown/tasks/main.yaml similarity index 100% rename from ansible/roles/autoware_core/tasks/main.yaml rename to ansible/roles/gdown/tasks/main.yaml diff --git a/ansible/roles/autoware_universe/README.md b/ansible/roles/geographiclib/README.md similarity index 64% rename from ansible/roles/autoware_universe/README.md rename to ansible/roles/geographiclib/README.md index e3ab6300083..8ab94806be3 100644 --- a/ansible/roles/autoware_universe/README.md +++ b/ansible/roles/geographiclib/README.md @@ -1,6 +1,4 @@ -# autoware_universe - -This role installs development/runtime dependencies for Autoware Universe. +# geographiclib ## Inputs diff --git a/ansible/roles/git_lfs/meta/main.yaml b/ansible/roles/geographiclib/defaults/main.yaml similarity index 100% rename from ansible/roles/git_lfs/meta/main.yaml rename to ansible/roles/geographiclib/defaults/main.yaml diff --git a/ansible/roles/nvidia_docker/defaults/main.yaml b/ansible/roles/geographiclib/meta/main.yaml similarity index 100% rename from ansible/roles/nvidia_docker/defaults/main.yaml rename to ansible/roles/geographiclib/meta/main.yaml diff --git a/ansible/roles/autoware_universe/tasks/main.yaml b/ansible/roles/geographiclib/tasks/main.yaml similarity index 100% rename from ansible/roles/autoware_universe/tasks/main.yaml rename to ansible/roles/geographiclib/tasks/main.yaml diff --git a/ansible/roles/git_lfs/README.md b/ansible/roles/git_lfs/README.md deleted file mode 100644 index a6b8da6e0a4..00000000000 --- a/ansible/roles/git_lfs/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Git Large File Storage - -This role installs Git LFS. You can access detailed information about Git LFS with [this link](https://git-lfs.github.com/). - -## Inputs - -None. - -## Manual Installation - -```bash -sudo apt install git-lfs -git lfs install -``` diff --git a/ansible/roles/kisak_mesa/README.md b/ansible/roles/kisak_mesa/README.md new file mode 100644 index 00000000000..e92b276647e --- /dev/null +++ b/ansible/roles/kisak_mesa/README.md @@ -0,0 +1,36 @@ +# Kisak Mesa Fix for Ubuntu 22.04 for Rviz2 (Not mandatory) + +If you are using Ubuntu 22.04 and Rviz2 (especially inside a container), you may encounter black-screen error on Rviz2: + +This role will install the Kisak Mesa fix for Ubuntu 22.04 for Rviz2. + +## Inputs + +None + +## Manual Installation + +```bash +#!/bin/bash + +# Update the package list and install software-properties-common +sudo apt-get update +sudo apt-get install -y software-properties-common + +# Add the Kisak Mesa PPA +sudo add-apt-repository -y ppa:kisak/kisak-mesa + +# Update the package list after adding the new repository +sudo apt-get update + +# Install Mesa libraries +sudo apt-get install -y \ +libegl-mesa0 \ +libegl1-mesa-dev \ +libgbm-dev \ +libgbm1 \ +libgl1-mesa-dev \ +libgl1-mesa-dri \ +libglapi-mesa \ +libglx-mesa0 +``` diff --git a/ansible/roles/nvidia_docker/meta/main.yaml b/ansible/roles/kisak_mesa/defaults/main.yaml similarity index 100% rename from ansible/roles/nvidia_docker/meta/main.yaml rename to ansible/roles/kisak_mesa/defaults/main.yaml diff --git a/ansible/roles/plotjuggler/defaults/main.yaml b/ansible/roles/kisak_mesa/meta/main.yaml similarity index 100% rename from ansible/roles/plotjuggler/defaults/main.yaml rename to ansible/roles/kisak_mesa/meta/main.yaml diff --git a/ansible/roles/kisak_mesa/tasks/main.yaml b/ansible/roles/kisak_mesa/tasks/main.yaml new file mode 100644 index 00000000000..910c6f38b62 --- /dev/null +++ b/ansible/roles/kisak_mesa/tasks/main.yaml @@ -0,0 +1,24 @@ +- name: Install additional dependencies + become: true + ansible.builtin.apt: + name: software-properties-common + state: present + +- name: Add Kisak Mesa PPA + become: true + ansible.builtin.apt_repository: + repo: ppa:kisak/kisak-mesa + +- name: Install Mesa libraries + become: true + ansible.builtin.apt: + name: + - libegl-mesa0 + - libegl1-mesa-dev + - libgbm-dev + - libgbm1 + - libgl1-mesa-dev + - libgl1-mesa-dri + - libglapi-mesa + - libglx-mesa0 + state: present diff --git a/ansible/roles/nvidia_docker/README.md b/ansible/roles/nvidia_container_toolkit/README.md similarity index 61% rename from ansible/roles/nvidia_docker/README.md rename to ansible/roles/nvidia_container_toolkit/README.md index 303ac8ad6eb..01dd1791e63 100644 --- a/ansible/roles/nvidia_docker/README.md +++ b/ansible/roles/nvidia_container_toolkit/README.md @@ -1,6 +1,6 @@ -# nvidia_docker +# nvidia_container_toolkit -This role installs [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-docker) following the [installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker). +This role installs [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-container-toolkit) following the [installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html). ## Inputs @@ -13,26 +13,31 @@ Install Nvidia Container Toolkit: ```bash -# Taken from https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit +# Add NVIDIA container toolkit GPG key +sudo apt-key adv --fetch-keys https://nvidia.github.io/libnvidia-container/gpgkey +sudo gpg --no-default-keyring --keyring /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg --import /etc/apt/trusted.gpg -# Setup the package repository and the GPG key: -distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ - && curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \ - && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list +# Add NVIDIA container toolkit repository +echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(dpkg --print-architecture) /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list -# Install the nvidia-docker2 package (and dependencies) after updating the package listing: +# Update the package list sudo apt-get update -sudo apt-get install -y nvidia-docker2 -# Restart the Docker daemon to complete the installation after setting the default runtime: +# Install NVIDIA Container Toolkit +sudo apt-get install -y nvidia-container-toolkit + +# Add NVIDIA runtime support to docker engine +sudo nvidia-ctk runtime configure --runtime=docker + +# Restart docker daemon sudo systemctl restart docker # At this point, a working setup can be tested by running a base CUDA container: -sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi +sudo docker run --rm --gpus all nvcr.io/nvidia/cuda:12.3.1-runtime-ubuntu20.04 nvidia-smi # This should result in a console output shown below: # +-----------------------------------------------------------------------------+ -# | NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 | +# | NVIDIA-SMI 545.23.08 Driver Version: 545.23.08 CUDA Version: 12.3.1 | # |-------------------------------+----------------------+----------------------+ # | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | # | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | diff --git a/ansible/roles/pre_commit/meta/main.yaml b/ansible/roles/nvidia_container_toolkit/defaults/main.yaml similarity index 100% rename from ansible/roles/pre_commit/meta/main.yaml rename to ansible/roles/nvidia_container_toolkit/defaults/main.yaml diff --git a/ansible/roles/rocker/defaults/main.yaml b/ansible/roles/nvidia_container_toolkit/meta/main.yaml similarity index 100% rename from ansible/roles/rocker/defaults/main.yaml rename to ansible/roles/nvidia_container_toolkit/meta/main.yaml diff --git a/ansible/roles/nvidia_container_toolkit/tasks/main.yaml b/ansible/roles/nvidia_container_toolkit/tasks/main.yaml new file mode 100644 index 00000000000..b1197fd21cf --- /dev/null +++ b/ansible/roles/nvidia_container_toolkit/tasks/main.yaml @@ -0,0 +1,34 @@ +- name: Add NVIDIA container toolkit GPG key + become: true + ansible.builtin.apt_key: + url: https://nvidia.github.io/libnvidia-container/gpgkey + state: present + keyring: /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg + +- name: Add NVIDIA container toolkit repository + become: true + ansible.builtin.apt_repository: + repo: deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) / + state: present + filename: nvidia-container-toolkit + update_cache: true + +- name: Install NVIDIA Container Toolkit + become: true + ansible.builtin.apt: + name: + - nvidia-container-toolkit + update_cache: true + +- name: Add NVIDIA runtime support to docker engine + become: true + ansible.builtin.shell: | + nvidia-ctk runtime configure --runtime=docker + changed_when: true + +- name: Restart docker daemon + become: true + ansible.builtin.systemd: + name: docker + state: restarted + changed_when: true diff --git a/ansible/roles/nvidia_docker/tasks/main.yaml b/ansible/roles/nvidia_docker/tasks/main.yaml deleted file mode 100644 index 215354fbffe..00000000000 --- a/ansible/roles/nvidia_docker/tasks/main.yaml +++ /dev/null @@ -1,30 +0,0 @@ -- name: Authorize NVIDIA Docker GPG key - become: true - ansible.builtin.apt_key: - url: https://nvidia.github.io/nvidia-docker/gpgkey - -- name: Save result of '. /etc/os-release;echo $ID$VERSION_ID' - ansible.builtin.shell: . /etc/os-release;echo $ID$VERSION_ID - register: nvidia_docker__distribution - changed_when: false - -- name: Save result of 'curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list' - ansible.builtin.uri: - url: https://nvidia.github.io/nvidia-docker/{{ nvidia_docker__distribution.stdout }}/nvidia-docker.list - return_content: true - register: nvidia_docker_list - -# curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list -- name: Add NVIDIA Docker apt repository to source list - become: true - ansible.builtin.copy: - dest: /etc/apt/sources.list.d/nvidia-docker.list - content: "{{ nvidia_docker_list.content }}" - mode: 0644 - -- name: Install NVIDIA Container Toolkit - become: true - ansible.builtin.apt: - name: - - nvidia-docker2 - update_cache: true diff --git a/ansible/roles/pacmod/meta/main.yaml b/ansible/roles/pacmod/meta/main.yaml index 81b20fe4831..e69de29bb2d 100644 --- a/ansible/roles/pacmod/meta/main.yaml +++ b/ansible/roles/pacmod/meta/main.yaml @@ -1,2 +0,0 @@ -dependencies: - - role: autoware.dev_env.ros2 diff --git a/ansible/roles/plotjuggler/README.md b/ansible/roles/plotjuggler/README.md deleted file mode 100644 index 0aceac25c4a..00000000000 --- a/ansible/roles/plotjuggler/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# plotjuggler - -This role installs PlotJuggler. You can access detailed information about PlotJuggler with this [link](https://www.plotjuggler.io/). - -## Inputs - -None. - -## Manual Installation - -```bash -wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env - -sudo apt update && sudo apt install -y \ - ros-$rosdistro-plotjuggler-ros -``` diff --git a/ansible/roles/plotjuggler/meta/main.yaml b/ansible/roles/plotjuggler/meta/main.yaml deleted file mode 100644 index 81b20fe4831..00000000000 --- a/ansible/roles/plotjuggler/meta/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: autoware.dev_env.ros2 diff --git a/ansible/roles/plotjuggler/tasks/main.yaml b/ansible/roles/plotjuggler/tasks/main.yaml deleted file mode 100644 index 07197044a14..00000000000 --- a/ansible/roles/plotjuggler/tasks/main.yaml +++ /dev/null @@ -1,7 +0,0 @@ -- name: Install plotjuggler - become: true - ansible.builtin.apt: - name: - - ros-{{ rosdistro }}-plotjuggler-ros - state: latest - update_cache: true diff --git a/ansible/roles/pre_commit/README.md b/ansible/roles/pre_commit/README.md deleted file mode 100644 index de9fe77522b..00000000000 --- a/ansible/roles/pre_commit/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# pre_commit - -This role installs dependent tools for [pre-commit](https://pre-commit.com/). - -## Inputs - -| Name | Required | Description | -| ------------------------------- | -------- | --------------------------- | -| pre_commit_clang_format_version | false | The version of ClangFormat. | - -## Manual Installation - -The `pre_commit_clang_format_version` variable can also be found in: -[./defaults/main.yaml](./defaults/main.yaml) - -```bash -pre_commit_clang_format_version=17.0.6 -pip3 install pre-commit clang-format==${pre_commit_clang_format_version} - -sudo apt install golang -``` diff --git a/ansible/roles/pre_commit/defaults/main.yaml b/ansible/roles/pre_commit/defaults/main.yaml deleted file mode 100644 index 34550552379..00000000000 --- a/ansible/roles/pre_commit/defaults/main.yaml +++ /dev/null @@ -1 +0,0 @@ -pre_commit_clang_format_version: 17.0.6 diff --git a/ansible/roles/pre_commit/tasks/main.yaml b/ansible/roles/pre_commit/tasks/main.yaml deleted file mode 100644 index bd185cc164e..00000000000 --- a/ansible/roles/pre_commit/tasks/main.yaml +++ /dev/null @@ -1,18 +0,0 @@ -- name: Install pre-commit - ansible.builtin.pip: - name: pre-commit - state: latest - executable: pip3 - -- name: Install clang-format - ansible.builtin.pip: - name: clang-format - version: "{{ pre_commit_clang_format_version }}" - executable: pip3 - -- name: Install Go - become: true - ansible.builtin.apt: - name: golang - state: latest - update_cache: true diff --git a/ansible/roles/rmw_implementation/meta/main.yaml b/ansible/roles/rmw_implementation/meta/main.yaml index 81b20fe4831..e69de29bb2d 100644 --- a/ansible/roles/rmw_implementation/meta/main.yaml +++ b/ansible/roles/rmw_implementation/meta/main.yaml @@ -1,2 +0,0 @@ -dependencies: - - role: autoware.dev_env.ros2 diff --git a/ansible/roles/rocker/README.md b/ansible/roles/rocker/README.md deleted file mode 100644 index ded68609c11..00000000000 --- a/ansible/roles/rocker/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# rocker - -This role installs [osrf/rocker](https://github.com/osrf/rocker) following the [installation guide](https://github.com/osrf/rocker/#installation). - -## Inputs - -None. - -## Manual Installation - -Install rocker: - -```bash -# Taken from: https://github.com/osrf/rocker#installation - -# Add the ROS 2 apt repository to your system. First authorize our GPG key with apt. -sudo apt update && sudo apt install curl gnupg lsb-release -sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg - -# Then add the repository to your sources list. -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null - -sudo apt update -sudo apt-get install python3-rocker -``` diff --git a/ansible/roles/rocker/meta/main.yaml b/ansible/roles/rocker/meta/main.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/ansible/roles/rocker/tasks/main.yaml b/ansible/roles/rocker/tasks/main.yaml deleted file mode 100644 index 885d2895342..00000000000 --- a/ansible/roles/rocker/tasks/main.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg -- name: Authorize ROS GPG key - become: true - ansible.builtin.get_url: - url: https://raw.githubusercontent.com/ros/rosdistro/master/ros.key - dest: /usr/share/keyrings/ros-archive-keyring.gpg - mode: 644 - -- name: Save result of 'dpkg --print-architecture' - ansible.builtin.command: dpkg --print-architecture - register: rocker__deb_architecture - changed_when: false - -- name: Save result of 'lsb_release -cs' - ansible.builtin.command: lsb_release -cs - register: rocker__lsb_release_cs - changed_when: false - -# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null -- name: Add ROS 2 apt repository to source list - become: true - ansible.builtin.apt_repository: - repo: deb [arch={{ rocker__deb_architecture.stdout }} signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu {{ rocker__lsb_release_cs.stdout }} main - filename: ros2 - state: present - update_cache: true - -- name: Install rocker - become: true - ansible.builtin.apt: - name: - - python3-rocker - update_cache: true diff --git a/ansible/roles/ros2_dev_tools/meta/main.yaml b/ansible/roles/ros2_dev_tools/meta/main.yaml index 81b20fe4831..e69de29bb2d 100644 --- a/ansible/roles/ros2_dev_tools/meta/main.yaml +++ b/ansible/roles/ros2_dev_tools/meta/main.yaml @@ -1,2 +0,0 @@ -dependencies: - - role: autoware.dev_env.ros2 diff --git a/ansible/roles/tensorrt/README.md b/ansible/roles/tensorrt/README.md index 0b938ad03a5..2b4bc48b108 100644 --- a/ansible/roles/tensorrt/README.md +++ b/ansible/roles/tensorrt/README.md @@ -17,11 +17,33 @@ For Universe, the `cudnn_version` and `tensorrt_version` variables should be cop ```bash wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# Taken from: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing - -sudo apt-get install libcudnn8=${cudnn_version} libcudnn8-dev=${cudnn_version} -sudo apt-mark hold libcudnn8 libcudnn8-dev - -sudo apt-get install libnvinfer8=${tensorrt_version} libnvonnxparsers8=${tensorrt_version} libnvparsers8=${tensorrt_version} libnvinfer-plugin8=${tensorrt_version} libnvinfer-dev=${tensorrt_version} libnvonnxparsers-dev=${tensorrt_version} libnvparsers-dev=${tensorrt_version} libnvinfer-plugin-dev=${tensorrt_version} -sudo apt-mark hold libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev +# Can also be found at: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing + +sudo apt-get install -y \ +libcudnn8=${cudnn_version} \ +libnvinfer8=${tensorrt_version} \ +libnvinfer-plugin8=${tensorrt_version} \ +libnvparsers8=${tensorrt_version} \ +libnvonnxparsers8=${tensorrt_version} \ + +sudo apt-mark hold \ +libcudnn8 \ +libnvinfer8 \ +libnvinfer-plugin8 \ +libnvparsers8 \ +libnvonnxparsers8 + +sudo apt-get install -y \ +libcudnn8-dev=${cudnn_version} \ +libnvinfer-dev=${tensorrt_version} \ +libnvinfer-plugin-dev=${tensorrt_version} \ +libnvparsers-dev=${tensorrt_version} \ +libnvonnxparsers-dev=${tensorrt_version} + +sudo apt-mark hold \ +libcudnn8-dev \ +libnvinfer-dev \ +libnvinfer-plugin-dev \ +libnvparsers-dev \ +libnvonnxparsers-dev ``` diff --git a/ansible/roles/tensorrt/defaults/main.yaml b/ansible/roles/tensorrt/defaults/main.yaml index 02edd251d82..e69de29bb2d 100644 --- a/ansible/roles/tensorrt/defaults/main.yaml +++ b/ansible/roles/tensorrt/defaults/main.yaml @@ -1 +0,0 @@ -tensorrt_install_devel: true diff --git a/ansible/roles/tensorrt/tasks/main.yaml b/ansible/roles/tensorrt/tasks/main.yaml index df85ae75bb5..8e01abf1e8c 100644 --- a/ansible/roles/tensorrt/tasks/main.yaml +++ b/ansible/roles/tensorrt/tasks/main.yaml @@ -23,7 +23,7 @@ allow_change_held_packages: true allow_downgrade: true update_cache: true - when: tensorrt_install_devel | bool + when: install_devel == 'true' # apt-mark hold - name: Prevent CUDA-related packages from upgrading @@ -49,4 +49,4 @@ - libnvinfer-plugin-dev - libnvparsers-dev - libnvonnxparsers-dev - when: tensorrt_install_devel | bool + when: install_devel == 'true' diff --git a/docker/README.md b/docker/README.md index f9186843b22..17358afd8fb 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,86 +1,150 @@ -# Docker images for Autoware +# Open AD Kit: Containerized Workloads for Autoware -We have two types of Docker image: `development` and `prebuilt`. +Open AD Kit offers two types of Docker image to let you get started with Autoware quickly: `devel` and `runtime`. -1. The `development` image enables you to develop Autoware without setting up the local development environment. -2. The `prebuilt` image contains executables and enables you to try out Autoware quickly. - - Note that the prebuilt image is not designed for deployment on a real vehicle! +1. The `devel` image enables you to develop Autoware without setting up the local development environment. +2. The `runtime` image contains only runtime executables and enables you to try out Autoware quickly. -**Note**: Before proceeding, confirm and agree with the [NVIDIA Deep Learning Container license](https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license). By pulling and using the Autoware Universe images, you accept the terms and conditions of the license. +!!! info -## Prerequisites + Before proceeding, confirm and agree with the [NVIDIA Deep Learning Container license](https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license). By pulling and using the Autoware Open AD Kit images, you accept the terms and conditions of the license. -- [Docker](https://docs.docker.com/engine/install/ubuntu/) -- [rocker](https://github.com/osrf/rocker) - - We use `rocker` to enable GUI applications such as `rviz` and `rqt` on Docker Containers. - - Refer to [here](http://wiki.ros.org/docker/Tutorials/GUI) for more details. +## Prerequisites -The [setup script](../setup-dev-env.sh) will install these dependencies through the following roles. +- Docker +- NVIDIA Container Toolkit (preferred) +- NVIDIA CUDA 12 compatible GPU Driver (preferred) -- [Docker](../ansible/roles/docker_engine/README.md) -- [rocker](../ansible/roles/rocker/README.md) +The [setup script](../setup-dev-env.sh) will install all required dependencies with the setup script: -## Usage +```bash +./setup-dev-env.sh -y docker +``` -### Development image +To install without **NVIDIA GPU** support: ```bash -docker run --rm -it \ - -v {path_to_your_workspace}:/autoware \ - ghcr.io/autowarefoundation/autoware-universe:latest +./setup-dev-env.sh -y --no-nvidia docker ``` -To run with `rocker`: +!!! info -If you use `rocker<=0.2.9`, add an option of `--env NVIDIA_DRIVER_CAPABILITIES=""` or `--env NVIDIA_DRIVER_CAPABILITIES=compute,utility,graphics` to avoid the CUDA environment error. For more details, see [this issue](https://github.com/autowarefoundation/autoware/issues/2452). + GPU acceleration is required for some features such as object detection and traffic light detection/classification. For details of how to enable these features without a GPU, refer to the [Running Autoware without CUDA](../how-to-guides/others/running-autoware-without-cuda.md). -```bash -rocker --nvidia --x11 --user \ - --volume {path_to_your_workspace} \ - -- ghcr.io/autowarefoundation/autoware-universe:latest -``` +## Usage -If you locate your workspace under your home directory, you can use the `--home` option instead: +### Runtime + +You can use `run.sh` to run the Autoware runtime container with the map data: ```bash -rocker --nvidia --x11 --user --home \ - -- ghcr.io/autowarefoundation/autoware-universe:latest +./docker/run.sh --map-path path_to_map_data ``` -To use a customized `.bashrc` for the container: +!!! info -```bash -rocker --nvidia --x11 --user --home \ - --volume $HOME/.bashrc.container:$HOME/.bashrc \ - -- ghcr.io/autowarefoundation/autoware-universe:latest -``` + You can use `--no-nvidia` to run without NVIDIA GPU support, and `--headless` to run without display that means no RViz visualization. -### Prebuilt image +For more launch options you can edit the launch command with `--launch-cmd` option: ```bash -docker run --rm -it \ - ghcr.io/autowarefoundation/autoware-universe:latest-prebuilt +./docker/run.sh --map-path path_to_map_data --launch-cmd "ros2 launch autoware_launch autoware.launch.xml map_path:=/autoware_map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit" ``` -To run with `rocker`: +#### Run Autoware simulator + +Inside the container, you can run the Autoware simulation by following these tutorials: + +[Planning Simulation](../../tutorials/ad-hoc-simulation/planning-simulation.md) + +[Rosbag Replay Simulation](../../tutorials/ad-hoc-simulation/rosbag-replay-simulation.md). + +### Development Environment + +You can use [VS Code Remote Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) to develop Autoware in the containerized environment with ease. Or you can use `run.sh` manually to run the Autoware development container with the workspace mounted. + +#### Using VS Code Remote Containers for Development + +Get the Visual Studio Code's [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension. +And reopen the workspace in the container by selecting `Remote-Containers: Reopen in Container` from the Command Palette (`F1`). + +Autoware and Autoware-cuda are available containers for development. + +If you want to use CUDA supported dev container, you need to install the NVIDIA Container Toolkit before opening the workspace in the container: ```bash -rocker --nvidia --x11 --user \ - --volume {path_to_your_workspace} \ - -- ghcr.io/autowarefoundation/autoware-universe:latest-prebuilt +# Add NVIDIA container toolkit GPG key +sudo apt-key adv --fetch-keys https://nvidia.github.io/libnvidia-container/gpgkey +sudo gpg --no-default-keyring --keyring /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg --import /etc/apt/trusted.gpg + +# Add NVIDIA container toolkit repository +echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(dpkg --print-architecture) /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list + +# Update the package list +sudo apt-get update + +# Install NVIDIA Container Toolkit +sudo apt-get install -y nvidia-container-toolkit + +# Add NVIDIA runtime support to docker engine +sudo nvidia-ctk runtime configure --runtime=docker + +# Restart docker daemon +sudo systemctl restart docker ``` -If you intend to use pre-existing data such as maps or Rosbags, modify the `--volume` options shown below. +Then, you can use the `Remote-Containers: Reopen in Container` command to open the workspace in the container. + +#### Using `run.sh` for Development ```bash -rocker --nvidia --x11 --user \ - --volume {path_to_your_workspace} \ - --volume {path_to_your_map_data} \ - --volume {path_to_your_log_data} \ - -- ghcr.io/autowarefoundation/autoware-universe:latest-prebuilt +./docker/run.sh --devel --workspace path_to_workspace ``` -## Building Docker images on your local machine +!!! info + + You should mount the workspace you are working on with `--workspace path_to_workspace`. For a development environment without NVIDIA GPU support use `--no-nvidia`. + +#### Creating a new workspace + +If you don't have a workspace yet, you can create a new workspace with following steps: + +1. Create the `src` directory and clone repositories into it. + + ```bash + mkdir src + vcs import src < autoware.repos + ``` + +2. Update dependent ROS packages. + + The dependency of Autoware may change after the Docker image was created. + In that case, you need to run the following commands to update the dependency. + + ```bash + sudo apt update + rosdep update + rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO + ``` + +3. Build the workspace. + + ```bash + colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release + ``` + + If there is any build issue, refer to [Troubleshooting](../../support/troubleshooting/index.md#build-issues). + +> **To Update the Workspace** +> +> ```bash +> cd autoware +> git pull +> vcs import src < autoware.repos +> vcs pull src +> ``` + +## Building Docker images from scratch If you want to build these images locally for development purposes, run the following command: @@ -95,67 +159,19 @@ To build without CUDA, use the `--no-cuda` option: ./docker/build.sh --no-cuda ``` -To specify the platform, use the `--platform` option: +To build only development image, use the `--devel-only` option: ```bash -./docker/build.sh --platform linux/amd64 -./docker/build.sh --platform linux/arm64 +./docker/build.sh --devel-only ``` -## Tips - -### Precautions for not using `rocker` - -If either image is run without `rocker`, then `root` privileges will be used. -This can affect your local environment as below: +To specify the platform, use the `--platform` option: -```sh-session -$ docker run --rm -it -v {path_to_your_workspace}:/autoware ghcr.io/autowarefoundation/autoware-universe:latest -# colcon build -# exit -$ rm build/COLCON_IGNORE -rm: remove write-protected regular empty file 'build/COLCON_IGNORE'? y -rm: cannot remove 'build/COLCON_IGNORE': Permission denied +```bash +./docker/build.sh --platform linux/amd64 +./docker/build.sh --platform linux/arm64 ``` -To prevent this error occurring when rocker is not used, there are two suggested methods: - -1. Prepare a dedicated workspace for the docker image. -2. Use Visual Studio Code's [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension. - - To use the extension, the following settings can be used to create a user account in a similar way to `rocker. - Refer to [this document](https://code.visualstudio.com/remote/advancedcontainers/add-nonroot-user) for more details. - - ```jsonc - // .devcontainer/devcontainer.json - { - "name": "Autoware", - "build": { - "dockerfile": "Dockerfile" - }, - "remoteUser": "autoware", - "settings": { - "terminal.integrated.defaultProfile.linux": "bash" - } - } - ``` - - ```docker - # .devcontainer/Dockerfile - FROM ghcr.io/autowarefoundation/autoware-universe:latest - - ARG USERNAME=autoware - ARG USER_UID=1000 - ARG USER_GID=$USER_UID - - RUN groupadd --gid $USER_GID $USERNAME \ - && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ - && apt-get update \ - && apt-get install -y sudo \ - && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ - && chmod 0440 /etc/sudoers.d/$USERNAME - ``` - ### Using Docker images other than `latest` There are also images versioned based on the `date` or `release tag`. diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile new file mode 100644 index 00000000000..bd41668d6f5 --- /dev/null +++ b/docker/autoware-openadk/Dockerfile @@ -0,0 +1,136 @@ +# hadolint global ignore=DL3006,DL3008,DL3009,DL3015,DL3013,DL3027,DL3042 +ARG BASE_IMAGE + +FROM $BASE_IMAGE as base +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO + +# Install apt packages +# hadolint ignore=DL3008 +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ + git \ + ssh \ + wget \ + cmake \ + curl \ + gosu \ + gnupg \ + vim \ + unzip \ + lsb-release \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + +# Add GitHub to known hosts for private repositories +RUN mkdir -p ~/.ssh \ + && ssh-keyscan github.com >> ~/.ssh/known_hosts + +# Copy files +COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ +COPY ansible/ /autoware/ansible/ +WORKDIR /autoware + +# Set up base environment +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y --module base --runtime openadk \ + && pip uninstall -y ansible ansible-core \ + && pip install vcstool \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc + +# Create entrypoint +CMD ["/bin/bash"] + +FROM base as prebuilt +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG SETUP_ARGS +ARG ROS_DISTRO +ENV CCACHE_DIR=/ccache +ENV CC="/usr/lib/ccache/gcc" +ENV CXX="/usr/lib/ccache/g++" + +# Set up development environment +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadk \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && find / -name 'libcu*.a' -delete \ + && find / -name 'libnv*.a' -delete + +# Copy repository files +COPY autoware.repos /autoware/ + +# Install rosdep dependencies +RUN --mount=type=ssh \ + mkdir src \ + && vcs import src < autoware.repos \ + && apt-get update \ + && rosdep update \ + && DEBIAN_FRONTEND=noninteractive rosdep install -y --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ + && source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + && find /autoware/install -type d -exec chmod 777 {} \; \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && rm -rf /autoware/build /autoware/src + +CMD ["/bin/bash"] + +FROM prebuilt as devel +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Install development tools and artifacts +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y --module dev-tools --download-artifacts openadk \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + +# Change working directory to workspace +WORKDIR /workspace + +# Create entrypoint +COPY docker/autoware-openadk/etc/ros_entrypoint.sh /ros_entrypoint.sh +RUN chmod +x /ros_entrypoint.sh +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + +FROM base as runtime +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR +ARG SETUP_ARGS + +# Set up runtime environment and artifacts +COPY autoware.repos /autoware/ +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadk \ + && pip uninstall -y ansible ansible-core \ + && mkdir src \ + && vcs import src < autoware.repos \ + && rosdep update \ + && DEBIAN_FRONTEND=noninteractive rosdep install -y --dependency-types=exec --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ + && find / -name "*.o" -type f -delete \ + && find / -name "*.h" -type f -delete \ + && find / -name "*.hpp" -type f -delete \ + && rm -rf /autoware/src /autoware/ansible /autoware/autoware.repos \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + /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 bash aliases +COPY docker/autoware-openadk/etc/.bash_aliases /root/.bash_aliases +RUN echo "source /autoware/install/setup.bash" > /etc/bash.bashrc + +# Create entrypoint +COPY docker/autoware-openadk/etc/ros_entrypoint.sh /ros_entrypoint.sh +RUN chmod +x /ros_entrypoint.sh +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["bash"] diff --git a/docker/autoware-openadk/docker-bake.hcl b/docker/autoware-openadk/docker-bake.hcl new file mode 100644 index 00000000000..d472a0df008 --- /dev/null +++ b/docker/autoware-openadk/docker-bake.hcl @@ -0,0 +1,26 @@ +group "default" { + targets = ["prebuilt", "devel", "runtime"] +} + +// For docker/metadata-action +target "docker-metadata-action-prebuilt" {} +target "docker-metadata-action-devel" {} +target "docker-metadata-action-runtime" {} + +target "prebuilt" { + inherits = ["docker-metadata-action-prebuilt"] + dockerfile = "docker/autoware-openadk/Dockerfile" + target = "prebuilt" +} + +target "devel" { + inherits = ["docker-metadata-action-devel"] + dockerfile = "docker/autoware-openadk/Dockerfile" + target = "devel" +} + +target "runtime" { + inherits = ["docker-metadata-action-runtime"] + dockerfile = "docker/autoware-openadk/Dockerfile" + target = "runtime" +} diff --git a/docker/autoware-openadk/etc/.bash_aliases b/docker/autoware-openadk/etc/.bash_aliases new file mode 100644 index 00000000000..f6200449b1c --- /dev/null +++ b/docker/autoware-openadk/etc/.bash_aliases @@ -0,0 +1,28 @@ +#!/bin/bash + +# planning simulation +function download_planning_map() { + if [ ! -f ~/autoware_map/sample-map-planning.zip ]; then + gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1499_nsbUbIeturZaDj7jhUownh5fvXHd' + unzip -d ~/autoware_map ~/autoware_map/sample-map-planning.zip + fi +} +alias awf-launch-planning-sim='download_planning_map&&ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-planning vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit' + +# rosbag replay simulation +function download_rosbag_map() { + if [ ! -f ~/autoware_map/sample-map-rosbag.zip ]; then + gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1A-8BvYRX3DhSzkAnOcGWFw5T30xTlwZI' + unzip -d ~/autoware_map/ ~/autoware_map/sample-map-rosbag.zip + fi +} +alias awf-launch-sample-rosbag-sim='download_rosbag_artifacts&&download_rosbag_map&&ros2 launch autoware_launch logging_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-rosbag vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit' + +# play sample rosbag +function download_rosbag_file() { + if [ ! -f ~/autoware_map/sample-rosbag.zip ]; then + gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1VnwJx9tI3kI_cTLzP61ktuAJ1ChgygpG' + unzip -d ~/autoware_map/ ~/autoware_map/sample-rosbag.zip + fi +} +alias awf-play-sample-rosbag='download_rosbag_file&&ros2 bag play ~/autoware_map/sample-rosbag/sample.db3 -r 0.35 -s sqlite3' diff --git a/docker/autoware-openadk/etc/ros_entrypoint.sh b/docker/autoware-openadk/etc/ros_entrypoint.sh new file mode 100644 index 00000000000..cbe45ef3bdb --- /dev/null +++ b/docker/autoware-openadk/etc/ros_entrypoint.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# shellcheck disable=SC1090,SC1091 + +# Get the user ID and group ID of the local user +USER_ID=${LOCAL_UID} +USER_NAME=${LOCAL_USER} +GROUP_ID=${LOCAL_GID} +GROUP_NAME=${LOCAL_GROUP} + +# Check if any of the variables are empty +if [[ -z $USER_ID || -z $USER_NAME || -z $GROUP_ID || -z $GROUP_NAME ]]; then + source "/opt/ros/$ROS_DISTRO/setup.bash" + source /autoware/install/setup.bash + exec "$@" +else + echo "Starting with user: $USER_NAME >> UID $USER_ID, GID: $GROUP_ID" + + # Create group and user with GID/UID + groupadd -g "$GROUP_ID" "$GROUP_NAME" + useradd -u "$USER_ID" -g "$GROUP_ID" -s /bin/bash -m -d /home/"$USER_NAME" "$USER_NAME" + + # Add sudo privileges to the user + echo "$USER_NAME ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers + + # Source ROS2 + # hadolint ignore=SC1090 + source "/opt/ros/$ROS_DISTRO/setup.bash" + source /autoware/install/setup.bash + + # Execute the command as the user + exec /usr/sbin/gosu "$USER_NAME" "$@" +fi diff --git a/docker/autoware-universe/Dockerfile b/docker/autoware-universe/Dockerfile deleted file mode 100644 index a7e1465f0f9..00000000000 --- a/docker/autoware-universe/Dockerfile +++ /dev/null @@ -1,139 +0,0 @@ -# Image args should come at the beginning. -ARG BASE_IMAGE -ARG PREBUILT_BASE_IMAGE -# hadolint ignore=DL3006 -FROM $BASE_IMAGE as devel -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -ARG ROS_DISTRO -ARG SETUP_ARGS - -## Install apt packages -# hadolint ignore=DL3008 -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ - git \ - ssh \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -## Copy files -COPY autoware.repos setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ -COPY ansible/ /autoware/ansible/ -WORKDIR /autoware -RUN ls /autoware - -## Add GitHub to known hosts for private repositories -RUN mkdir -p ~/.ssh \ - && ssh-keyscan github.com >> ~/.ssh/known_hosts - -## Set up development environment -RUN --mount=type=ssh \ - ./setup-dev-env.sh -y $SETUP_ARGS universe \ - && pip uninstall -y ansible ansible-core \ - && mkdir src \ - && vcs import src < autoware.repos \ - && rosdep update \ - && DEBIAN_FRONTEND=noninteractive rosdep install -y --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -## Clean up unnecessary files -RUN rm -rf \ - "$HOME"/.cache \ - /etc/apt/sources.list.d/cuda*.list \ - /etc/apt/sources.list.d/docker.list \ - /etc/apt/sources.list.d/nvidia-docker.list - -## Register Vulkan GPU vendors -RUN curl https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json -o /etc/vulkan/icd.d/nvidia_icd.json \ - && chmod 644 /etc/vulkan/icd.d/nvidia_icd.json -RUN curl https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json -o /etc/glvnd/egl_vendor.d/10_nvidia.json \ - && chmod 644 /etc/glvnd/egl_vendor.d/10_nvidia.json - -## Register OpenCL GPU vendors -RUN mkdir -p /etc/OpenCL/vendors \ - && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd \ - && chmod 644 /etc/OpenCL/vendors/nvidia.icd - -## TODO: remove/re-evaluate after Ubuntu 24.04 is released -## Fix OpenGL issues (e.g. black screen in rviz2) due to old mesa lib in Ubuntu 22.04 -## See https://github.com/autowarefoundation/autoware.universe/issues/2789 -# hadolint ignore=DL3008 -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y software-properties-common \ - && apt-add-repository ppa:kisak/kisak-mesa \ - && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ - libegl-mesa0 libegl1-mesa-dev libgbm-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libglapi-mesa libglx-mesa0 \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -## Create entrypoint -# hadolint ignore=DL3059 -RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc -CMD ["/bin/bash"] - -FROM devel as builder -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -## Build and change permission for runtime data conversion -RUN source /opt/ros/"$ROS_DISTRO"/setup.bash \ - && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release \ - && find /autoware/install -type d -exec chmod 777 {} \; - -# hadolint ignore=DL3006 -FROM $PREBUILT_BASE_IMAGE as prebuilt - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -ARG ROS_DISTRO -ARG SETUP_ARGS - -## Install apt packages -# hadolint ignore=DL3008 -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ - git \ - ssh \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -## Copy files -COPY autoware.repos setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ -COPY ansible/ /autoware/ansible/ -WORKDIR /autoware -RUN ls /autoware - -## Add GitHub to known hosts for private repositories -RUN mkdir -p ~/.ssh \ - && ssh-keyscan github.com >> ~/.ssh/known_hosts - -## Set up runtime environment -RUN --mount=type=ssh \ - ./setup-dev-env.sh -y $SETUP_ARGS --no-cuda-drivers --runtime universe \ - && pip uninstall -y ansible ansible-core \ - && mkdir src \ - && vcs import src < autoware.repos \ - && rosdep update \ - && DEBIAN_FRONTEND=noninteractive rosdep install -y --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ - && rm -rf src \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -## Copy install folder from builder -COPY --from=builder /autoware/install/ /autoware/install/ - -## Clean up unnecessary files -RUN rm -rf \ - "$HOME"/.cache \ - /etc/apt/sources.list.d/cuda*.list \ - /etc/apt/sources.list.d/docker.list \ - /etc/apt/sources.list.d/nvidia-docker.list - -## Register Vulkan GPU vendors -ADD "https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json" /etc/vulkan/icd.d/nvidia_icd.json -RUN chmod 644 /etc/vulkan/icd.d/nvidia_icd.json -ADD "https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json" /etc/glvnd/egl_vendor.d/10_nvidia.json -RUN chmod 644 /etc/glvnd/egl_vendor.d/10_nvidia.json - -## Create entrypoint -# hadolint ignore=DL3059 -RUN echo "source /autoware/install/setup.bash" > /etc/bash.bashrc -CMD ["/bin/bash"] diff --git a/docker/autoware-universe/docker-bake.hcl b/docker/autoware-universe/docker-bake.hcl deleted file mode 100644 index fa5b3dff25f..00000000000 --- a/docker/autoware-universe/docker-bake.hcl +++ /dev/null @@ -1,19 +0,0 @@ -group "default" { - targets = ["devel", "prebuilt"] -} - -// For docker/metadata-action -target "docker-metadata-action-devel" {} -target "docker-metadata-action-prebuilt" {} - -target "devel" { - inherits = ["docker-metadata-action-devel"] - dockerfile = "docker/autoware-universe/Dockerfile" - target = "devel" -} - -target "prebuilt" { - inherits = ["docker-metadata-action-prebuilt"] - dockerfile = "docker/autoware-universe/Dockerfile" - target = "prebuilt" -} diff --git a/docker/build.sh b/docker/build.sh index 803040ad41a..fe9917b7575 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -2,76 +2,135 @@ set -e +# Function to print help message +print_help() { + echo "Usage: build.sh [OPTIONS]" + echo "Options:" + echo " --help Display this help message" + echo " -h Display this help message" + echo " --no-cuda Disable CUDA support" + echo " --platform Specify the platform (default: current platform)" + echo " --devel-only Build devel image only" + echo "" + echo "Note: The --platform option should be one of 'linux/amd64' or 'linux/arm64'." +} + SCRIPT_DIR=$(readlink -f "$(dirname "$0")") WORKSPACE_ROOT="$SCRIPT_DIR/../" # Parse arguments -args=() -while [ "$1" != "" ]; do - case "$1" in - --no-cuda) - option_no_cuda=true - ;; - --platform) - option_platform="$2" +parse_arguments() { + while [ "$1" != "" ]; do + case "$1" in + --help | -h) + print_help + exit 1 + ;; + --no-cuda) + option_no_cuda=true + ;; + --platform) + option_platform="$2" + shift + ;; + --devel-only) + option_devel_only=true + ;; + *) + echo "Unknown option: $1" + print_help + exit 1 + ;; + esac shift - ;; - --no-prebuilt) - option_no_prebuilt=true - ;; - *) - args+=("$1") - ;; - esac - shift -done + done +} # Set CUDA options -if [ "$option_no_cuda" = "true" ]; then - setup_args="--no-nvidia" - image_name_suffix="" -else - setup_args="--no-cuda-drivers" - image_name_suffix="-cuda" -fi +set_cuda_options() { + if [ "$option_no_cuda" = "true" ]; then + setup_args="--no-nvidia" + image_name_suffix="" + else + image_name_suffix="-cuda" + fi +} -# Set prebuilt options -if [ "$option_no_prebuilt" = "true" ]; then - targets=("devel") -else - # default targets include devel and prebuilt - targets=() -fi +# Set build options +set_build_options() { + if [ "$option_devel_only" = "true" ]; then + targets=("devel") + else + targets=() + fi +} # Set platform -if [ -n "$option_platform" ]; then - platform="$option_platform" -else - platform="linux/amd64" - if [ "$(uname -m)" = "aarch64" ]; then - platform="linux/arm64" +set_platform() { + if [ -n "$option_platform" ]; then + platform="$option_platform" + else + platform="linux/amd64" + if [ "$(uname -m)" = "aarch64" ]; then + platform="linux/arm64" + fi + fi +} + +# Set arch lib dir +set_arch_lib_dir() { + if [ "$platform" = "linux/arm64" ]; then + lib_dir="aarch64" + elif [ "$platform" = "linux/amd64" ]; then + lib_dir="x86_64" + else + echo "Unsupported platform: $platform" + exit 1 fi -fi +} # Load env -source "$WORKSPACE_ROOT/amd64.env" -if [ "$platform" = "linux/arm64" ]; then - source "$WORKSPACE_ROOT/arm64.env" -fi +load_env() { + source "$WORKSPACE_ROOT/amd64.env" + if [ "$platform" = "linux/arm64" ]; then + source "$WORKSPACE_ROOT/arm64.env" + fi +} + +# Build images +build_images() { + # https://github.com/docker/buildx/issues/484 + export BUILDKIT_STEP_LOG_MAX_SIZE=10000000 + + echo "Building images for platform: $platform" + echo "ROS distro: $rosdistro" + echo "Base image: $base_image" + echo "Setup args: $setup_args" + echo "Lib dir: $lib_dir" + echo "Image name suffix: $image_name_suffix" + echo "Targets: ${targets[*]}" -# https://github.com/docker/buildx/issues/484 -export BUILDKIT_STEP_LOG_MAX_SIZE=10000000 + set -x + docker buildx bake --load --progress=plain -f "$SCRIPT_DIR/autoware-openadk/docker-bake.hcl" \ + --set "*.context=$WORKSPACE_ROOT" \ + --set "*.ssh=default" \ + --set "*.platform=$platform" \ + --set "*.args.ROS_DISTRO=$rosdistro" \ + --set "*.args.BASE_IMAGE=$base_image" \ + --set "*.args.SETUP_ARGS=$setup_args" \ + --set "*.args.LIB_DIR=$lib_dir" \ + --set "devel.tags=ghcr.io/autowarefoundation/autoware-openadk:latest-devel$image_name_suffix" \ + --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-openadk:latest-prebuilt$image_name_suffix" \ + --set "runtime.tags=ghcr.io/autowarefoundation/autoware-openadk:latest-runtime$image_name_suffix" \ + "${targets[@]}" + set +x +} -set -x -docker buildx bake --no-cache --load --progress=plain -f "$SCRIPT_DIR/autoware-universe/docker-bake.hcl" \ - --set "*.context=$WORKSPACE_ROOT" \ - --set "*.ssh=default" \ - --set "*.platform=$platform" \ - --set "*.args.ROS_DISTRO=$rosdistro" \ - --set "*.args.BASE_IMAGE=$base_image" \ - --set "*.args.PREBUILT_BASE_IMAGE=$prebuilt_base_image" \ - --set "*.args.SETUP_ARGS=$setup_args" \ - --set "devel.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest$image_name_suffix" \ - --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-universe:$rosdistro-latest-prebuilt$image_name_suffix" \ - "${targets[@]}" -set +x +# Main script execution +parse_arguments "$@" +set_cuda_options +set_build_options +set_platform +set_arch_lib_dir +load_env +build_images diff --git a/docker/run.sh b/docker/run.sh new file mode 100755 index 00000000000..3ea92854b3c --- /dev/null +++ b/docker/run.sh @@ -0,0 +1,167 @@ +#!/usr/bin/env bash +# shellcheck disable=SC2086,SC2124 + +set -e + +# Define terminal colors +RED='\033[0;31m' +GREEN='\033[0;32m' +# BLUE='\033[0;34m' +NC='\033[0m' # No Color + +SCRIPT_DIR=$(readlink -f "$(dirname "$0")") +WORKSPACE_ROOT="$SCRIPT_DIR/../" +source "$WORKSPACE_ROOT/amd64.env" +if [ "$(uname -m)" = "aarch64" ]; then + source "$WORKSPACE_ROOT/arm64.env" +fi + +# Default values +option_no_nvidia=false +option_devel=false +option_headless=false +MAP_PATH="" +WORKSPACE_PATH="" +USER_ID="" +WORKSPACE="" +DEFAULT_LAUNCH_CMD="ros2 launch autoware_launch autoware.launch.xml map_path:=/autoware_map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit" + +# Function to print help message +print_help() { + echo -e "\n------------------------------------------------------------" + echo -e "${RED}Note:${NC} The --map-path option is mandatory if not custom launch command given. Please provide exact path to the map files." + echo -e " Default launch command: ${GREEN}${DEFAULT_LAUNCH_CMD}${NC}" + echo -e "------------------------------------------------------------" + echo -e "${RED}Usage:${NC} run.sh [OPTIONS] [LAUNCH_CMD](optional)" + echo -e "Options:" + echo -e " ${GREEN}--help/-h${NC} Display this help message" + echo -e " ${GREEN}--map-path${NC} Specify to mount map files into /autoware_map (mandatory if no custom launch command is provided)" + echo -e " ${GREEN}--no-nvidia${NC} Disable NVIDIA GPU support" + echo -e " ${GREEN}--devel${NC} Use the latest development version of Autoware" + echo -e " ${GREEN}--headless${NC} Run Autoware in headless mode (default: false)" + echo -e " ${GREEN}--workspace${NC} Specify to mount the workspace into /workspace" + echo "" +} + +# Parse arguments +parse_arguments() { + while [ "$1" != "" ]; do + case "$1" in + --help | -h) + print_help + exit 1 + ;; + --no-nvidia) + option_no_nvidia=true + ;; + --devel) + option_devel=true + ;; + --headless) + option_headless=true + ;; + --workspace) + WORKSPACE_PATH="$2" + shift + ;; + --map-path) + MAP_PATH="$2" + shift + ;; + --*) + echo "Unknown option: $1" + print_help + exit 1 + ;; + -*) + echo "Unknown option: $1" + print_help + exit 1 + ;; + *) + LAUNCH_CMD="$@" + break + ;; + esac + shift + done +} + +# Set image and workspace variables +set_variables() { + # Check if map path is provided for default launch command + if [ "$MAP_PATH" == "" ] && [ "$LAUNCH_CMD" == "" ]; then + print_help + exit 1 + fi + + # Mount map path if provided + MAP="-v ${MAP_PATH}:/autoware_map:ro" + + # Set workspace path if provided and login with local user + if [ "$WORKSPACE_PATH" != "" ]; then + USER_ID="-e LOCAL_UID=$(id -u) -e LOCAL_GID=$(id -g) -e LOCAL_USER=$(id -un) -e LOCAL_GROUP=$(id -gn)" + WORKSPACE="-v ${WORKSPACE_PATH}:/workspace" + fi + + # Set default launch command if not provided + if [ "$LAUNCH_CMD" == "" ]; then + if [ "$WORKSPACE_PATH" != "" ]; then + LAUNCH_CMD="/bin/bash" + else + LAUNCH_CMD=${DEFAULT_LAUNCH_CMD} + fi + fi + + # Set image based on option + if [ "$option_devel" == "true" ]; then + IMAGE="ghcr.io/autowarefoundation/autoware-openadk:latest-devel" + else + IMAGE="ghcr.io/autowarefoundation/autoware-openadk:latest-runtime" + fi +} + +# Set GPU flag based on option +set_gpu_flag() { + if [ "$option_no_nvidia" = "true" ]; then + GPU_FLAG="" + else + GPU_FLAG="--gpus all" + IMAGE=${IMAGE}-cuda + fi +} + +# Set X display variables +set_x_display() { + MOUNT_X="" + if [ "$option_headless" = "false" ]; then + MOUNT_X="-e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix" + xhost + >/dev/null + fi +} + +# Main script execution +main() { + # Parse arguments + parse_arguments "$@" + set_variables + set_gpu_flag + set_x_display + + echo -e "${GREEN}\n-----------------------LAUNCHING CONTAINER-----------------------" + echo -e "${GREEN}IMAGE:${NC} ${IMAGE}" + echo -e "${GREEN}MAP PATH(mounted):${NC} ${MAP_PATH}:/autoware_map" + echo -e "${GREEN}WORKSPACE(mounted):${NC} ${WORKSPACE_PATH}:/workspace" + echo -e "${GREEN}LAUNCH CMD:${NC} ${LAUNCH_CMD}" + echo -e "${GREEN}-----------------------------------------------------------------${NC}" + + # Launch the container + set -x + docker run -it --rm --net=host ${GPU_FLAG} ${USER_ID} ${MOUNT_X} \ + -e XAUTHORITY=${XAUTHORITY} -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR -e NVIDIA_DRIVER_CAPABILITIES=all -v /etc/localtime:/etc/localtime:ro \ + ${WORKSPACE} ${MAP} ${IMAGE} \ + ${LAUNCH_CMD} +} + +# Execute the main script +main "$@" diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 3eb24732940..fe4b9a8fa3b 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -5,6 +5,24 @@ set -e +# Function to print help message +print_help() { + echo "Usage: setup-dev-env.sh [OPTIONS]" + echo "Options:" + echo " --help Display this help message" + echo " -h Display this help message" + echo " -y Use non-interactive mode" + echo " -v Enable debug outputs" + echo " --no-nvidia Disable installation of the NVIDIA-related roles ('cuda' and 'tensorrt')" + echo " --no-cuda-drivers Disable installation of 'cuda-drivers' in the role 'cuda'" + echo " --runtime Disable installation dev package of role 'cuda' and 'tensorrt'" + echo " --data-dir Set data directory (default: $HOME/autoware_data)" + echo " --download-artifacts" + echo " Download artifacts" + echo " --module Specify the module (default: all)" + echo "" +} + SCRIPT_DIR=$(readlink -f "$(dirname "$0")") # Parse arguments @@ -13,6 +31,10 @@ option_data_dir="$HOME/autoware_data" while [ "$1" != "" ]; do case "$1" in + --help | -h) + print_help + exit 1 + ;; -y) # Use non-interactive mode. option_yes=true @@ -42,6 +64,10 @@ while [ "$1" != "" ]; do # Set download artifacts option option_download_artifacts=true ;; + --module) + option_module="$2" + shift + ;; *) args+=("$1") ;; @@ -94,11 +120,10 @@ fi # Check installation of dev package if [ "$option_runtime" = "true" ]; then - ansible_args+=("--extra-vars" "tensorrt_install_devel=false") - # ROS installation type, default "desktop" - ansible_args+=("--extra-vars" "ros2_installation_type=ros-base") + ansible_args+=("--extra-vars" "ros2_installation_type=ros-base") # ROS installation type, default "desktop" + ansible_args+=("--extra-vars" "install_devel=false") else - ansible_args+=("--extra-vars" "tensorrt_install_devel=true") + ansible_args+=("--extra-vars" "install_devel=true") fi # Check downloading artifacts @@ -107,8 +132,26 @@ if [ "$option_yes" = "true" ] || [ "$option_download_artifacts" = "true" ]; then ansible_args+=("--extra-vars" "prompt_download_artifacts=y") fi +# Check downloading artifacts +if [ "$target_playbook" = "autoware.dev_env.openadk" ]; then + if [ "$option_download_artifacts" = "true" ]; then + echo -e "\e[36mArtifacts will be downloaded to $option_data_dir\e[m" + ansible_args+=("--extra-vars" "prompt_download_artifacts=y") + else + ansible_args+=("--extra-vars" "prompt_download_artifacts=N") + fi +elif [ "$option_yes" = "true" ] || [ "$option_download_artifacts" = "true" ]; then + echo -e "\e[36mArtifacts will be downloaded to $option_data_dir\e[m" + ansible_args+=("--extra-vars" "prompt_download_artifacts=y") +fi + ansible_args+=("--extra-vars" "data_dir=$option_data_dir") +# Check module option +if [ "$option_module" != "" ]; then + ansible_args+=("--extra-vars" "module=$option_module") +fi + # Load env source "$SCRIPT_DIR/amd64.env" if [ "$(uname -m)" = "aarch64" ]; then From 55197847b9af9e08a7219fa701e3cced3b2f5793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 8 Mar 2024 15:51:15 +0300 Subject: [PATCH 123/380] ci(build-main): update for openadk (#4528) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt Signed-off-by: Oguz --- .github/workflows/build-main-self-hosted.yaml | 18 +++++++++++++----- .github/workflows/build-main.yaml | 18 +++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 8f51ba5a262..e4cc44884e3 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -4,6 +4,13 @@ on: schedule: - cron: 0 12 * * * workflow_dispatch: + inputs: + artifacts-destination: + type: choice + description: Built images will be saved as tarball + options: + - tarball + default: tarball jobs: build-main-self-hosted: @@ -17,11 +24,12 @@ jobs: include: - name: no-cuda base_image_env: base_image + lib_dir: aarch64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda - base_image_env: cuda_base_image - setup-args: --no-cuda-drivers + base_image_env: base_image + lib_dir: aarch64 additional-tag-suffix: -cuda steps: # https://github.com/actions/checkout/issues/211 @@ -45,15 +53,15 @@ jobs: - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-universe + bake-target: autoware-openadk build-args: | *.platform=linux/arm64 *.args.ROS_DISTRO=${{ env.rosdistro }} *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} - *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} *.args.SETUP_ARGS=${{ matrix.setup-args }} - tag-prefix: ${{ env.rosdistro }}- + *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 + tag-prefix: ${{ env.rosdistro }} allow-push: false - name: Show disk space diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 0b55e94658e..7b21980574a 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -4,6 +4,13 @@ on: schedule: - cron: 0 12 * * * workflow_dispatch: + inputs: + artifacts-destination: + type: choice + description: Built images will be saved as tarball + options: + - tarball + default: tarball jobs: build-main: @@ -17,11 +24,12 @@ jobs: include: - name: no-cuda base_image_env: base_image + lib_dir: x86_64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda - base_image_env: cuda_base_image - setup-args: --no-cuda-drivers + base_image_env: base_image + lib_dir: x86_64 additional-tag-suffix: -cuda steps: - name: Check out repository @@ -40,15 +48,15 @@ jobs: - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-universe + bake-target: autoware-openadk build-args: | *.platform=linux/amd64 *.args.ROS_DISTRO=${{ env.rosdistro }} *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} - *.args.PREBUILT_BASE_IMAGE=${{ env.prebuilt_base_image }} *.args.SETUP_ARGS=${{ matrix.setup-args }} - tag-prefix: ${{ env.rosdistro }}- + *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 + tag-prefix: ${{ env.rosdistro }} allow-push: false - name: Show disk space From 117c633f875aba8df48d2948fd5fa34b7b57d979 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Tue, 12 Mar 2024 16:49:29 +0300 Subject: [PATCH 124/380] docs(openadkit): simplify the readme (#4526) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Simplify the readme Signed-off-by: oguzkaganozt * Update docker/README.md Co-authored-by: M. Fatih Cırıt * fix documentation to pass spellcheck Signed-off-by: Oguz Ozturk --------- Signed-off-by: oguzkaganozt Signed-off-by: Oguz Ozturk Co-authored-by: M. Fatih Cırıt --- docker/README.md | 181 +---------------------------------------------- 1 file changed, 3 insertions(+), 178 deletions(-) diff --git a/docker/README.md b/docker/README.md index 17358afd8fb..a569443bf01 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,180 +1,5 @@ -# Open AD Kit: Containerized Workloads for Autoware +# Open AD Kit: containerized workloads for Autoware -Open AD Kit offers two types of Docker image to let you get started with Autoware quickly: `devel` and `runtime`. +[Open AD Kit](https://autoware.org/open-ad-kit/) offers containers for Autoware to simplify the development and deployment of Autoware and its dependencies. This directory contains scripts to build and run the containers. -1. The `devel` image enables you to develop Autoware without setting up the local development environment. -2. The `runtime` image contains only runtime executables and enables you to try out Autoware quickly. - -!!! info - - Before proceeding, confirm and agree with the [NVIDIA Deep Learning Container license](https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license). By pulling and using the Autoware Open AD Kit images, you accept the terms and conditions of the license. - -## Prerequisites - -- Docker -- NVIDIA Container Toolkit (preferred) -- NVIDIA CUDA 12 compatible GPU Driver (preferred) - -The [setup script](../setup-dev-env.sh) will install all required dependencies with the setup script: - -```bash -./setup-dev-env.sh -y docker -``` - -To install without **NVIDIA GPU** support: - -```bash -./setup-dev-env.sh -y --no-nvidia docker -``` - -!!! info - - GPU acceleration is required for some features such as object detection and traffic light detection/classification. For details of how to enable these features without a GPU, refer to the [Running Autoware without CUDA](../how-to-guides/others/running-autoware-without-cuda.md). - -## Usage - -### Runtime - -You can use `run.sh` to run the Autoware runtime container with the map data: - -```bash -./docker/run.sh --map-path path_to_map_data -``` - -!!! info - - You can use `--no-nvidia` to run without NVIDIA GPU support, and `--headless` to run without display that means no RViz visualization. - -For more launch options you can edit the launch command with `--launch-cmd` option: - -```bash -./docker/run.sh --map-path path_to_map_data --launch-cmd "ros2 launch autoware_launch autoware.launch.xml map_path:=/autoware_map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit" -``` - -#### Run Autoware simulator - -Inside the container, you can run the Autoware simulation by following these tutorials: - -[Planning Simulation](../../tutorials/ad-hoc-simulation/planning-simulation.md) - -[Rosbag Replay Simulation](../../tutorials/ad-hoc-simulation/rosbag-replay-simulation.md). - -### Development Environment - -You can use [VS Code Remote Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) to develop Autoware in the containerized environment with ease. Or you can use `run.sh` manually to run the Autoware development container with the workspace mounted. - -#### Using VS Code Remote Containers for Development - -Get the Visual Studio Code's [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension. -And reopen the workspace in the container by selecting `Remote-Containers: Reopen in Container` from the Command Palette (`F1`). - -Autoware and Autoware-cuda are available containers for development. - -If you want to use CUDA supported dev container, you need to install the NVIDIA Container Toolkit before opening the workspace in the container: - -```bash -# Add NVIDIA container toolkit GPG key -sudo apt-key adv --fetch-keys https://nvidia.github.io/libnvidia-container/gpgkey -sudo gpg --no-default-keyring --keyring /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg --import /etc/apt/trusted.gpg - -# Add NVIDIA container toolkit repository -echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(dpkg --print-architecture) /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list - -# Update the package list -sudo apt-get update - -# Install NVIDIA Container Toolkit -sudo apt-get install -y nvidia-container-toolkit - -# Add NVIDIA runtime support to docker engine -sudo nvidia-ctk runtime configure --runtime=docker - -# Restart docker daemon -sudo systemctl restart docker -``` - -Then, you can use the `Remote-Containers: Reopen in Container` command to open the workspace in the container. - -#### Using `run.sh` for Development - -```bash -./docker/run.sh --devel --workspace path_to_workspace -``` - -!!! info - - You should mount the workspace you are working on with `--workspace path_to_workspace`. For a development environment without NVIDIA GPU support use `--no-nvidia`. - -#### Creating a new workspace - -If you don't have a workspace yet, you can create a new workspace with following steps: - -1. Create the `src` directory and clone repositories into it. - - ```bash - mkdir src - vcs import src < autoware.repos - ``` - -2. Update dependent ROS packages. - - The dependency of Autoware may change after the Docker image was created. - In that case, you need to run the following commands to update the dependency. - - ```bash - sudo apt update - rosdep update - rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO - ``` - -3. Build the workspace. - - ```bash - colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release - ``` - - If there is any build issue, refer to [Troubleshooting](../../support/troubleshooting/index.md#build-issues). - -> **To Update the Workspace** -> -> ```bash -> cd autoware -> git pull -> vcs import src < autoware.repos -> vcs pull src -> ``` - -## Building Docker images from scratch - -If you want to build these images locally for development purposes, run the following command: - -```bash -cd autoware/ -./docker/build.sh -``` - -To build without CUDA, use the `--no-cuda` option: - -```bash -./docker/build.sh --no-cuda -``` - -To build only development image, use the `--devel-only` option: - -```bash -./docker/build.sh --devel-only -``` - -To specify the platform, use the `--platform` option: - -```bash -./docker/build.sh --platform linux/amd64 -./docker/build.sh --platform linux/arm64 -``` - -### Using Docker images other than `latest` - -There are also images versioned based on the `date` or `release tag`. -Use them when you need a fixed version of the image. - -The list of versions can be found [here](https://github.com/autowarefoundation/autoware/packages). +Detailed instructions on how to use the containers can be found in the [Open AD Kit documentation](https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/docker-installation/). From e1a42691084bd53932843e89a6c7d9093a4e4a42 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Tue, 12 Mar 2024 17:11:44 +0300 Subject: [PATCH 125/380] ci(devcontainers): create single dockerfile for devcontainers (#4525) * Merge dockerfiles Signed-off-by: oguzkaganozt * hadolint ignore Signed-off-by: Oguz Ozturk --------- Signed-off-by: oguzkaganozt Signed-off-by: Oguz Ozturk --- .devcontainer/{base => }/Dockerfile | 4 +++- .devcontainer/base/devcontainer.json | 6 ++---- .devcontainer/cuda/Dockerfile | 14 -------------- .devcontainer/cuda/devcontainer.json | 3 ++- 4 files changed, 7 insertions(+), 20 deletions(-) rename .devcontainer/{base => }/Dockerfile (84%) delete mode 100644 .devcontainer/cuda/Dockerfile diff --git a/.devcontainer/base/Dockerfile b/.devcontainer/Dockerfile similarity index 84% rename from .devcontainer/base/Dockerfile rename to .devcontainer/Dockerfile index 4392e159588..3d83ababb32 100644 --- a/.devcontainer/base/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,6 @@ -FROM ghcr.io/autowarefoundation/autoware-openadk:latest-devel +# hadolint global ignore=DL3006 +ARG BASE_IMAGE +FROM $BASE_IMAGE ENV SHELL /bin/bash diff --git a/.devcontainer/base/devcontainer.json b/.devcontainer/base/devcontainer.json index bf5238b4c7a..939cc741f5e 100644 --- a/.devcontainer/base/devcontainer.json +++ b/.devcontainer/base/devcontainer.json @@ -1,12 +1,10 @@ { "name": "Autoware", "build": { - "dockerfile": "Dockerfile" + "dockerfile": "../Dockerfile", + "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware-openadk:latest-devel" } }, "remoteUser": "autoware", - "hostRequirements": { - "gpu": true - }, "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", diff --git a/.devcontainer/cuda/Dockerfile b/.devcontainer/cuda/Dockerfile deleted file mode 100644 index e0c09f5de29..00000000000 --- a/.devcontainer/cuda/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM ghcr.io/autowarefoundation/autoware-openadk:latest-devel-cuda - -ENV SHELL /bin/bash - -ARG USERNAME=autoware -ARG USER_UID=1000 -ARG USER_GID=$USER_UID - -RUN groupadd --gid $USER_GID $USERNAME \ - && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ - && apt-get update \ - && apt-get install -y sudo \ - && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ - && chmod 0440 /etc/sudoers.d/$USERNAME diff --git a/.devcontainer/cuda/devcontainer.json b/.devcontainer/cuda/devcontainer.json index ccae5a61799..bc0efde100f 100644 --- a/.devcontainer/cuda/devcontainer.json +++ b/.devcontainer/cuda/devcontainer.json @@ -1,7 +1,8 @@ { "name": "Autoware-cuda", "build": { - "dockerfile": "Dockerfile" + "dockerfile": "../Dockerfile", + "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware-openadk:latest-devel-cuda" } }, "remoteUser": "autoware", "hostRequirements": { From 59a4a9598bf2b4a87c8eaff3ef9b1de24fa7f1ce Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Fri, 22 Mar 2024 17:04:06 +0300 Subject: [PATCH 126/380] fix: ccache permissions (#4556) * fix ccache permissions Signed-off-by: oguzkaganozt * Link CC and CXX to ccache Signed-off-by: oguzkaganozt * style(pre-commit): autofix --------- Signed-off-by: oguzkaganozt Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .github/workflows/build-main-self-hosted.yaml | 4 ++++ .github/workflows/build-main.yaml | 4 ++++ ansible/roles/build_tools/tasks/main.yaml | 24 +++++++++++++++++++ docker/autoware-openadk/Dockerfile | 7 +----- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index e4cc44884e3..cc6396e01ea 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -67,3 +67,7 @@ jobs: - name: Show disk space run: | df -h + + - name: Show ccache stats + run: | + ccache -s diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 7b21980574a..38250e160b4 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -62,3 +62,7 @@ jobs: - name: Show disk space run: | df -h + + - name: Show ccache stats + run: | + ccache -s diff --git a/ansible/roles/build_tools/tasks/main.yaml b/ansible/roles/build_tools/tasks/main.yaml index e83056a6428..91f8718a039 100644 --- a/ansible/roles/build_tools/tasks/main.yaml +++ b/ansible/roles/build_tools/tasks/main.yaml @@ -4,3 +4,27 @@ name: ccache state: latest update_cache: true + +- name: Add CCACHE_DIR to .bashrc + ansible.builtin.lineinfile: + dest: ~/.bashrc + line: export CCACHE_DIR="/ccache" + state: present + create: true + mode: 0644 + +- name: Export CC to ccache + ansible.builtin.lineinfile: + dest: ~/.bashrc + line: export CC="/usr/lib/ccache/gcc" + state: present + create: true + mode: 0644 + +- name: Export CXX to ccache + ansible.builtin.lineinfile: + dest: ~/.bashrc + line: export CXX="/usr/lib/ccache/g++" + state: present + create: true + mode: 0644 diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index bd41668d6f5..7b8919b20b9 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -45,9 +45,6 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG SETUP_ARGS ARG ROS_DISTRO -ENV CCACHE_DIR=/ccache -ENV CC="/usr/lib/ccache/gcc" -ENV CXX="/usr/lib/ccache/g++" # Set up development environment RUN --mount=type=ssh \ @@ -74,6 +71,7 @@ RUN --mount=type=ssh \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ && find /autoware/install -type d -exec chmod 777 {} \; \ + && chmod -R 777 /ccache \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && rm -rf /autoware/build /autoware/src @@ -88,9 +86,6 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache -# Change working directory to workspace -WORKDIR /workspace - # Create entrypoint COPY docker/autoware-openadk/etc/ros_entrypoint.sh /ros_entrypoint.sh RUN chmod +x /ros_entrypoint.sh From 56470d5183e5e6c077fa9e6f93d32acffc87b271 Mon Sep 17 00:00:00 2001 From: Yuxuan Liu <619684051@qq.com> Date: Fri, 29 Mar 2024 13:57:34 +0900 Subject: [PATCH 127/380] fix(tensorrt_role): add holding libnvinfer-headers-plugin-dev to fix version conflict (#4576) * fix(tensorrt_role): add holding libnvinfer-headers-plugin-dev to fix version conflict Signed-off-by: Yuxuan Liu * add one more Signed-off-by: Yuxuan Liu * update the order of the readme file to look more neat Signed-off-by: Yuxuan Liu --------- Signed-off-by: Yuxuan Liu Co-authored-by: Yuxuan Liu --- ansible/roles/tensorrt/README.md | 6 +++++- ansible/roles/tensorrt/tasks/main.yaml | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ansible/roles/tensorrt/README.md b/ansible/roles/tensorrt/README.md index 2b4bc48b108..1df87cad89e 100644 --- a/ansible/roles/tensorrt/README.md +++ b/ansible/roles/tensorrt/README.md @@ -37,6 +37,8 @@ sudo apt-get install -y \ libcudnn8-dev=${cudnn_version} \ libnvinfer-dev=${tensorrt_version} \ libnvinfer-plugin-dev=${tensorrt_version} \ +libnvinfer-headers-dev=${tensorrt_version} \ +libnvinfer-headers-plugin-dev=${tensorrt_version} \ libnvparsers-dev=${tensorrt_version} \ libnvonnxparsers-dev=${tensorrt_version} @@ -45,5 +47,7 @@ libcudnn8-dev \ libnvinfer-dev \ libnvinfer-plugin-dev \ libnvparsers-dev \ -libnvonnxparsers-dev +libnvonnxparsers-dev \ +libnvinfer-headers-dev \ +libnvinfer-headers-plugin-dev ``` diff --git a/ansible/roles/tensorrt/tasks/main.yaml b/ansible/roles/tensorrt/tasks/main.yaml index 8e01abf1e8c..5c2a49e0d3d 100644 --- a/ansible/roles/tensorrt/tasks/main.yaml +++ b/ansible/roles/tensorrt/tasks/main.yaml @@ -18,6 +18,8 @@ - libcudnn8-dev={{ cudnn_version }} - libnvinfer-dev={{ tensorrt_version }} - libnvinfer-plugin-dev={{ tensorrt_version }} + - libnvinfer-headers-dev={{ tensorrt_version }} + - libnvinfer-headers-plugin-dev={{ tensorrt_version }} - libnvparsers-dev={{ tensorrt_version }} - libnvonnxparsers-dev={{ tensorrt_version }} allow_change_held_packages: true @@ -47,6 +49,8 @@ - libcudnn8-dev - libnvinfer-dev - libnvinfer-plugin-dev + - libnvinfer-headers-dev + - libnvinfer-headers-plugin-dev - libnvparsers-dev - libnvonnxparsers-dev when: install_devel == 'true' From 12185e19134621d18dddf6775c3de82c2015a393 Mon Sep 17 00:00:00 2001 From: Hiroki OTA Date: Fri, 29 Mar 2024 16:05:15 +0900 Subject: [PATCH 128/380] ci: add set git config to resolve when ansible-galaxy-requirements has private repository (#4578) * ci: add generate token and set git config to resolve when ansible-galaxy-requirements has private repo Signed-off-by: h-ohta * add only set git config Signed-off-by: h-ohta --------- Signed-off-by: h-ohta --- .github/workflows/pre-commit-ansible.yaml | 5 +++++ .github/workflows/setup-universe.yaml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/.github/workflows/pre-commit-ansible.yaml b/.github/workflows/pre-commit-ansible.yaml index 2de37e26ef9..dd023cbd265 100644 --- a/.github/workflows/pre-commit-ansible.yaml +++ b/.github/workflows/pre-commit-ansible.yaml @@ -10,6 +10,11 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Install Ansible Galaxy depends for ansible-lint run: | ansible-galaxy collection install -f -r ansible-galaxy-requirements.yaml diff --git a/.github/workflows/setup-universe.yaml b/.github/workflows/setup-universe.yaml index 5840c359d52..ef39011aca8 100644 --- a/.github/workflows/setup-universe.yaml +++ b/.github/workflows/setup-universe.yaml @@ -10,6 +10,11 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run setup script run: | ./setup-dev-env.sh -y -v universe From b3e40942f83eb943ecdccc23872c0518cad935d8 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Fri, 29 Mar 2024 16:46:57 +0300 Subject: [PATCH 129/380] fix(ccache): enable ccache on bare-metal setups (#4566) * . Signed-off-by: Oguz Ozturk * fix ccache usage in docker build Signed-off-by: oguzkaganozt * . Signed-off-by: oguzkaganozt * change ccache directory Signed-off-by: oguzkaganozt * . Signed-off-by: oguzkaganozt * . Signed-off-by: Oguz Ozturk --------- Signed-off-by: Oguz Ozturk Signed-off-by: oguzkaganozt --- ansible/roles/build_tools/tasks/main.yaml | 14 +++++++++++++- docker/autoware-openadk/Dockerfile | 5 ++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ansible/roles/build_tools/tasks/main.yaml b/ansible/roles/build_tools/tasks/main.yaml index 91f8718a039..836501f6a94 100644 --- a/ansible/roles/build_tools/tasks/main.yaml +++ b/ansible/roles/build_tools/tasks/main.yaml @@ -8,7 +8,7 @@ - name: Add CCACHE_DIR to .bashrc ansible.builtin.lineinfile: dest: ~/.bashrc - line: export CCACHE_DIR="/ccache" + line: export CCACHE_DIR="/var/tmp/ccache" state: present create: true mode: 0644 @@ -28,3 +28,15 @@ state: present create: true mode: 0644 + +- name: Create ccache directory + ansible.builtin.file: + path: /var/tmp/ccache + state: directory + mode: 0755 + +- name: Source .bashrc + ansible.builtin.shell: source ~/.bashrc + args: + executable: /bin/bash + changed_when: false diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index 7b8919b20b9..3a2a7095ce8 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -45,6 +45,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG SETUP_ARGS ARG ROS_DISTRO +ENV CCACHE_DIR="/var/tmp/ccache" +ENV CC="/usr/lib/ccache/gcc" +ENV CXX="/usr/lib/ccache/g++" # Set up development environment RUN --mount=type=ssh \ @@ -71,7 +74,7 @@ RUN --mount=type=ssh \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ && find /autoware/install -type d -exec chmod 777 {} \; \ - && chmod -R 777 /ccache \ + && chmod -R 777 /var/tmp/ccache \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && rm -rf /autoware/build /autoware/src From 918a067f2345fc726ca9de5918860281c4ff1fb8 Mon Sep 17 00:00:00 2001 From: A-Harada <37181352+Autumn60@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:42:04 +0900 Subject: [PATCH 130/380] fix(ansible): fix file names and hashes in SHA256SUMS (#4581) Fix SHA256SUMS Fix file names and hashes Signed-off-by: Autumn60 --- ansible/roles/artifacts/SHA256SUMS | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/artifacts/SHA256SUMS b/ansible/roles/artifacts/SHA256SUMS index 0c5a32543f6..0abb9037e64 100644 --- a/ansible/roles/artifacts/SHA256SUMS +++ b/ansible/roles/artifacts/SHA256SUMS @@ -17,9 +17,9 @@ dc1a876580d86ee7a341d543f8ade2ede7f43bd032dc5b44155b1f0175405764 ./lidar_center 455b71b3b20d3a96aa0e49f32714ba50421f668a2f9b9907c30b1346ac8a3703 ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_1.onnx 41bb79a23a4ac57956adb8e9cb3904420db1b0cd032e97b670cc4f8b174ae3fe ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_4.onnx e4792eed6a46fdbd02be2f3a4f1ce91f36fa77698493caf3102e445178c0f058 ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx -a41e6e3324e32c30b3b2fe38908eaf3471e2bfdaeb9e14ca0c1c3bc0275119c6 ./traffic_light_fine_detector/tlr_labels.txt -922839fcf22bd32ae5065146fcec193e9d6360ca03bd4c83faea835045daf8eb ./traffic_light_fine_detector/tlr_yolox_s_batch_1.onnx -b3c6e00acc6ff547d165469684ffb620a9a6330e9d591d445f50c4cf5cb4e292 ./traffic_light_fine_detector/tlr_yolox_s_batch_4.onnx -2824d4c5b7ab5f6bfd41e43e82747107c53e1c727b1cf1dd6746bc49e6749128 ./traffic_light_fine_detector/tlr_yolox_s_batch_6.onnx +a2a91f5fe9c2e68e3e3647a272bb9bb25cd07631a1990a3fb15efddce7691131 ./traffic_light_fine_detector/tlr_labels.txt +1ad633066a1195006f4709f8fa07800dd65a74a814b3efb4c99bcc5a1a7962f6 ./traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_1.onnx +cf93eb1e1a97aefc6edd0c0c4d77c7f5fc2aa1e81e3c5c9cd49d976173d03a04 ./traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_4.onnx +0b05a89fb30f1f92c6ec687d48e8ceda4da6f81cbd82d8a102d168753a6cedb6 ./traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_6.onnx 66b3ca668e577393b657fbe1ed626538d89ca3adccd5862de6c7fa190238dbca ./tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz 1f660e15f95074bade32b1f80dbf618e9cee1f0b9f76d3f4671cb9be7f56eb3a ./yabloc_pose_initializer/resources.tar.gz From fb5115986cf2f4c42550560bfb4728e004a96804 Mon Sep 17 00:00:00 2001 From: Naophis Date: Fri, 5 Apr 2024 19:03:52 +0900 Subject: [PATCH 131/380] feat: escape install task if the specific package is held (#4585) * feat: escape install task if the specific package is held Signed-off-by: Naophis * feat: use FQCN Signed-off-by: Naophis * feat: Jinja templates should only be at the end of 'name' Signed-off-by: Naophis * fix: change literal Signed-off-by: Naophis * doc: fix typo Signed-off-by: Naophis --------- Signed-off-by: Naophis --- ansible/roles/ros2/README.md | 2 ++ ansible/roles/ros2/tasks/main.yaml | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/ansible/roles/ros2/README.md b/ansible/roles/ros2/README.md index 54fb39e0a94..07fab9500b8 100644 --- a/ansible/roles/ros2/README.md +++ b/ansible/roles/ros2/README.md @@ -4,6 +4,8 @@ This role installs [ROS 2](http://www.ros2.org/) following [this page](https://d Additional steps may be needed depending on the `rosdistro` you choose. +To prevent the update of the ROS 2 packages, if ros-`distro`-desktop is held, the installation process for the packages will be skipped and output warning. + ```bash diff --git a/ansible/roles/ros2/tasks/main.yaml b/ansible/roles/ros2/tasks/main.yaml index ab77bb632c1..9ad8bb165f9 100644 --- a/ansible/roles/ros2/tasks/main.yaml +++ b/ansible/roles/ros2/tasks/main.yaml @@ -34,12 +34,25 @@ state: present update_cache: true +- name: Hold check of ros-{{ rosdistro + '-' + ros2_installation_type }} + ansible.builtin.command: apt-mark showhold + register: held_ros_packages + changed_when: false + - name: Install ros-{{ rosdistro + '-' + ros2_installation_type }} become: true ansible.builtin.apt: name: ros-{{ rosdistro }}-{{ ros2_installation_type }} state: latest update_cache: true + when: "'ros-' + rosdistro + '-' + ros2_installation_type not in held_ros_packages.stdout" + register: install_result + failed_when: false + +- name: Display warning if ROS 2 package is held + ansible.builtin.debug: + msg: ROS package 'ros-{{ rosdistro + '-' + ros2_installation_type }}' is apt-mark hold. Skipping installation. + when: not install_result.changed - name: Add PATH to .bashrc ansible.builtin.lineinfile: From 91cad46956847ea9295a8f65b0c77dabfd754763 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 12:42:25 +0300 Subject: [PATCH 132/380] ci(pre-commit-ansible): autoupdate (#4028) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index 0fbe1ce312f..ab1f794f0ba 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v6.22.0 + rev: v24.2.2 hooks: - id: ansible-lint additional_dependencies: From 2500359da7b46bb48f0bd541c1ac9e960b37746d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 12:43:00 +0300 Subject: [PATCH 133/380] chore(deps): bump peter-evans/create-pull-request from 5 to 6 (#4173) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5 to 6. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v5...v6) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-tool-versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 579e756312f..9ec312d7ca7 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -40,7 +40,7 @@ jobs: - name: Create PR id: create-pr - uses: peter-evans/create-pull-request@v5 + uses: peter-evans/create-pull-request@v6 with: token: ${{ steps.generate-token.outputs.token }} base: ${{ github.event.repository.default_branch }} From 6a225bcd8b4f35b30bb764006c8a341ce48320d5 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 12:43:58 +0300 Subject: [PATCH 134/380] ci(pre-commit-optional): autoupdate (#4531) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index 3b43f9ae113..b2d8c5e8059 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.11.2 + rev: v3.12.1 hooks: - id: markdown-link-check args: [--quiet, --config=.markdown-link-check.json] From d04f96431e2f6190398a7087bb03fa5bf433aa05 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 12:46:24 +0300 Subject: [PATCH 135/380] chore(pre-commit.ci): pre-commit autoupdate (#4011) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [pre-commit.ci] pre-commit autoupdate updates: - [github.com/pre-commit/pre-commit-hooks: v4.4.0 → v4.6.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.4.0...v4.6.0) - [github.com/igorshubovych/markdownlint-cli: v0.34.0 → v0.39.0](https://github.com/igorshubovych/markdownlint-cli/compare/v0.34.0...v0.39.0) - [github.com/pre-commit/mirrors-prettier: v3.0.0-alpha.9-for-vscode → v4.0.0-alpha.8](https://github.com/pre-commit/mirrors-prettier/compare/v3.0.0-alpha.9-for-vscode...v4.0.0-alpha.8) - [github.com/adrienverge/yamllint: v1.31.0 → v1.35.1](https://github.com/adrienverge/yamllint/compare/v1.31.0...v1.35.1) - [github.com/shellcheck-py/shellcheck-py: v0.9.0.2 → v0.10.0.1](https://github.com/shellcheck-py/shellcheck-py/compare/v0.9.0.2...v0.10.0.1) - [github.com/scop/pre-commit-shfmt: v3.6.0-2 → v3.8.0-1](https://github.com/scop/pre-commit-shfmt/compare/v3.6.0-2...v3.8.0-1) - [github.com/AleksaC/hadolint-py: v2.12.0.2 → v2.12.0.3](https://github.com/AleksaC/hadolint-py/compare/v2.12.0.2...v2.12.0.3) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 664befbc3a3..b23ffc30ad5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ ci: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.6.0 hooks: - id: check-json - id: check-merge-conflict @@ -17,34 +17,34 @@ repos: args: [--markdown-linebreak-ext=md] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.34.0 + rev: v0.39.0 hooks: - id: markdownlint args: [-c, .markdownlint.yaml, --fix] - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0-alpha.9-for-vscode + rev: v4.0.0-alpha.8 hooks: - id: prettier - repo: https://github.com/adrienverge/yamllint - rev: v1.31.0 + rev: v1.35.1 hooks: - id: yamllint - repo: https://github.com/shellcheck-py/shellcheck-py - rev: v0.9.0.2 + rev: v0.10.0.1 hooks: - id: shellcheck - repo: https://github.com/scop/pre-commit-shfmt - rev: v3.6.0-2 + rev: v3.8.0-1 hooks: - id: shfmt args: [-w, -s, -i=4] - repo: https://github.com/AleksaC/hadolint-py - rev: v2.12.0.2 + rev: v2.12.0.3 hooks: - id: hadolint From eeec77f2764f13a8f468dfb6b95d56486c1b4397 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe Date: Fri, 12 Apr 2024 00:01:05 +0900 Subject: [PATCH 136/380] feat(autoware.repos): add glog with v0.6.0 as a ros pkg (#4614) Signed-off-by: Takamasa Horibe --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index dee58c86c22..28dc0864335 100644 --- a/autoware.repos +++ b/autoware.repos @@ -69,6 +69,10 @@ repositories: type: git url: https://github.com/autowarefoundation/ament_cmake.git version: feat/faster_ament_libraries_deduplicate + universe/external/glog: # TODO(Horibe): to use isGoogleInitialized() API in v0.6.0. Remove when the rosdep glog version is updated to v0.6.0 (already updated in Ubuntu 24.04) + type: git + url: https://github.com/tier4/glog.git + version: v0.6.0_t4-ros # launcher launcher/autoware_launch: type: git From 9866356e55c7dece629a9390b1edbc3f19529148 Mon Sep 17 00:00:00 2001 From: Naophis Date: Tue, 16 Apr 2024 12:21:59 +0900 Subject: [PATCH 137/380] chore: ignore node_modules folder (#4628) feat: ignore node_modules folder --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 4e4e5475006..024b426a3b1 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ capture/ # CodeChecker .codechecker/ + +# Node.js +node_modules/ From 038f8a6604d15c62d4fe7d6468edad231227856f Mon Sep 17 00:00:00 2001 From: ito-san <57388357+ito-san@users.noreply.github.com> Date: Tue, 16 Apr 2024 18:07:52 +0900 Subject: [PATCH 138/380] fix(cuda): install NVML development library (#4621) Signed-off-by: ito-san --- ansible/roles/cuda/tasks/main.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index 0a075de1cfb..4ecf84ec401 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -34,6 +34,7 @@ - libcusparse-dev-{{ cuda__dash_case_cuda_version.stdout }} - libcublas-dev-{{ cuda__dash_case_cuda_version.stdout }} - libcurand-dev-{{ cuda__dash_case_cuda_version.stdout }} + - cuda-nvml-dev-{{ cuda__dash_case_cuda_version.stdout }} update_cache: true when: install_devel == 'true' From afc8764817e89d1ec54c67fabad48bcf68afbec5 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Tue, 16 Apr 2024 12:55:09 +0300 Subject: [PATCH 139/380] fix(ccache): fix ccache stats (#4622) * remove ccache stats Signed-off-by: Oguz Ozturk * style(pre-commit): autofix --------- Signed-off-by: Oguz Ozturk Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .github/actions/docker-build-and-push/action.yaml | 5 +++++ .github/workflows/build-main-self-hosted.yaml | 4 ---- .github/workflows/build-main.yaml | 4 ---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 13526e9083e..940df220693 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -182,3 +182,8 @@ runs: echo 'devel URL ${{ steps.artifact-upload-step-devel.outputs.artifact-url }}' echo 'runtime URL ${{ steps.artifact-upload-step-runtime.outputs.artifact-url }}' shell: bash + + - name: Show ccache stats + run: | + ccache -s + shell: bash diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index cc6396e01ea..e4cc44884e3 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -67,7 +67,3 @@ jobs: - name: Show disk space run: | df -h - - - name: Show ccache stats - run: | - ccache -s diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 38250e160b4..7b21980574a 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -62,7 +62,3 @@ jobs: - name: Show disk space run: | df -h - - - name: Show ccache stats - run: | - ccache -s From c11c8ec419d5fec53ce78ac418d0cf87ce740688 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Fri, 19 Apr 2024 17:39:28 +0300 Subject: [PATCH 140/380] fix(docker-build-and-push): remove ccache stats (#4640) Signed-off-by: oguzkaganozt --- .github/actions/docker-build-and-push/action.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 940df220693..13526e9083e 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -182,8 +182,3 @@ runs: echo 'devel URL ${{ steps.artifact-upload-step-devel.outputs.artifact-url }}' echo 'runtime URL ${{ steps.artifact-upload-step-runtime.outputs.artifact-url }}' shell: bash - - - name: Show ccache stats - run: | - ccache -s - shell: bash From f4853e2556db0f3008be2f6d69d2541312c343d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 19 Apr 2024 18:23:06 +0300 Subject: [PATCH 141/380] docs(readme.md): improve shields (#4641) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- README.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2be6f0d2124..efc3f8be789 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,56 @@ # Autoware - the world's leading open-source software project for autonomous driving ![Autoware_RViz](https://user-images.githubusercontent.com/63835446/158918717-58d6deaf-93fb-47f9-891d-e242b02cba7b.png) -[![Discord](https://img.shields.io/discord/953808765935816715?label=Autoware%20Discord&style=for-the-badge)](https://discord.gg/Q94UsPvReQ) + + +

+ + Autoware Universe Contributors + + Autoware Contributors +

+ + +

+ + Autoware Universe Activity + + Autoware Activity +

+ + +

+ + License +

+ + +

+ + Build Main CI + + Code Coverage +

+ + +

+ + Autoware Discord + + Autoware Twitter / X + + Autoware Linkedin +

Autoware is an open-source software stack for self-driving vehicles, built on the [Robot Operating System (ROS)](https://www.ros.org/). It includes all of the necessary functions to drive an autonomous vehicles from localization and object detection to route planning and control, and was created with the aim of enabling as many individuals and organizations as possible to contribute to open innovations in autonomous driving technology. From b21e9165daeab020623d9b54f50bd0c5232e4762 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Sat, 20 Apr 2024 00:39:44 +0900 Subject: [PATCH 142/380] feat(ansible): set default value for install_dev variable (#4607) * feat(ansible): set default value for install_dev variable Signed-off-by: Ryohsuke Mitsudome * fix: change true to 'y' for prompting install_devel Signed-off-by: Ryohsuke Mitsudome * style(pre-commit): autofix * fix: fix pre-commit error Signed-off-by: Ryohsuke Mitsudome --------- Signed-off-by: Ryohsuke Mitsudome Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/playbooks/openadk.yaml | 2 +- ansible/playbooks/universe.yaml | 7 ++++++- ansible/roles/cuda/tasks/main.yaml | 4 ++-- ansible/roles/tensorrt/tasks/main.yaml | 4 ++-- setup-dev-env.sh | 4 ++-- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ansible/playbooks/openadk.yaml b/ansible/playbooks/openadk.yaml index 496b3d8a73b..f343d9cef55 100644 --- a/ansible/playbooks/openadk.yaml +++ b/ansible/playbooks/openadk.yaml @@ -25,7 +25,7 @@ - role: autoware.dev_env.kisak_mesa when: module == 'base' - role: autoware.dev_env.build_tools - when: module == 'all' and install_devel=='true' + when: module == 'all' and install_devel=='y' # Module specific dependencies - role: autoware.dev_env.geographiclib diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index ea9b9fbb64b..e443c041bc5 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -12,6 +12,11 @@ [Warning] Should the ONNX model files and other artifacts be downloaded alongside setting up the development environment. Download artifacts? [y/N] private: false + - name: install_devel + prompt: |- + [Warning] Do you want to install recommended development tools for Autoware? [y/N] + private: false + default: y pre_tasks: - name: Verify OS ansible.builtin.fail: @@ -52,7 +57,7 @@ # Autoware devel dependencies - role: autoware.dev_env.dev_tools - when: install_devel == 'true' + when: install_devel == 'y' # ONNX files and other artifacts - role: autoware.dev_env.artifacts diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index 4ecf84ec401..e683d90da18 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -36,7 +36,7 @@ - libcurand-dev-{{ cuda__dash_case_cuda_version.stdout }} - cuda-nvml-dev-{{ cuda__dash_case_cuda_version.stdout }} update_cache: true - when: install_devel == 'true' + when: install_devel == 'y' - name: Install CUDA libraries except for cuda-drivers become: true @@ -47,7 +47,7 @@ - libcublas-{{ cuda__dash_case_cuda_version.stdout }} - libcurand-{{ cuda__dash_case_cuda_version.stdout }} update_cache: true - when: install_devel == 'false' + when: install_devel == 'N' - name: Install extra CUDA libraries for x86_64 become: true diff --git a/ansible/roles/tensorrt/tasks/main.yaml b/ansible/roles/tensorrt/tasks/main.yaml index 5c2a49e0d3d..816ba7dad4b 100644 --- a/ansible/roles/tensorrt/tasks/main.yaml +++ b/ansible/roles/tensorrt/tasks/main.yaml @@ -25,7 +25,7 @@ allow_change_held_packages: true allow_downgrade: true update_cache: true - when: install_devel == 'true' + when: install_devel == 'y' # apt-mark hold - name: Prevent CUDA-related packages from upgrading @@ -53,4 +53,4 @@ - libnvinfer-headers-plugin-dev - libnvparsers-dev - libnvonnxparsers-dev - when: install_devel == 'true' + when: install_devel == 'y' diff --git a/setup-dev-env.sh b/setup-dev-env.sh index fe4b9a8fa3b..e5cb6953f61 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -121,9 +121,9 @@ fi # Check installation of dev package if [ "$option_runtime" = "true" ]; then ansible_args+=("--extra-vars" "ros2_installation_type=ros-base") # ROS installation type, default "desktop" - ansible_args+=("--extra-vars" "install_devel=false") + ansible_args+=("--extra-vars" "install_devel=N") else - ansible_args+=("--extra-vars" "install_devel=true") + ansible_args+=("--extra-vars" "install_devel=y") fi # Check downloading artifacts From 840fac662419ba8b03dc7450e8de4d576874970a Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Sat, 20 Apr 2024 00:55:45 +0300 Subject: [PATCH 143/380] ci(pre-commit): autoupdate (#4632) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b23ffc30ad5..45fc38bf941 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,7 +44,7 @@ repos: args: [-w, -s, -i=4] - repo: https://github.com/AleksaC/hadolint-py - rev: v2.12.0.3 + rev: v2.12.1-beta hooks: - id: hadolint From 86a6ec87eb8b59d85f04e897e02c9cd6446e4b65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Apr 2024 00:56:34 +0300 Subject: [PATCH 144/380] chore(deps): bump styfle/cancel-workflow-action from 0.12.0 to 0.12.1 (#4617) Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.12.0 to 0.12.1. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.12.0...0.12.1) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/cancel-previous-workflows.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cancel-previous-workflows.yaml b/.github/workflows/cancel-previous-workflows.yaml index 1da4d24966d..44983f7dead 100644 --- a/.github/workflows/cancel-previous-workflows.yaml +++ b/.github/workflows/cancel-previous-workflows.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel previous runs - uses: styfle/cancel-workflow-action@0.12.0 + uses: styfle/cancel-workflow-action@0.12.1 with: workflow_id: all all_but_latest: true From eca295f118343309288133936efe9c478640541b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 23 Apr 2024 13:53:13 +0900 Subject: [PATCH 145/380] chore(docker): append cspell ignore line to ignore spell check of `libcu` and `libnv` (#4651) append cspell ignore Signed-off-by: Yutaka Kondo --- docker/autoware-openadk/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index 3a2a7095ce8..b0bd6b5841f 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -49,6 +49,7 @@ ENV CCACHE_DIR="/var/tmp/ccache" ENV CC="/usr/lib/ccache/gcc" ENV CXX="/usr/lib/ccache/g++" +# cspell: ignore libcu libnv # Set up development environment RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadk \ From 6dc56ccaf7c04eaeaac7f2cef307a187b47a1014 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 23 Apr 2024 13:54:26 +0900 Subject: [PATCH 146/380] chore(docker): remove duplicate `ARG ROS_DISTRO` (#4649) * remove ROS_DISTRO twice Signed-off-by: Yutaka Kondo * empty Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/autoware-openadk/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index b0bd6b5841f..456b038dd77 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -44,7 +44,6 @@ FROM base as prebuilt SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG SETUP_ARGS -ARG ROS_DISTRO ENV CCACHE_DIR="/var/tmp/ccache" ENV CC="/usr/lib/ccache/gcc" ENV CXX="/usr/lib/ccache/g++" From 41f54e9bf40c7e0b369baf20f1b90f7f2de239c4 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 23 Apr 2024 13:58:42 +0900 Subject: [PATCH 147/380] chore(docker): minimize `hadolint global ignore` options (#4650) minimize hadolint global ignore Signed-off-by: Yutaka Kondo --- docker/autoware-openadk/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index 456b038dd77..c7ce5cca809 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -1,4 +1,4 @@ -# hadolint global ignore=DL3006,DL3008,DL3009,DL3015,DL3013,DL3027,DL3042 +# hadolint global ignore=DL3006,DL3008,DL3013 ARG BASE_IMAGE FROM $BASE_IMAGE as base @@ -6,7 +6,6 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO # Install apt packages -# hadolint ignore=DL3008 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ git \ ssh \ @@ -33,7 +32,7 @@ WORKDIR /autoware RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module base --runtime openadk \ && pip uninstall -y ansible ansible-core \ - && pip install vcstool \ + && pip install --no-cache-dir vcstool \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc From da80780fdb491e99f09d24d0a7fab6321d373065 Mon Sep 17 00:00:00 2001 From: badai nguyen <94814556+badai-nguyen@users.noreply.github.com> Date: Wed, 24 Apr 2024 08:25:47 +0900 Subject: [PATCH 148/380] refactor: update ML model param files download (#4533) * fix: add yaml download Signed-off-by: badai-nguyen * fix: missing sha Signed-off-by: badai-nguyen * fix: sha5 Signed-off-by: badai-nguyen * style(pre-commit): autofix --------- Signed-off-by: badai-nguyen Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/roles/artifacts/tasks/main.yaml | 51 ++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index fde86abbe0d..364a1a400bc 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -40,7 +40,20 @@ dest: "{{ data_dir }}/image_projection_based_fusion/pts_backbone_neck_head_pointpainting.onnx" mode: "644" checksum: sha256:7fe62fcebe0e0f62a000d06aa94d779feb444d933671a4a3189fe01be8c19a00 - +- name: Download image_projection_based_fusion/detection_class_remapper.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/detection_class_remapper.param.yaml + dest: "{{ data_dir }}/image_projection_based_fusion/detection_class_remapper.param.yaml" + mode: "644" + checksum: sha256:c711f8875ece9b527dfe31ffc75f8c0de2e77945ef67860a959a4e04c36772d5 +- name: Download image_projection_based_fusion/pointpainting_ml_package.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pointpainting_ml_package.param.yaml + dest: "{{ data_dir }}/image_projection_based_fusion/pointpainting_ml_package.param.yaml" + mode: "644" + checksum: sha256:2a72f75ca4b49c6b88c0bd2f34c634173420d76a6925e6298d9ca5e012df3f32 # lidar_apollo_instance_segmentation - name: Create lidar_apollo_instance_segmentation directory inside {{ data_dir }} ansible.builtin.file: @@ -110,7 +123,41 @@ dest: "{{ data_dir }}/lidar_centerpoint/pts_backbone_neck_head_centerpoint_tiny.onnx" mode: "644" checksum: sha256:9bb0b634f3664bd098ce7d6a3d8a9fb7cc8d9b8252b27f302c71e43316bab551 - +- name: Download lidar_centerpoint/centerpoint_ml_package.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/centerpoint_ml_package.param.yaml + dest: "{{ data_dir }}/lidar_centerpoint/centerpoint_ml_package.param.yaml" + mode: "644" + checksum: sha256:54b88fa0c1bbd6d611d1ec55e483d05bed7a4c0e15877c05eb7d9cf240246ab8 +- name: Download lidar_centerpoint/centerpoint_ml_package.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/centerpoint_tiny_ml_package.param.yaml + dest: "{{ data_dir }}/lidar_centerpoint/centerpoint_tiny_ml_package.param.yaml" + mode: "644" + checksum: sha256:6a40d2282b9c36cc547add7d016f315329c875b6f571dd5c612c6892fbaaabb5 +- name: Download lidar_centerpoint/centerpoint_sigma_ml_package.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/centerpoint_sigma_ml_package.param.yaml + dest: "{{ data_dir }}/lidar_centerpoint/centerpoint_sigma_ml_package.param.yaml" + mode: "644" + checksum: sha256:9946b342a6f457b19fdfe9f02041dbd3cf0b9cefe052663e04e241ec2b6e9c76 +- name: Download lidar_centerpoint/detection_class_remapper.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/detection_class_remapper.param.yaml + dest: "{{ data_dir }}/lidar_centerpoint/detection_class_remapper.param.yaml" + mode: "644" + checksum: sha256:c711f8875ece9b527dfe31ffc75f8c0de2e77945ef67860a959a4e04c36772d5 +- name: Download lidar_centerpoint/deploy_metadata.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/deploy_metadata.yaml + dest: "{{ data_dir }}/lidar_centerpoint/deploy_metadata.yaml" + mode: "644" + checksum: sha256:152536f053c3750b60d349800e1b983b418029d6dadf087614a00c661942a178 # tensorrt_yolox - name: Create tensorrt_yolox directory inside {{ data_dir }} ansible.builtin.file: From 0cea511fd70f33567a85f16781e0f0cbd6dedc8d Mon Sep 17 00:00:00 2001 From: Yuxuan Liu <619684051@qq.com> Date: Wed, 24 Apr 2024 17:24:33 +0900 Subject: [PATCH 149/380] feat(pull_request_templates): improve the pull request template to enhance requirements on documenting interface changes (#4654) * improve template Signed-off-by: Yuxuan Liu * fix typos Signed-off-by: Yuxuan Liu --------- Signed-off-by: Yuxuan Liu Co-authored-by: Yuxuan Liu --- .github/PULL_REQUEST_TEMPLATE/small-change.md | 4 ++++ .github/PULL_REQUEST_TEMPLATE/standard-change.md | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE/small-change.md b/.github/PULL_REQUEST_TEMPLATE/small-change.md index 2ff933c43a3..e15fdd992d1 100644 --- a/.github/PULL_REQUEST_TEMPLATE/small-change.md +++ b/.github/PULL_REQUEST_TEMPLATE/small-change.md @@ -15,6 +15,10 @@ Not applicable. Not applicable. +## Interface changes + + + ## Pre-review checklist for the PR author The PR author **must** check the checkboxes below when creating the PR. diff --git a/.github/PULL_REQUEST_TEMPLATE/standard-change.md b/.github/PULL_REQUEST_TEMPLATE/standard-change.md index 7aedefd0a7b..391af629751 100644 --- a/.github/PULL_REQUEST_TEMPLATE/standard-change.md +++ b/.github/PULL_REQUEST_TEMPLATE/standard-change.md @@ -18,6 +18,19 @@ +### ROS Topic Changes + + + + + + +### ROS Parameter Changes + + + + + ## Effects on system behavior From 85ce9f7e36a2667062230bf4f0955de5c51d7e76 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:45:12 +0900 Subject: [PATCH 150/380] chore: add CODEWONERS file (#4652) Signed-off-by: Ryohsuke Mitsudome --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000000..59cb84743d3 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* ryohsuke.mitsudome@tier4.jp mfc@leodrive.ai From 1a9a8002cf5bc0408385df0950bf68fe34427e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Wed, 24 Apr 2024 23:55:19 +0300 Subject: [PATCH 151/380] feat: add awsim_labs support (#4660) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index 28dc0864335..9ac8154c683 100644 --- a/autoware.repos +++ b/autoware.repos @@ -104,6 +104,10 @@ repositories: type: git url: https://github.com/RobotecAI/awsim_sensor_kit_launch.git version: main + sensor_kit/awsim_labs_sensor_kit_launch: + type: git + url: https://github.com/autowarefoundation/awsim_labs_sensor_kit_launch.git + version: main # vehicle vehicle/sample_vehicle_launch: type: git From a79ef50498a6a301446f66e55e834fbc58e78362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Thu, 2 May 2024 12:11:32 +0300 Subject: [PATCH 152/380] docs: add ansible installation, update manual artifact download process (#4675) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- ansible/README.md | 30 +++++ ansible/playbooks/download_artifacts.yaml | 4 + ansible/roles/artifacts/README.md | 146 +++------------------- ansible/roles/artifacts/SHA256SUMS | 25 ---- 4 files changed, 51 insertions(+), 154 deletions(-) create mode 100644 ansible/playbooks/download_artifacts.yaml delete mode 100644 ansible/roles/artifacts/SHA256SUMS diff --git a/ansible/README.md b/ansible/README.md index 3a252f1a23a..6fd630f75fa 100644 --- a/ansible/README.md +++ b/ansible/README.md @@ -1 +1,31 @@ # Ansible Collection - autoware.dev_env + +This collection contains the playbooks to set up the development environment for Autoware. + +## Set up a development environment + +### Ansible installation + +```bash +# Remove apt installed ansible (In Ubuntu 22.04, ansible the version is old) +sudo apt-get purge ansible + +# Install pipx +sudo apt-get -y update +sudo apt-get -y install pipx + +# Add pipx to the system PATH +python3 -m pipx ensurepath + +# Install ansible +pipx install --include-deps --force "ansible==6.*" +``` + +### Install ansible collections + +This step should be repeated when a new playbook is added. + +```bash +cd ~/autoware # The root directory of the cloned repository +ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" +``` diff --git a/ansible/playbooks/download_artifacts.yaml b/ansible/playbooks/download_artifacts.yaml new file mode 100644 index 00000000000..17da12494d5 --- /dev/null +++ b/ansible/playbooks/download_artifacts.yaml @@ -0,0 +1,4 @@ +- name: Download Autoware artifacts + hosts: localhost + roles: + - autoware.dev_env.artifacts diff --git a/ansible/roles/artifacts/README.md b/ansible/roles/artifacts/README.md index 7b8d6f67d77..7d848a98eca 100644 --- a/ansible/roles/artifacts/README.md +++ b/ansible/roles/artifacts/README.md @@ -1,144 +1,32 @@ # Autoware artifacts -The Autoware perception stack uses models for inference. These models are automatically downloaded if using `ansible`, but they can also be downloaded manually. +The Autoware perception stack uses models for inference. These models are automatically downloaded as part of the `setup-dev-env.sh` script. -## Download instructions - -The artifacts files are stored in a common location, hosted by Web.Auto - -Any tool that can download files from the web (e.g. `wget` or `curl`) is the only requirement for downloading these files: - -```console -# yabloc_pose_initializer - -$ mkdir -p ~/autoware_data/yabloc_pose_initializer/ -$ wget -P ~/autoware_data/yabloc_pose_initializer/ \ - https://s3.ap-northeast-2.wasabisys.com/pinto-model-zoo/136_road-segmentation-adas-0001/resources.tar.gz - - -# image_projection_based_fusion - -$ mkdir -p ~/autoware_data/image_projection_based_fusion/ -$ wget -P ~/autoware_data/image_projection_based_fusion/ \ - https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_voxel_encoder_pointpainting.onnx \ - https://awf.ml.dev.web.auto/perception/models/pointpainting/v4/pts_backbone_neck_head_pointpainting.onnx - - -# lidar_apollo_instance_segmentation - -$ mkdir -p ~/autoware_data/lidar_apollo_instance_segmentation/ -$ wget -P ~/autoware_data/lidar_apollo_instance_segmentation/ \ - https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vlp-16.onnx \ - https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/hdl-64.onnx \ - https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/vls-128.onnx - - -# lidar_centerpoint - -$ mkdir -p ~/autoware_data/lidar_centerpoint/ -$ wget -P ~/autoware_data/lidar_centerpoint/ \ - https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_voxel_encoder_centerpoint.onnx \ - https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint.onnx \ - https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_voxel_encoder_centerpoint_tiny.onnx \ - https://awf.ml.dev.web.auto/perception/models/centerpoint/v2/pts_backbone_neck_head_centerpoint_tiny.onnx - - -# tensorrt_yolox - -$ mkdir -p ~/autoware_data/tensorrt_yolox/ -$ wget -P ~/autoware_data/tensorrt_yolox/ \ - https://awf.ml.dev.web.auto/perception/models/yolox-tiny.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.onnx \ - https://awf.ml.dev.web.auto/perception/models/yolox-sPlus-opt.EntropyV2-calibration.table \ - https://awf.ml.dev.web.auto/perception/models/object_detection_yolox_s/v1/yolox-sPlus-T4-960x960-pseudo-finetune.onnx \ - https://awf.ml.dev.web.auto/perception/models/object_detection_yolox_s/v1/yolox-sPlus-T4-960x960-pseudo-finetune.EntropyV2-calibration.table \ - https://awf.ml.dev.web.auto/perception/models/label.txt - - -# traffic_light_classifier - -$ mkdir -p ~/autoware_data/traffic_light_classifier/ -$ wget -P ~/autoware_data/traffic_light_classifier/ \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_1.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_4.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_mobilenetv2_batch_6.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_1.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_4.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/traffic_light_classifier_efficientNet_b1_batch_6.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v2/lamp_labels.txt \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_1.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_4.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/ped_traffic_light_classifier_mobilenetv2_batch_6.onnx \ - https://awf.ml.dev.web.auto/perception/models/traffic_light_classifier/v3/lamp_labels_ped.txt +The models are hosted by Web.Auto. +Default `data_dir` location is `~/autoware_data`. +## Download instructions -# traffic_light_fine_detector - -$ mkdir -p ~/autoware_data/traffic_light_fine_detector/ -$ wget -P ~/autoware_data/traffic_light_fine_detector/ \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_1.onnx \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_4.onnx \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_car_ped_yolox_s_batch_6.onnx \ - https://awf.ml.dev.web.auto/perception/models/tlr_yolox_s/v3/tlr_labels.txt - - -# tvm_utility - -$ mkdir -p ~/autoware_data/tvm_utility/models/yolo_v2_tiny -$ wget -P ~/autoware_data/tvm_utility/ \ - https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz - - -# lidar_centerpoint_tvm - -$ mkdir -p ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_encoder -$ mkdir -p ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_backbone -$ wget -P ~/autoware_data/lidar_centerpoint_tvm/ \ - https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz \ - https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz - +### Requirements -# lidar_apollo_segmentation_tvm +Install ansible following the instructions in the [ansible installation guide](../../README.md#ansible-installation). -$ mkdir -p ~/autoware_data/lidar_apollo_segmentation_tvm/models/baidu_cnn -$ wget -P ~/autoware_data/lidar_apollo_segmentation_tvm/ \ - https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz -``` +### Download artifacts -After downloading you can check integrity of the files with `sha256sum`: +#### Install ansible collections -```console -# -$ cd ~/autoware_data/ -$ wget -q -O - https://raw.githubusercontent.com/autowarefoundation/autoware/main/ansible/roles/artifacts/SHA256SUMS | sha256sum -c +```bash +cd ~/autoware # The root directory of the cloned repository +ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" ``` -Extracting files: +This step should be repeated when a new playbook is added. -```console -# yabloc_pose_initializer +#### Run the playbook -$ tar -xf ~/autoware_data/yabloc_pose_initializer/resources.tar.gz \ - -C ~/autoware_data/yabloc_pose_initializer/ - - -# tvm_utility - -$ tar -xf ~/autoware_data/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz \ - -C ~/autoware_data/tvm_utility/models/yolo_v2_tiny/ - - -# lidar_centerpoint_tvm - -$ tar -xf ~/autoware_data/lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz \ - -C ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_encoder -$ tar -xf ~/autoware_data/lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz \ - -C ~/autoware_data/lidar_centerpoint_tvm/models/centerpoint_backbone - - -# lidar_apollo_segmentation_tvm - -$ tar -xf ~/autoware_data/lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz \ - -C ~/autoware_data/lidar_apollo_segmentation_tvm/models/baidu_cnn +```bash +ansible-playbook autoware.dev_env.download_artifacts -e "data_dir=$HOME/autoware_data" --ask-become-pass ``` + +This will download and extract the artifacts to the specified directory and validate the checksums. diff --git a/ansible/roles/artifacts/SHA256SUMS b/ansible/roles/artifacts/SHA256SUMS deleted file mode 100644 index 0abb9037e64..00000000000 --- a/ansible/roles/artifacts/SHA256SUMS +++ /dev/null @@ -1,25 +0,0 @@ -7fe62fcebe0e0f62a000d06aa94d779feb444d933671a4a3189fe01be8c19a00 ./image_projection_based_fusion/pts_backbone_neck_head_pointpainting.onnx -3ca452ea5ca9467bf782955f75704ba8466841e275e8b8acd991b9911d53249e ./image_projection_based_fusion/pts_voxel_encoder_pointpainting.onnx -86348d8c4bced750f54288b01cc471c0d4f1ec9c693466169ef19413731e6ecc ./lidar_apollo_instance_segmentation/hdl-64.onnx -eec521ebad7553d0ea2c90472a293aecb7499ab592632f0e100481c8196eb421 ./lidar_apollo_instance_segmentation/vlp-16.onnx -95ef950bb694bd6de91b7e47f5d191d557e92a7f5e2a6bdf655a8b5eed4075cc ./lidar_apollo_instance_segmentation/vls-128.onnx -4293e6196ec937d2cd5ec658e5ce70933647d2d38633a1805febb36cafd684e3 ./lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz -3fe7e128955646740c41a25be0c8f141d5a94594fe79d7405fe2a859e391542e ./lidar_centerpoint/pts_backbone_neck_head_centerpoint.onnx -9bb0b634f3664bd098ce7d6a3d8a9fb7cc8d9b8252b27f302c71e43316bab551 ./lidar_centerpoint/pts_backbone_neck_head_centerpoint_tiny.onnx -dc1a876580d86ee7a341d543f8ade2ede7f43bd032dc5b44155b1f0175405764 ./lidar_centerpoint/pts_voxel_encoder_centerpoint.onnx -2c53465715c1fd2e9dc5727ef3fca74f4cdf0538f74286b0946e219d0ca5693b ./lidar_centerpoint/pts_voxel_encoder_centerpoint_tiny.onnx -3840b6b3590984e8115d66b12061aea3a2cfaed70b4e8d59457f04b0d6f6a1fc ./lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz -41e19de43f30549c325968aee06b4ad0d9701220be819e79d37efdfa86b918d0 ./lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz -1a5a49eeec5593963eab8d70f48b8a01bfb07e753e9688eb1510ad26e803579d ./traffic_light_classifier/lamp_labels.txt -55ebb0d117a5e8943f8d1c6769f1d856b533079d4d871d8e923255cc992ad48a ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_1.onnx -684e29843e3128eadb774018730644b3ab9b0a06dc4cdaeed579c2f3fa5d5265 ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_4.onnx -44d94540fa8b89dfb39cd9a8523cf010ddfb10ea2f1f9b53bf3618ce7f4912ad ./traffic_light_classifier/traffic_light_classifier_efficientNet_b1_batch_6.onnx -455b71b3b20d3a96aa0e49f32714ba50421f668a2f9b9907c30b1346ac8a3703 ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_1.onnx -41bb79a23a4ac57956adb8e9cb3904420db1b0cd032e97b670cc4f8b174ae3fe ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_4.onnx -e4792eed6a46fdbd02be2f3a4f1ce91f36fa77698493caf3102e445178c0f058 ./traffic_light_classifier/traffic_light_classifier_mobilenetv2_batch_6.onnx -a2a91f5fe9c2e68e3e3647a272bb9bb25cd07631a1990a3fb15efddce7691131 ./traffic_light_fine_detector/tlr_labels.txt -1ad633066a1195006f4709f8fa07800dd65a74a814b3efb4c99bcc5a1a7962f6 ./traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_1.onnx -cf93eb1e1a97aefc6edd0c0c4d77c7f5fc2aa1e81e3c5c9cd49d976173d03a04 ./traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_4.onnx -0b05a89fb30f1f92c6ec687d48e8ceda4da6f81cbd82d8a102d168753a6cedb6 ./traffic_light_fine_detector/tlr_car_ped_yolox_s_batch_6.onnx -66b3ca668e577393b657fbe1ed626538d89ca3adccd5862de6c7fa190238dbca ./tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz -1f660e15f95074bade32b1f80dbf618e9cee1f0b9f76d3f4671cb9be7f56eb3a ./yabloc_pose_initializer/resources.tar.gz From 470a8b577563ab7d28ccc322800d8591086b4a1b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 16 May 2024 06:09:55 +0900 Subject: [PATCH 153/380] chore(docker): separate `rosdep install` and `colcon build` RUN commands (#4719) --- docker/autoware-openadk/Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index c7ce5cca809..3602fe690cf 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -66,7 +66,10 @@ RUN --mount=type=ssh \ && apt-get update \ && rosdep update \ && DEBIAN_FRONTEND=noninteractive rosdep install -y --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ - && source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + +# Build Autoware +RUN source /opt/ros/"$ROS_DISTRO"/setup.bash \ && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --cmake-args \ " -Wno-dev" \ " --no-warn-unused-cli" \ @@ -74,7 +77,6 @@ RUN --mount=type=ssh \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ && find /autoware/install -type d -exec chmod 777 {} \; \ && chmod -R 777 /var/tmp/ccache \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && rm -rf /autoware/build /autoware/src CMD ["/bin/bash"] From 837b486eeb50da97fe16b80fc91b04e714e63eae Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 17 May 2024 17:57:54 +0900 Subject: [PATCH 154/380] refactor(ci): reuse `load-env.yaml` to load env (#4734) * reuse load-env.yaml to load env * update base_image Signed-off-by: Yutaka Kondo * fix base_image Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/workflows/build-main-self-hosted.yaml | 17 +++++++---------- .github/workflows/build-main.yaml | 17 +++++++---------- .../docker-build-and-push-main-self-hosted.yaml | 17 +++++++---------- .../workflows/docker-build-and-push-main.yaml | 17 +++++++---------- .github/workflows/load-env.yaml | 8 ++++---- 5 files changed, 32 insertions(+), 44 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index e4cc44884e3..c0bba91845b 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -13,7 +13,11 @@ on: default: tarball jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + build-main-self-hosted: + needs: load-env runs-on: [self-hosted, linux, ARM64] strategy: fail-fast: false @@ -43,25 +47,18 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: bake-target: autoware-openadk build-args: | *.platform=linux/arm64 - *.args.ROS_DISTRO=${{ env.rosdistro }} - *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 - tag-prefix: ${{ env.rosdistro }} + tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false - name: Show disk space diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 7b21980574a..4b276a7ad32 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -13,7 +13,11 @@ on: default: tarball jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + build-main: + needs: load-env runs-on: ubuntu-latest strategy: fail-fast: false @@ -38,25 +42,18 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: bake-target: autoware-openadk build-args: | *.platform=linux/amd64 - *.args.ROS_DISTRO=${{ env.rosdistro }} - *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 - tag-prefix: ${{ env.rosdistro }} + tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false - name: Show disk space diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 315e5b1ed07..69a553a6cb0 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -25,7 +25,11 @@ on: default: tarball jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + docker-build-and-push-main-self-hosted: + needs: load-env runs-on: [self-hosted, linux, ARM64] strategy: fail-fast: false @@ -55,25 +59,18 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - name: Build 'autoware-openadk' uses: ./.github/actions/docker-build-and-push with: bake-target: autoware-openadk build-args: | *.platform=linux/arm64 - *.args.ROS_DISTRO=${{ env.rosdistro }} - *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 - tag-prefix: ${{ env.rosdistro }} + tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true - name: Show disk space diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index d5fe698bccf..bea0df4a950 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -25,7 +25,11 @@ on: default: tarball jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + docker-build-and-push-main: + needs: load-env runs-on: ubuntu-latest strategy: fail-fast: false @@ -50,25 +54,18 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Load env - run: | - cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - if [ "$(uname -m)" = "aarch64" ]; then - cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV - fi - - name: Build 'autoware-openadk' uses: ./.github/actions/docker-build-and-push with: bake-target: autoware-openadk build-args: | *.platform=linux/amd64 - *.args.ROS_DISTRO=${{ env.rosdistro }} - *.args.BASE_IMAGE=${{ env[format('{0}', matrix.base_image_env)] }} + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 - tag-prefix: ${{ env.rosdistro }} + tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true - name: Show disk space diff --git a/.github/workflows/load-env.yaml b/.github/workflows/load-env.yaml index 508a30bf74a..e65389426b1 100644 --- a/.github/workflows/load-env.yaml +++ b/.github/workflows/load-env.yaml @@ -3,8 +3,8 @@ name: load-env on: workflow_call: outputs: - base-image: - value: ${{ jobs.load-env.outputs.base-image }} + base_image: + value: ${{ jobs.load-env.outputs.base_image }} rosdistro: value: ${{ jobs.load-env.outputs.rosdistro }} @@ -12,7 +12,7 @@ jobs: load-env: runs-on: ubuntu-latest outputs: - base-image: ${{ steps.set-env.outputs.base-image }} + base_image: ${{ steps.set-env.outputs.base_image }} rosdistro: ${{ steps.set-env.outputs.rosdistro }} steps: - name: Check out repository @@ -28,5 +28,5 @@ jobs: - name: Set env id: set-env run: | - echo "base-image=${{ env.base_image }}" >> $GITHUB_OUTPUT + echo "base_image=${{ env.base_image }}" >> $GITHUB_OUTPUT echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT From 5ee2907612fdc9c969386b2bcdb892e8cee39432 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 20 May 2024 17:45:45 +0900 Subject: [PATCH 155/380] refactor(docker): introduce `src-imported` stage (#4712) * introduce src-imported stage Signed-off-by: Yutaka Kondo * empty Signed-off-by: Yutaka Kondo * generate install package lists * append || true Signed-off-by: Yutaka Kondo * cat packages Signed-off-by: Yutaka Kondo * chore(docker): separate `rosdep install` and `colcon build` RUN commands (#4719) * wip Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * Update Dockerfile * Update Dockerfile * install pacmod * rename * Revert "install pacmod" This reverts commit ebff10f4747489da490fa54497c2722fdec91def. * install pacmod3 * register pamod3 repos * ignore hadolint * revert * run set-dev-env.sh * pip install * copy * rosdep update --------- Signed-off-by: Yutaka Kondo --- ansible/playbooks/rosdep.yaml | 10 +++++ docker/autoware-openadk/Dockerfile | 62 ++++++++++++++++++++++-------- 2 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 ansible/playbooks/rosdep.yaml diff --git a/ansible/playbooks/rosdep.yaml b/ansible/playbooks/rosdep.yaml new file mode 100644 index 00000000000..c7c23a245ab --- /dev/null +++ b/ansible/playbooks/rosdep.yaml @@ -0,0 +1,10 @@ +- name: Register rosdep package repositories + hosts: localhost + connection: local + pre_tasks: + - name: Verify OS + ansible.builtin.fail: + msg: Only Ubuntu 22.04 is supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/. + when: ansible_distribution != 'Ubuntu' or ansible_distribution_version != '22.04' + roles: + - role: autoware.dev_env.pacmod diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index 3602fe690cf..23d260f0317 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -32,13 +32,49 @@ WORKDIR /autoware RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module base --runtime openadk \ && pip uninstall -y ansible ansible-core \ - && pip install --no-cache-dir vcstool \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc # Create entrypoint CMD ["/bin/bash"] +FROM $BASE_IMAGE as src-imported +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 + +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y rosdep \ + && pip uninstall -y ansible ansible-core \ + && pip install --no-cache-dir vcstool \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + +WORKDIR /autoware +COPY autoware.repos /autoware/ +RUN --mount=type=ssh \ + mkdir src \ + && vcs import src < autoware.repos + +# Generate install package lists +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 +RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-exec-depend-packages.txt \ + && cat /rosdep-exec-depend-packages.txt + FROM base as prebuilt SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -56,16 +92,13 @@ RUN --mount=type=ssh \ && find / -name 'libcu*.a' -delete \ && find / -name 'libnv*.a' -delete -# Copy repository files -COPY autoware.repos /autoware/ - # Install rosdep dependencies +COPY --from=src-imported /autoware/src /autoware/src +COPY --from=src-imported /rosdep-all-depend-packages.txt /tmp/rosdep-all-depend-packages.txt +# hadolint ignore=SC2002 RUN --mount=type=ssh \ - mkdir src \ - && vcs import src < autoware.repos \ - && apt-get update \ - && rosdep update \ - && DEBIAN_FRONTEND=noninteractive rosdep install -y --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ + apt-get update \ + && cat /tmp/rosdep-all-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 @@ -103,20 +136,19 @@ ARG LIB_DIR ARG SETUP_ARGS # Set up runtime environment and artifacts -COPY autoware.repos /autoware/ +COPY --from=src-imported /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt +# hadolint ignore=SC2002 RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadk \ && pip uninstall -y ansible ansible-core \ - && mkdir src \ - && vcs import src < autoware.repos \ - && rosdep update \ - && DEBIAN_FRONTEND=noninteractive rosdep install -y --dependency-types=exec --ignore-src --from-paths src --rosdistro "$ROS_DISTRO" \ + && apt-get update \ + && cat /tmp/rosdep-exec-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 \ && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/src /autoware/ansible /autoware/autoware.repos \ + && rm -rf /autoware/ansible \ /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* From fbf7220061d48eda0a3d77b76e6327c650ac976f Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 22 May 2024 21:16:45 +0900 Subject: [PATCH 156/380] feat(docker): install minimum packages in `base` stage (#4751) * install ssh only and copy only once Signed-off-by: Yutaka Kondo * install gosu Signed-off-by: Yutaka Kondo * fix dir Signed-off-by: Yutaka Kondo * revert ansible Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/autoware-openadk/Dockerfile | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index 23d260f0317..07dc6046494 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -5,22 +5,12 @@ FROM $BASE_IMAGE as base SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO -# Install apt packages +# Install apt packages and add GitHub to known hosts for private repositories RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ - git \ - ssh \ - wget \ - cmake \ - curl \ gosu \ - gnupg \ - vim \ - unzip \ - lsb-release \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache - -# Add GitHub to known hosts for private repositories -RUN mkdir -p ~/.ssh \ + ssh \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && mkdir -p ~/.ssh \ && ssh-keyscan github.com >> ~/.ssh/known_hosts # Copy files From 4998cac7ae54daf1d29fa3968e02521ba438bcff Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Wed, 22 May 2024 22:47:09 +0900 Subject: [PATCH 157/380] chore: add discussion templates for general category (#4764) Signed-off-by: Ryohsuke Mitsudome --- .github/DISCUSSION_TEMPLATE/general.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/DISCUSSION_TEMPLATE/general.yaml diff --git a/.github/DISCUSSION_TEMPLATE/general.yaml b/.github/DISCUSSION_TEMPLATE/general.yaml new file mode 100644 index 00000000000..65c1f894927 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general.yaml @@ -0,0 +1,13 @@ +body: + - type: checkboxes + attributes: + label: Code of Conduct + options: + - label: I have read [CODE OF CONDUCT](https://github.com/autowarefoundation/autoware/blob/main/CODE_OF_CONDUCT.md) and [Support Guidelines](https://autowarefoundation.github.io/autoware-documentation/main/support/support-guidelines/#github-discussions) before creating this Discussion post. + required: true + - type: textarea + attributes: + label: Contents + description: Write your contents here + validations: + required: true From 14bc9315ec8ca924e2a00b9c84ed1e5901906bf2 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 23 May 2024 13:27:50 +0900 Subject: [PATCH 158/380] feat(ci,docker): change `vcs import` to `COPY src` (#4738) * introduce src-imported stage Signed-off-by: Yutaka Kondo * empty Signed-off-by: Yutaka Kondo * generate install package lists * append || true Signed-off-by: Yutaka Kondo * cat packages Signed-off-by: Yutaka Kondo * chore(docker): separate `rosdep install` and `colcon build` RUN commands (#4719) * wip Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * Update Dockerfile * Update Dockerfile * install pacmod * rename * Revert "install pacmod" This reverts commit ebff10f4747489da490fa54497c2722fdec91def. * install pacmod3 * register pamod3 repos * ignore hadolint * revert * run set-dev-env.sh * pip install * copy * rosdep update * vcs import outside dockerfile Signed-off-by: Yutaka Kondo * refine order and remove /autoware/src at last * fix hadolint * remove tar files Signed-off-by: Yutaka Kondo * shell: bash Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 18 ++++++++++++++++++ ...docker-build-and-push-main-self-hosted.yaml | 16 ++++++++++++++++ .../workflows/docker-build-and-push-main.yaml | 16 ++++++++++++++++ docker/autoware-openadk/Dockerfile | 10 +++------- 4 files changed, 53 insertions(+), 7 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 13526e9083e..53a95eb8fe7 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -151,6 +151,12 @@ runs: overwrite: true if-no-files-found: error + - name: Remove tar file - prebuilt + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} + run: | + rm /tmp/prebuilt.tar + shell: bash + - name: Upload Artifact - devel if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} id: artifact-upload-step-devel @@ -163,6 +169,12 @@ runs: overwrite: true if-no-files-found: error + - name: Remove tar file - devel + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} + run: | + rm /tmp/devel.tar + shell: bash + - name: Upload Artifact - runtime if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} id: artifact-upload-step-runtime @@ -175,6 +187,12 @@ runs: overwrite: true if-no-files-found: error + - name: Remove tar file - runtime + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} + run: | + rm /tmp/runtime.tar + shell: bash + - name: Output artifact URLs id: output-artifact-urls run: | diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 69a553a6cb0..98b194f5d76 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -56,9 +56,25 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Install vcstool + run: | + sudo apt-get -y update + sudo apt-get -y install python3-pip + pip install --no-cache-dir vcstool + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Run vcs import + run: | + mkdir src + vcs import src < autoware.repos + - name: Build 'autoware-openadk' uses: ./.github/actions/docker-build-and-push with: diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index bea0df4a950..729f7e9297a 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -51,9 +51,25 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Install vcstool + run: | + sudo apt-get -y update + sudo apt-get -y install python3-pip + pip install --no-cache-dir vcstool + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Run vcs import + run: | + mkdir src + vcs import src < autoware.repos + - name: Build 'autoware-openadk' uses: ./.github/actions/docker-build-and-push with: diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index 07dc6046494..c7362e17069 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -40,14 +40,10 @@ WORKDIR /autoware RUN --mount=type=ssh \ ./setup-dev-env.sh -y rosdep \ && pip uninstall -y ansible ansible-core \ - && pip install --no-cache-dir vcstool \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache -WORKDIR /autoware -COPY autoware.repos /autoware/ -RUN --mount=type=ssh \ - mkdir src \ - && vcs import src < autoware.repos +# Copy repository files +COPY src /autoware/src # Generate install package lists RUN rosdep update && rosdep keys --ignore-src --from-paths src \ @@ -83,7 +79,6 @@ RUN --mount=type=ssh \ && find / -name 'libnv*.a' -delete # Install rosdep dependencies -COPY --from=src-imported /autoware/src /autoware/src COPY --from=src-imported /rosdep-all-depend-packages.txt /tmp/rosdep-all-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ @@ -92,6 +87,7 @@ RUN --mount=type=ssh \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache # Build Autoware +COPY --from=src-imported /autoware/src /autoware/src RUN source /opt/ros/"$ROS_DISTRO"/setup.bash \ && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --cmake-args \ " -Wno-dev" \ From e8a258fc4f455a6c57b326c3271f8e0e81fda47d Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Sat, 25 May 2024 07:20:43 +0900 Subject: [PATCH 159/380] feat(docker,ansible): download artifacts at runtime (#4771) --- ansible/playbooks/docker.yaml | 4 ++++ docker/autoware-openadk/Dockerfile | 4 ++-- docker/run.sh | 14 ++++++++++++-- setup-dev-env.sh | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ansible/playbooks/docker.yaml b/ansible/playbooks/docker.yaml index 5cc84043e27..443d355709a 100644 --- a/ansible/playbooks/docker.yaml +++ b/ansible/playbooks/docker.yaml @@ -24,3 +24,7 @@ when: prompt_install_nvidia == 'y' - role: autoware.dev_env.docker_engine - role: autoware.dev_env.nvidia_container_toolkit + + # ONNX files and other artifacts + - role: autoware.dev_env.artifacts + when: prompt_download_artifacts == 'y' diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index c7362e17069..4d0cd0d31b0 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -105,7 +105,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module dev-tools --download-artifacts openadk \ + ./setup-dev-env.sh -y --module dev-tools openadk \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache @@ -125,7 +125,7 @@ ARG SETUP_ARGS COPY --from=src-imported /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadk \ + ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers --runtime openadk \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ diff --git a/docker/run.sh b/docker/run.sh index 3ea92854b3c..ebcd32ff29e 100755 --- a/docker/run.sh +++ b/docker/run.sh @@ -20,11 +20,12 @@ fi option_no_nvidia=false option_devel=false option_headless=false +DATA_PATH="${HOME}/autoware_data" MAP_PATH="" WORKSPACE_PATH="" USER_ID="" WORKSPACE="" -DEFAULT_LAUNCH_CMD="ros2 launch autoware_launch autoware.launch.xml map_path:=/autoware_map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit" +DEFAULT_LAUNCH_CMD="ros2 launch autoware_launch autoware.launch.xml data_path:=/autoware_data map_path:=/autoware_map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit" # Function to print help message print_help() { @@ -35,6 +36,7 @@ print_help() { echo -e "${RED}Usage:${NC} run.sh [OPTIONS] [LAUNCH_CMD](optional)" echo -e "Options:" echo -e " ${GREEN}--help/-h${NC} Display this help message" + echo -e " ${GREEN}--data-path${NC} Specify to mount data files into /autoware_data" echo -e " ${GREEN}--map-path${NC} Specify to mount map files into /autoware_map (mandatory if no custom launch command is provided)" echo -e " ${GREEN}--no-nvidia${NC} Disable NVIDIA GPU support" echo -e " ${GREEN}--devel${NC} Use the latest development version of Autoware" @@ -64,6 +66,10 @@ parse_arguments() { WORKSPACE_PATH="$2" shift ;; + --data-path) + DATA_PATH="$2" + shift + ;; --map-path) MAP_PATH="$2" shift @@ -95,6 +101,9 @@ set_variables() { exit 1 fi + # Mount data path + DATA="-v ${DATA_PATH}:/autoware_data:ro" + # Mount map path if provided MAP="-v ${MAP_PATH}:/autoware_map:ro" @@ -150,6 +159,7 @@ main() { echo -e "${GREEN}\n-----------------------LAUNCHING CONTAINER-----------------------" echo -e "${GREEN}IMAGE:${NC} ${IMAGE}" + echo -e "${GREEN}DATA PATH(mounted):${NC} ${DATA_PATH}:/autoware_data" echo -e "${GREEN}MAP PATH(mounted):${NC} ${MAP_PATH}:/autoware_map" echo -e "${GREEN}WORKSPACE(mounted):${NC} ${WORKSPACE_PATH}:/workspace" echo -e "${GREEN}LAUNCH CMD:${NC} ${LAUNCH_CMD}" @@ -159,7 +169,7 @@ main() { set -x docker run -it --rm --net=host ${GPU_FLAG} ${USER_ID} ${MOUNT_X} \ -e XAUTHORITY=${XAUTHORITY} -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR -e NVIDIA_DRIVER_CAPABILITIES=all -v /etc/localtime:/etc/localtime:ro \ - ${WORKSPACE} ${MAP} ${IMAGE} \ + ${WORKSPACE} ${DATA} ${MAP} ${IMAGE} \ ${LAUNCH_CMD} } diff --git a/setup-dev-env.sh b/setup-dev-env.sh index e5cb6953f61..48afecc4444 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -133,7 +133,7 @@ if [ "$option_yes" = "true" ] || [ "$option_download_artifacts" = "true" ]; then fi # Check downloading artifacts -if [ "$target_playbook" = "autoware.dev_env.openadk" ]; then +if [ "$target_playbook" = "autoware.dev_env.docker" ] || [ "$target_playbook" = "autoware.dev_env.openadk" ]; then if [ "$option_download_artifacts" = "true" ]; then echo -e "\e[36mArtifacts will be downloaded to $option_data_dir\e[m" ansible_args+=("--extra-vars" "prompt_download_artifacts=y") From ab8bbf56ecdacbabae89f56f4bc8b6ea1d7bf0df Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Sat, 25 May 2024 09:29:28 +0900 Subject: [PATCH 160/380] feat(ci): enable Docker build cache to 5 times faster container build (#4730) * introduce src-imported stage Signed-off-by: Yutaka Kondo * empty Signed-off-by: Yutaka Kondo * generate install package lists * append || true Signed-off-by: Yutaka Kondo * cat packages Signed-off-by: Yutaka Kondo * chore(docker): separate `rosdep install` and `colcon build` RUN commands (#4719) * wip Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * Update Dockerfile * Update Dockerfile * install pacmod * rename * Revert "install pacmod" This reverts commit ebff10f4747489da490fa54497c2722fdec91def. * install pacmod3 * register pamod3 repos * ignore hadolint * revert * run set-dev-env.sh * pip install * copy * rosdep update * vcs import outside dockerfile Signed-off-by: Yutaka Kondo * enable docker build cache Signed-off-by: Yutaka Kondo * empty Signed-off-by: Yutaka Kondo * add no-cuda/cuda suffix Signed-off-by: Yutaka Kondo * remove --download-artifacts Signed-off-by: Yutaka Kondo * remove --download-artifacts Signed-off-by: Yutaka Kondo * add --data-path option Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * run download_artifacts Signed-off-by: Yutaka Kondo * remove todo Signed-off-by: Yutaka Kondo * revert run Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/workflows/build-main-self-hosted.yaml | 2 ++ .github/workflows/build-main.yaml | 2 ++ .github/workflows/docker-build-and-push-main-self-hosted.yaml | 2 ++ .github/workflows/docker-build-and-push-main.yaml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index c0bba91845b..9c40bcfd5b2 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -57,6 +57,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 4b276a7ad32..1fff60ce250 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -52,6 +52,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 98b194f5d76..ff5ae7a16c6 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -85,6 +85,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 729f7e9297a..ee132df8666 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -80,6 +80,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true From 491d2827ff8edeaa1f178408fed77ff2aa27f4f1 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 27 May 2024 18:28:05 +0900 Subject: [PATCH 161/380] feat(docker): cache `ccache` to the Docker build cache (#4772) --- docker/autoware-openadk/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/autoware-openadk/Dockerfile b/docker/autoware-openadk/Dockerfile index 4d0cd0d31b0..0ee7ebfa0d2 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/autoware-openadk/Dockerfile @@ -88,7 +88,7 @@ RUN --mount=type=ssh \ # Build Autoware COPY --from=src-imported /autoware/src /autoware/src -RUN source /opt/ros/"$ROS_DISTRO"/setup.bash \ +RUN --mount=type=cache,target=/var/tmp/ccache source /opt/ros/"$ROS_DISTRO"/setup.bash \ && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --cmake-args \ " -Wno-dev" \ " --no-warn-unused-cli" \ From d0861b6c8a5095c7c50723b841d0e01555a0b2a1 Mon Sep 17 00:00:00 2001 From: badai nguyen <94814556+badai-nguyen@users.noreply.github.com> Date: Mon, 27 May 2024 21:57:59 +0900 Subject: [PATCH 162/380] fix: add download url of yolox with semantic segmentation header (#4012) Signed-off-by: badai-nguyen --- ansible/roles/artifacts/tasks/main.yaml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 364a1a400bc..b4ba47e673e 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -213,6 +213,30 @@ mode: "644" checksum: sha256:3540a365bfd6d8afb1b5d8df4ec47f82cb984760d3270c9b41dbbb3422d09a0c +- name: Download tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/object_detection_semseg_yolox_s/v1/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx + dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx" + mode: "644" + checksum: sha256:73b3812432cedf65cebf02ca4cb630542fc3b1671c4c0fbf7cee50fa38e416a8 + +- name: Download tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.EntropyV2-calibration.table + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/object_detection_semseg_yolox_s/v1/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.EntropyV2-calibration.table + dest: "{{ data_dir }}/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.EntropyV2-calibration.table" + mode: "644" + checksum: sha256:28cd6524d4bcdb2809592a225d28330433e58dc02c92169ea555b44c1a51a584 + +- name: Download tensorrt_yolox/semseg_color_map.csv + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/object_detection_semseg_yolox_s/v1/semseg_color_map.csv + dest: "{{ data_dir }}/tensorrt_yolox/semseg_color_map.csv" + mode: "644" + checksum: sha256:3d93ca05f31b63424d7d7246a01a2365953705a0ed3323ba5b6fddd744a4bfea + # traffic_light_classifier - name: Create traffic_light_classifier directory inside {{ data_dir }} ansible.builtin.file: From 7fcdee3ada5900da0a5fd3e29a56ffac78f365be Mon Sep 17 00:00:00 2001 From: Naophis Date: Tue, 28 May 2024 16:15:26 +0900 Subject: [PATCH 163/380] chore: add error handling for held packages during rmw installation (#4781) * chore: add error handling for held packages during apt installation Signed-off-by: Naophis * feat: Add check for held ROS packages during installation Signed-off-by: Naophis --------- Signed-off-by: Naophis --- ansible/roles/rmw_implementation/tasks/main.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ansible/roles/rmw_implementation/tasks/main.yaml b/ansible/roles/rmw_implementation/tasks/main.yaml index bdbb7fa8a01..e37b94c3146 100644 --- a/ansible/roles/rmw_implementation/tasks/main.yaml +++ b/ansible/roles/rmw_implementation/tasks/main.yaml @@ -3,12 +3,25 @@ register: rmw_implementation__dash_case_rmw_implementation changed_when: false +- name: Hold check of ros-{{ rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout }} + ansible.builtin.command: apt-mark showhold + register: held_ros_packages + changed_when: false + - name: Install ros-{{ rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout }} become: true ansible.builtin.apt: name: ros-{{ rosdistro }}-{{ rmw_implementation__dash_case_rmw_implementation.stdout }} state: latest update_cache: true + when: "'ros-' + rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout not in held_ros_packages.stdout" + register: install_result + failed_when: false + +- name: Display warning if ROS 2 RMW package is held + ansible.builtin.debug: + msg: ROS 2 RMW package 'ros-{{ rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout }}' is apt-mark hold. Skipping installation. + when: not install_result.changed - name: Add RMW_IMPLEMENTATION to .bashrc ansible.builtin.lineinfile: From 01fc64796c6972aba05d4d26b76e46ee4b0f2e78 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 28 May 2024 22:57:43 +0900 Subject: [PATCH 164/380] refactor(docker,ci): rename `autoware-openadk` to `autoware` and `adkit` to `openadkit` (#4785) * rename adkit to openadkit Signed-off-by: Yutaka Kondo * rename autoware-openadkit to autoware Signed-off-by: Yutaka Kondo * fix hcl path Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .devcontainer/base/devcontainer.json | 2 +- .devcontainer/cuda/devcontainer.json | 2 +- .github/actions/docker-build-and-push/action.yaml | 6 +++--- .github/workflows/build-main-self-hosted.yaml | 2 +- .github/workflows/build-main.yaml | 2 +- .../docker-build-and-push-main-self-hosted.yaml | 6 +++--- .github/workflows/docker-build-and-push-main.yaml | 6 +++--- .github/workflows/update-docker-manifest.yaml | 4 ++-- ansible/playbooks/{openadk.yaml => openadkit.yaml} | 0 docker/{autoware-openadk => }/Dockerfile | 14 +++++++------- docker/build.sh | 10 +++++----- docker/{autoware-openadk => }/docker-bake.hcl | 6 +++--- docker/{autoware-openadk => }/etc/.bash_aliases | 0 .../{autoware-openadk => }/etc/ros_entrypoint.sh | 0 docker/run.sh | 6 +++--- 15 files changed, 33 insertions(+), 33 deletions(-) rename ansible/playbooks/{openadk.yaml => openadkit.yaml} (100%) rename docker/{autoware-openadk => }/Dockerfile (93%) rename docker/{autoware-openadk => }/docker-bake.hcl (76%) rename docker/{autoware-openadk => }/etc/.bash_aliases (100%) rename docker/{autoware-openadk => }/etc/ros_entrypoint.sh (100%) diff --git a/.devcontainer/base/devcontainer.json b/.devcontainer/base/devcontainer.json index 939cc741f5e..f3b5ffe9984 100644 --- a/.devcontainer/base/devcontainer.json +++ b/.devcontainer/base/devcontainer.json @@ -2,7 +2,7 @@ "name": "Autoware", "build": { "dockerfile": "../Dockerfile", - "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware-openadk:latest-devel" } + "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:latest-devel" } }, "remoteUser": "autoware", "runArgs": [ diff --git a/.devcontainer/cuda/devcontainer.json b/.devcontainer/cuda/devcontainer.json index bc0efde100f..bb0b6ad849e 100644 --- a/.devcontainer/cuda/devcontainer.json +++ b/.devcontainer/cuda/devcontainer.json @@ -2,7 +2,7 @@ "name": "Autoware-cuda", "build": { "dockerfile": "../Dockerfile", - "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware-openadk:latest-devel-cuda" } + "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:latest-devel-cuda" } }, "remoteUser": "autoware", "hostRequirements": { diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 53a95eb8fe7..bca96dd7368 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -98,7 +98,7 @@ runs: with: push: ${{ inputs.allow-push == 'true' }} files: | - docker/${{ inputs.bake-target }}/docker-bake.hcl + docker/docker-bake.hcl ${{ steps.meta-prebuilt.outputs.bake-file }} ${{ steps.meta-devel.outputs.bake-file }} targets: | @@ -114,7 +114,7 @@ runs: with: push: true files: | - docker/${{ inputs.bake-target }}/docker-bake.hcl + docker/docker-bake.hcl ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-prebuilt.outputs.bake-file }} ${{ steps.meta-runtime.outputs.bake-file }} @@ -128,7 +128,7 @@ runs: with: push: false files: | - docker/${{ inputs.bake-target }}/docker-bake.hcl + docker/docker-bake.hcl ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-prebuilt.outputs.bake-file }} ${{ steps.meta-runtime.outputs.bake-file }} diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 9c40bcfd5b2..9e85f01bd3e 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -50,7 +50,7 @@ jobs: - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-openadk + bake-target: autoware build-args: | *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 1fff60ce250..1c8123f360e 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -45,7 +45,7 @@ jobs: - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-openadk + bake-target: autoware build-args: | *.platform=linux/amd64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index ff5ae7a16c6..772ba389e82 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -9,7 +9,7 @@ name: docker-build-and-push-main-self-hosted on: push: tags: - - adkit-v*.*.* + - openadkit-v*.*.* branches: - main schedule: @@ -75,10 +75,10 @@ jobs: mkdir src vcs import src < autoware.repos - - name: Build 'autoware-openadk' + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-openadk + bake-target: autoware build-args: | *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index ee132df8666..118ba5413e5 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -9,7 +9,7 @@ name: docker-build-and-push-main on: push: tags: - - adkit-v*.*.* + - openadkit-v*.*.* branches: - main schedule: @@ -70,10 +70,10 @@ jobs: mkdir src vcs import src < autoware.repos - - name: Build 'autoware-openadk' + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: - bake-target: autoware-openadk + bake-target: autoware build-args: | *.platform=linux/amd64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} diff --git a/.github/workflows/update-docker-manifest.yaml b/.github/workflows/update-docker-manifest.yaml index 7c63a54dcb5..a0539b037ed 100644 --- a/.github/workflows/update-docker-manifest.yaml +++ b/.github/workflows/update-docker-manifest.yaml @@ -12,7 +12,7 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Combine multi arch images for 'autoware-openadk' + - name: Combine multi arch images for 'Autoware' uses: ./.github/actions/combine-multi-arch-images with: - package-name: autoware-openadk + package-name: autoware diff --git a/ansible/playbooks/openadk.yaml b/ansible/playbooks/openadkit.yaml similarity index 100% rename from ansible/playbooks/openadk.yaml rename to ansible/playbooks/openadkit.yaml diff --git a/docker/autoware-openadk/Dockerfile b/docker/Dockerfile similarity index 93% rename from docker/autoware-openadk/Dockerfile rename to docker/Dockerfile index 0ee7ebfa0d2..b1374e5fad6 100644 --- a/docker/autoware-openadk/Dockerfile +++ b/docker/Dockerfile @@ -20,7 +20,7 @@ WORKDIR /autoware # Set up base environment RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module base --runtime openadk \ + ./setup-dev-env.sh -y --module base --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc @@ -72,7 +72,7 @@ ENV CXX="/usr/lib/ccache/g++" # cspell: ignore libcu libnv # Set up development environment RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadk \ + ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && find / -name 'libcu*.a' -delete \ @@ -105,12 +105,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module dev-tools openadk \ + ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache # Create entrypoint -COPY docker/autoware-openadk/etc/ros_entrypoint.sh /ros_entrypoint.sh +COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh RUN chmod +x /ros_entrypoint.sh ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -125,7 +125,7 @@ ARG SETUP_ARGS COPY --from=src-imported /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers --runtime openadk \ + ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ @@ -143,11 +143,11 @@ RUN --mount=type=ssh \ COPY --from=prebuilt /autoware/install/ /autoware/install/ # Copy bash aliases -COPY docker/autoware-openadk/etc/.bash_aliases /root/.bash_aliases +COPY docker/etc/.bash_aliases /root/.bash_aliases RUN echo "source /autoware/install/setup.bash" > /etc/bash.bashrc # Create entrypoint -COPY docker/autoware-openadk/etc/ros_entrypoint.sh /ros_entrypoint.sh +COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh RUN chmod +x /ros_entrypoint.sh ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["bash"] diff --git a/docker/build.sh b/docker/build.sh index fe9917b7575..3d0a417c952 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -16,7 +16,7 @@ print_help() { } SCRIPT_DIR=$(readlink -f "$(dirname "$0")") -WORKSPACE_ROOT="$SCRIPT_DIR/../" +WORKSPACE_ROOT="$SCRIPT_DIR/.." # Parse arguments parse_arguments() { @@ -111,7 +111,7 @@ build_images() { echo "Targets: ${targets[*]}" set -x - docker buildx bake --load --progress=plain -f "$SCRIPT_DIR/autoware-openadk/docker-bake.hcl" \ + docker buildx bake --load --progress=plain -f "$SCRIPT_DIR/docker-bake.hcl" \ --set "*.context=$WORKSPACE_ROOT" \ --set "*.ssh=default" \ --set "*.platform=$platform" \ @@ -119,9 +119,9 @@ build_images() { --set "*.args.BASE_IMAGE=$base_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "*.args.LIB_DIR=$lib_dir" \ - --set "devel.tags=ghcr.io/autowarefoundation/autoware-openadk:latest-devel$image_name_suffix" \ - --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware-openadk:latest-prebuilt$image_name_suffix" \ - --set "runtime.tags=ghcr.io/autowarefoundation/autoware-openadk:latest-runtime$image_name_suffix" \ + --set "devel.tags=ghcr.io/autowarefoundation/autoware:latest-devel$image_name_suffix" \ + --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware:latest-prebuilt$image_name_suffix" \ + --set "runtime.tags=ghcr.io/autowarefoundation/autoware:latest-runtime$image_name_suffix" \ "${targets[@]}" set +x } diff --git a/docker/autoware-openadk/docker-bake.hcl b/docker/docker-bake.hcl similarity index 76% rename from docker/autoware-openadk/docker-bake.hcl rename to docker/docker-bake.hcl index d472a0df008..893edd69e1c 100644 --- a/docker/autoware-openadk/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -9,18 +9,18 @@ target "docker-metadata-action-runtime" {} target "prebuilt" { inherits = ["docker-metadata-action-prebuilt"] - dockerfile = "docker/autoware-openadk/Dockerfile" + dockerfile = "docker/Dockerfile" target = "prebuilt" } target "devel" { inherits = ["docker-metadata-action-devel"] - dockerfile = "docker/autoware-openadk/Dockerfile" + dockerfile = "docker/Dockerfile" target = "devel" } target "runtime" { inherits = ["docker-metadata-action-runtime"] - dockerfile = "docker/autoware-openadk/Dockerfile" + dockerfile = "docker/Dockerfile" target = "runtime" } diff --git a/docker/autoware-openadk/etc/.bash_aliases b/docker/etc/.bash_aliases similarity index 100% rename from docker/autoware-openadk/etc/.bash_aliases rename to docker/etc/.bash_aliases diff --git a/docker/autoware-openadk/etc/ros_entrypoint.sh b/docker/etc/ros_entrypoint.sh similarity index 100% rename from docker/autoware-openadk/etc/ros_entrypoint.sh rename to docker/etc/ros_entrypoint.sh diff --git a/docker/run.sh b/docker/run.sh index ebcd32ff29e..e26bd5c4a37 100755 --- a/docker/run.sh +++ b/docker/run.sh @@ -10,7 +10,7 @@ GREEN='\033[0;32m' NC='\033[0m' # No Color SCRIPT_DIR=$(readlink -f "$(dirname "$0")") -WORKSPACE_ROOT="$SCRIPT_DIR/../" +WORKSPACE_ROOT="$SCRIPT_DIR/.." source "$WORKSPACE_ROOT/amd64.env" if [ "$(uname -m)" = "aarch64" ]; then source "$WORKSPACE_ROOT/arm64.env" @@ -124,9 +124,9 @@ set_variables() { # Set image based on option if [ "$option_devel" == "true" ]; then - IMAGE="ghcr.io/autowarefoundation/autoware-openadk:latest-devel" + IMAGE="ghcr.io/autowarefoundation/autoware:latest-devel" else - IMAGE="ghcr.io/autowarefoundation/autoware-openadk:latest-runtime" + IMAGE="ghcr.io/autowarefoundation/autoware:latest-runtime" fi } From 5836af08b374dc57cdfd70641b5787a6612d9ab8 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 29 May 2024 18:25:53 +0900 Subject: [PATCH 165/380] feat(ci): disable `Upload Artifacts` on `docker-build-and-push` action (#4789) * remove upload artifact Signed-off-by: Yutaka Kondo * remove build and push Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 89 +------------------ 1 file changed, 4 insertions(+), 85 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index bca96dd7368..2afd706e66a 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -92,8 +92,8 @@ runs: username: ${{ github.repository_owner }} password: ${{ github.token }} - - name: Build and Push - prebuilt and devel - if: ${{ (github.event_name == 'push' && github.ref_type == 'branch') || github.event_name == 'schedule' }} + - name: Build and Push to GitHub Container Registry + if: ${{ github.event_name == 'push' || github.event_name == 'schedule' || ( github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} uses: docker/bake-action@v3 with: push: ${{ inputs.allow-push == 'true' }} @@ -101,102 +101,21 @@ runs: docker/docker-bake.hcl ${{ steps.meta-prebuilt.outputs.bake-file }} ${{ steps.meta-devel.outputs.bake-file }} - targets: | - prebuilt - devel - provenance: false - set: | - ${{ inputs.build-args }} - - - name: Build and Publish to GitHub Container Registry - if: ${{ ( github.event_name == 'push' && github.ref_type == 'tag' ) || ( github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} - uses: docker/bake-action@v3 - with: - push: true - files: | - docker/docker-bake.hcl - ${{ steps.meta-devel.outputs.bake-file }} - ${{ steps.meta-prebuilt.outputs.bake-file }} ${{ steps.meta-runtime.outputs.bake-file }} provenance: false set: | ${{ inputs.build-args }} - - name: Build and Save Artifacts + - name: Build only if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} uses: docker/bake-action@v3 with: push: false files: | docker/docker-bake.hcl - ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-prebuilt.outputs.bake-file }} + ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-runtime.outputs.bake-file }} provenance: false set: | ${{ inputs.build-args }} - prebuilt.output=type=docker,dest=/tmp/prebuilt.tar - devel.output=type=docker,dest=/tmp/devel.tar - runtime.output=type=docker,dest=/tmp/runtime.tar - - - name: Upload Artifact - prebuilt - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - id: artifact-upload-step-prebuilt - uses: actions/upload-artifact@v4 - with: - name: prebuilt-image${{ inputs.tag-suffix }} - path: /tmp/prebuilt.tar - retention-days: 7 - compression-level: 6 - overwrite: true - if-no-files-found: error - - - name: Remove tar file - prebuilt - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - run: | - rm /tmp/prebuilt.tar - shell: bash - - - name: Upload Artifact - devel - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - id: artifact-upload-step-devel - uses: actions/upload-artifact@v4 - with: - name: devel-image${{ inputs.tag-suffix }} - path: /tmp/devel.tar - retention-days: 7 - compression-level: 6 - overwrite: true - if-no-files-found: error - - - name: Remove tar file - devel - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - run: | - rm /tmp/devel.tar - shell: bash - - - name: Upload Artifact - runtime - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - id: artifact-upload-step-runtime - uses: actions/upload-artifact@v4 - with: - name: runtime-image${{ inputs.tag-suffix }} - path: /tmp/runtime.tar - retention-days: 7 - compression-level: 6 - overwrite: true - if-no-files-found: error - - - name: Remove tar file - runtime - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - run: | - rm /tmp/runtime.tar - shell: bash - - - name: Output artifact URLs - id: output-artifact-urls - run: | - echo 'prebuilt URL ${{ steps.artifact-upload-step-prebuilt.outputs.artifact-url }}' - echo 'devel URL ${{ steps.artifact-upload-step-devel.outputs.artifact-url }}' - echo 'runtime URL ${{ steps.artifact-upload-step-runtime.outputs.artifact-url }}' - shell: bash From 1637979ab4cf9063970e45df7f919b18f7f81c87 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 29 May 2024 19:50:57 +0900 Subject: [PATCH 166/380] feat(docker): cache apt archives to the Docker build cache (#4778) * mount apt cache Signed-off-by: Yutaka Kondo * reorder Signed-off-by: Yutaka Kondo * remove upload artifact Signed-off-by: Yutaka Kondo * remove build and push Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index b1374e5fad6..137f95f54dc 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,10 +6,14 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO # Install apt packages and add GitHub to known hosts for private repositories -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ +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 +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ gosu \ ssh \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && mkdir -p ~/.ssh \ && ssh-keyscan github.com >> ~/.ssh/known_hosts @@ -20,9 +24,11 @@ WORKDIR /autoware # Set up base environment RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module base --runtime openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc # Create entrypoint @@ -37,10 +43,14 @@ COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /auto COPY ansible/ /autoware/ansible/ WORKDIR /autoware +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 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y rosdep \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + && apt-get autoremove -y && rm -rf "$HOME"/.cache # Copy repository files COPY src /autoware/src @@ -72,23 +82,26 @@ ENV CXX="/usr/lib/ccache/g++" # cspell: ignore libcu libnv # Set up development environment RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && find / -name 'libcu*.a' -delete \ && find / -name 'libnv*.a' -delete # Install rosdep dependencies COPY --from=src-imported /rosdep-all-depend-packages.txt /tmp/rosdep-all-depend-packages.txt # hadolint ignore=SC2002 -RUN --mount=type=ssh \ +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 \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + && apt-get autoremove -y && rm -rf "$HOME"/.cache # Build Autoware COPY --from=src-imported /autoware/src /autoware/src -RUN --mount=type=cache,target=/var/tmp/ccache source /opt/ros/"$ROS_DISTRO"/setup.bash \ +RUN source /opt/ros/"$ROS_DISTRO"/setup.bash \ && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --cmake-args \ " -Wno-dev" \ " --no-warn-unused-cli" \ @@ -105,9 +118,11 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + && apt-get autoremove -y && rm -rf "$HOME"/.cache # Create entrypoint COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh @@ -125,11 +140,13 @@ ARG SETUP_ARGS COPY --from=src-imported /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 \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-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 \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ From 27e31e9474e79ba024b2dada1b92b89f8c3a6774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Thu, 30 May 2024 16:25:43 +0300 Subject: [PATCH 167/380] chore: update code owners (#4797) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/CODEOWNERS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 59cb84743d3..765564beaf4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,6 @@ * ryohsuke.mitsudome@tier4.jp mfc@leodrive.ai + +.devcontainer/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp +.github/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp +ansible/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp +docker/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp From 8c0f1bf6e515925b8a8ea5e83d87272123d92bf1 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 16:36:09 +0300 Subject: [PATCH 168/380] ci(pre-commit-ansible): autoupdate (#4676) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index ab1f794f0ba..f3538d8674f 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v24.2.2 + rev: v24.5.0 hooks: - id: ansible-lint additional_dependencies: From b9df3fa5793717e35f2ef63449a7f76d828275c7 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 16:37:16 +0300 Subject: [PATCH 169/380] ci: pre-commit autoupdate (#4670) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [pre-commit.ci] pre-commit autoupdate updates: - [github.com/igorshubovych/markdownlint-cli: v0.39.0 → v0.41.0](https://github.com/igorshubovych/markdownlint-cli/compare/v0.39.0...v0.41.0) - [github.com/AleksaC/hadolint-py: v2.12.1-beta → v2.12.1b3](https://github.com/AleksaC/hadolint-py/compare/v2.12.1-beta...v2.12.1b3) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 45fc38bf941..26c5585f4fc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: args: [--markdown-linebreak-ext=md] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.39.0 + rev: v0.41.0 hooks: - id: markdownlint args: [-c, .markdownlint.yaml, --fix] @@ -44,7 +44,7 @@ repos: args: [-w, -s, -i=4] - repo: https://github.com/AleksaC/hadolint-py - rev: v2.12.1-beta + rev: v2.12.1b3 hooks: - id: hadolint From 958e84567546a4aa71bf5eaf9a81207e0164a896 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 16:38:35 +0300 Subject: [PATCH 170/380] ci(pre-commit): autoupdate (#4662) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions From 1348d33cf17f9fdc2aab6930a5d69c66551de654 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 13:49:15 +0000 Subject: [PATCH 171/380] ci(pre-commit-optional): autoupdate (#4766) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index b2d8c5e8059..8c9345e15f0 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.12.1 + rev: v3.12.2 hooks: - id: markdown-link-check args: [--quiet, --config=.markdown-link-check.json] From 033a3a176dd596e1e222bd7757430e4b8b1aa97e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 31 May 2024 00:00:22 +0900 Subject: [PATCH 172/380] fix(ci): run `vsc import` on `build-main` workflows (#4799) Signed-off-by: Yutaka Kondo --- .github/workflows/build-main-self-hosted.yaml | 16 ++++++++++++++++ .github/workflows/build-main.yaml | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 9e85f01bd3e..c0fbe3f21b6 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -44,9 +44,25 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Install vcstool + run: | + sudo apt-get -y update + sudo apt-get -y install python3-pip + pip install --no-cache-dir vcstool + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Run vcs import + run: | + mkdir src + vcs import src < autoware.repos + - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 1c8123f360e..5beada55314 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -39,9 +39,25 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Install vcstool + run: | + sudo apt-get -y update + sudo apt-get -y install python3-pip + pip install --no-cache-dir vcstool + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Run vcs import + run: | + mkdir src + vcs import src < autoware.repos + - name: Build 'autoware-universe' uses: ./.github/actions/docker-build-and-push with: From efb89f39be56802b816803f671d2321f93f9d777 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Sat, 1 Jun 2024 07:39:21 +0900 Subject: [PATCH 173/380] feat(docker): cache `ccache` to the Docker build cache (#4800) cache ccache again Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 137f95f54dc..9a914ac8283 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -101,7 +101,8 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ # Build Autoware COPY --from=src-imported /autoware/src /autoware/src -RUN source /opt/ros/"$ROS_DISTRO"/setup.bash \ +RUN --mount=type=cache,target=${CCACHE_DIR} \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --cmake-args \ " -Wno-dev" \ " --no-warn-unused-cli" \ From c707661de02668f69bdfe42b2e5ebce87e6a68d2 Mon Sep 17 00:00:00 2001 From: Naophis Date: Mon, 3 Jun 2024 17:12:09 +0900 Subject: [PATCH 174/380] chore: hold check of plotjuggler-ros package and display warning if held (#4805) * chore: Hold check of plotjuggler-ros package and display warning if held Signed-off-by: Naophis * chore: fix condition for checking held ROS package in dev_tools role Signed-off-by: Naophis * style(pre-commit): autofix * chore: Update dev_tools role to fix condition for checking held ROS package Signed-off-by: Naophis --------- Signed-off-by: Naophis Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/roles/dev_tools/tasks/main.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ansible/roles/dev_tools/tasks/main.yaml b/ansible/roles/dev_tools/tasks/main.yaml index 2a11dd7ffc6..1a7d3c6511a 100644 --- a/ansible/roles/dev_tools/tasks/main.yaml +++ b/ansible/roles/dev_tools/tasks/main.yaml @@ -37,6 +37,11 @@ state: latest update_cache: true +- name: Hold check of ros-{{ rosdistro + '-plotjuggler-ros' }} + ansible.builtin.command: apt-mark showhold + register: held_ros_packages + changed_when: false + - name: Install plotjuggler become: true ansible.builtin.apt: @@ -44,3 +49,11 @@ - ros-{{ rosdistro }}-plotjuggler-ros state: latest update_cache: true + when: "'ros-' + rosdistro + '-plotjuggler-ros' not in held_ros_packages.stdout" + register: install_result + failed_when: false + +- name: Display warning if plotjuggler-ros package is held + ansible.builtin.debug: + msg: ROS package 'ros-{{ rosdistro }}-plotjuggler-ros' is apt-mark hold. Skipping installation. + when: not install_result.changed From d192a6071dc110752faafebb0664b195f957abb2 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 3 Jun 2024 23:08:32 +0900 Subject: [PATCH 175/380] feat(docker): revert "cache apt archives to the Docker build cache" (#4793) Revert "feat(docker): cache apt archives to the Docker build cache (#4778)" Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 9a914ac8283..3f0a53c0a84 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,14 +6,10 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO # Install apt packages and add GitHub to known hosts for private repositories -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 -RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ gosu \ ssh \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && mkdir -p ~/.ssh \ && ssh-keyscan github.com >> ~/.ssh/known_hosts @@ -24,11 +20,9 @@ WORKDIR /autoware # Set up base environment RUN --mount=type=ssh \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module base --runtime openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc # Create entrypoint @@ -43,14 +37,10 @@ COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /auto COPY ansible/ /autoware/ansible/ WORKDIR /autoware -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 RUN --mount=type=ssh \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y rosdep \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache # Copy repository files COPY src /autoware/src @@ -82,22 +72,19 @@ ENV CXX="/usr/lib/ccache/g++" # cspell: ignore libcu libnv # Set up development environment RUN --mount=type=ssh \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && find / -name 'libcu*.a' -delete \ && find / -name 'libnv*.a' -delete # Install rosdep dependencies COPY --from=src-imported /rosdep-all-depend-packages.txt /tmp/rosdep-all-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 \ +RUN --mount=type=ssh \ apt-get update \ && cat /tmp/rosdep-all-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache # Build Autoware COPY --from=src-imported /autoware/src /autoware/src @@ -119,11 +106,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache # Create entrypoint COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh @@ -141,13 +126,11 @@ ARG SETUP_ARGS COPY --from=src-imported /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 \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ From 79318cedf06fa3d010010d32b81b3a8b18430ba5 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Thu, 6 Jun 2024 01:31:54 +0900 Subject: [PATCH 176/380] chore(ci): add a workflow for DCO check to avoid DCO bot system failure (#4825) Signed-off-by: Ryohsuke Mitsudome --- .github/workflows/dco.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/dco.yaml diff --git a/.github/workflows/dco.yaml b/.github/workflows/dco.yaml new file mode 100644 index 00000000000..db7ace467c6 --- /dev/null +++ b/.github/workflows/dco.yaml @@ -0,0 +1,21 @@ +name: DCO +# ref: https://github.com/anchore/syft/pull/2926/files +on: + pull_request: +jobs: + dco: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Python 3.x + uses: actions/setup-python@v5 + with: + python-version: 3.x + + - name: Check DCO + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pip3 install -U dco-check + dco-check --verbose --exclude-pattern 'pre-commit-ci\[bot\]@users\.noreply\.github\.com' From c73aaf0ac10541d3bdb4017f8dcebbeb5ee124c3 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 6 Jun 2024 22:26:13 +0900 Subject: [PATCH 177/380] feat(ci): add CPU architecture suffixes to the Docker build cache (#4826) * add arch prefix Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * use lib_dir Signed-off-by: Yutaka Kondo * change suffix Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/workflows/build-main-self-hosted.yaml | 4 ++-- .github/workflows/build-main.yaml | 4 ++-- .github/workflows/docker-build-and-push-main-self-hosted.yaml | 4 ++-- .github/workflows/docker-build-and-push-main.yaml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index c0fbe3f21b6..d83234253f6 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -73,8 +73,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64 + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64,mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 5beada55314..953f93492b1 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -68,8 +68,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64 + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64,mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 772ba389e82..f5066a2c9ca 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -85,8 +85,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64 + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64,mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 118ba5413e5..430b6dbe031 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -80,8 +80,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64 + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64,mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true From 338e46d7d6d9d4218e9b122d42db7f1006864895 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Fri, 7 Jun 2024 18:56:18 +0900 Subject: [PATCH 178/380] feat(simulator.repos): use autoware_msgs_support branch for scenario_simulator (#4823) Signed-off-by: Ryohsuke Mitsudome Co-authored-by: Yutaka Kondo --- simulator.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulator.repos b/simulator.repos index dd3551eb56b..30e005c4f0c 100644 --- a/simulator.repos +++ b/simulator.repos @@ -2,4 +2,4 @@ repositories: simulator/scenario_simulator: type: git url: https://github.com/tier4/scenario_simulator_v2.git - version: master + version: RJD-736/autoware_msgs_support # TODO(mitsudome-r): switch back to master once this branch is merged From 2202a9467b9b3c334edacca056a44635f41b6cbe Mon Sep 17 00:00:00 2001 From: Amadeusz Szymko Date: Sat, 8 Jun 2024 10:14:46 +0900 Subject: [PATCH 179/380] feat(ansible): add lidar_transfusion artifacts (#4835) --- ansible/roles/artifacts/tasks/main.yaml | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index b4ba47e673e..54efaaea341 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -158,6 +158,38 @@ dest: "{{ data_dir }}/lidar_centerpoint/deploy_metadata.yaml" mode: "644" checksum: sha256:152536f053c3750b60d349800e1b983b418029d6dadf087614a00c661942a178 + +# lidar_transfusion +- name: Create lidar_transfusion directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/lidar_transfusion" + mode: "755" + state: directory + +- name: Download lidar_transfusion/transfusion.onnx + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/transfusion/v1/transfusion.onnx + dest: "{{ data_dir }}/lidar_transfusion/transfusion.onnx" + mode: "644" + checksum: sha256:8938999cf03770ffd3301027300ea2cbcf471c180450e0434121d7294c42aa0b + +- name: Download lidar_transfusion/transfusion.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/transfusion/v1/transfusion.param.yaml + dest: "{{ data_dir }}/lidar_transfusion/transfusion.param.yaml" + mode: "644" + checksum: sha256:0e18776040f14e380037ef6ecb500d1d1d151f21ff7d5c890606673f7e100e14 + +- name: Download lidar_transfusion/detection_class_remapper.param.yaml + become: true + ansible.builtin.get_url: + url: https://awf.ml.dev.web.auto/perception/models/transfusion/v1/detection_class_remapper.param.yaml + dest: "{{ data_dir }}/lidar_transfusion/detection_class_remapper.param.yaml" + mode: "644" + checksum: sha256:c711f8875ece9b527dfe31ffc75f8c0de2e77945ef67860a959a4e04c36772d5 + # tensorrt_yolox - name: Create tensorrt_yolox directory inside {{ data_dir }} ansible.builtin.file: From b0108095f12408e057213d3a499e99a20ee7bc5d Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 10 Jun 2024 19:34:12 +0900 Subject: [PATCH 180/380] refactor(docker): fix colcon `--cmake-args` (#4828) fix colcon cmake-args Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 3f0a53c0a84..d97b55c8cdd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -90,11 +90,11 @@ RUN --mount=type=ssh \ COPY --from=src-imported /autoware/src /autoware/src RUN --mount=type=cache,target=${CCACHE_DIR} \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ - && colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ + && colcon build --cmake-args \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ && find /autoware/install -type d -exec chmod 777 {} \; \ && chmod -R 777 /var/tmp/ccache \ && rm -rf /autoware/build /autoware/src From 226be42e305248b27ed0cb4058005911d1abffdc Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 10 Jun 2024 20:00:30 +0900 Subject: [PATCH 181/380] refactor(ci): use platform arg to replace raw string (#4844) use platform arg to replace raw string Signed-off-by: Yutaka Kondo --- .github/workflows/build-main-self-hosted.yaml | 8 +++++--- .github/workflows/build-main.yaml | 8 +++++--- .../workflows/docker-build-and-push-main-self-hosted.yaml | 8 +++++--- .github/workflows/docker-build-and-push-main.yaml | 8 +++++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index d83234253f6..1bbb7b51479 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -27,11 +27,13 @@ jobs: - cuda include: - name: no-cuda + platform: arm64 base_image_env: base_image lib_dir: aarch64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda + platform: arm64 base_image_env: base_image lib_dir: aarch64 additional-tag-suffix: -cuda @@ -68,13 +70,13 @@ jobs: with: bake-target: autoware build-args: | - *.platform=linux/arm64 + *.platform=linux/${{ matrix.platform }} *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64 - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64,mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 953f93492b1..bb261df9181 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -27,11 +27,13 @@ jobs: - cuda include: - name: no-cuda + platform: amd64 base_image_env: base_image lib_dir: x86_64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda + platform: amd64 base_image_env: base_image lib_dir: x86_64 additional-tag-suffix: -cuda @@ -63,13 +65,13 @@ jobs: with: bake-target: autoware build-args: | - *.platform=linux/amd64 + *.platform=linux/${{ matrix.platform }} *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64 - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64,mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index f5066a2c9ca..d7df16222bf 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -39,11 +39,13 @@ jobs: - cuda include: - name: no-cuda + platform: arm64 base_image_env: base_image lib_dir: aarch64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda + platform: arm64 base_image_env: base_image lib_dir: aarch64 additional-tag-suffix: -cuda @@ -80,13 +82,13 @@ jobs: with: bake-target: autoware build-args: | - *.platform=linux/arm64 + *.platform=linux/${{ matrix.platform }} *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64 - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-arm64,mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 430b6dbe031..e0f04aaf556 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -40,11 +40,13 @@ jobs: include: - name: no-cuda base_image_env: base_image + platform: amd64 lib_dir: x86_64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda base_image_env: base_image + platform: amd64 lib_dir: x86_64 additional-tag-suffix: -cuda steps: @@ -75,13 +77,13 @@ jobs: with: bake-target: autoware build-args: | - *.platform=linux/amd64 + *.platform=linux/${{ matrix.platform }} *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64 - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-amd64,mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true From dfe3cb261c6fbf8e2a8727221c4c09b783ffe903 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 10 Jun 2024 22:48:26 +0900 Subject: [PATCH 182/380] refactor(ci): install `vcstool` and run `vcs import` on `docker-build-and-push.yaml` (#4845) * refactor docker-build-and-push Signed-off-by: Yutaka Kondo * fix shell Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo Co-authored-by: oguzkaganozt --- .github/actions/docker-build-and-push/action.yaml | 11 +++++++++-- .github/workflows/build-main-self-hosted.yaml | 13 +------------ .github/workflows/build-main.yaml | 13 +------------ .../docker-build-and-push-main-self-hosted.yaml | 11 ----------- .github/workflows/docker-build-and-push-main.yaml | 11 ----------- 5 files changed, 11 insertions(+), 48 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 2afd706e66a..91f82916a91 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -25,10 +25,17 @@ runs: - name: Setup Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Install jq + - name: Install jq and vcstool run: | sudo apt-get -y update - sudo apt-get -y install jq + sudo apt-get -y install jq python3-pip + pip install --no-cache-dir vcstool + shell: bash + + - name: Run vcs import + run: | + mkdir src + vcs import src < autoware.repos shell: bash - name: Set Docker tags diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 1bbb7b51479..07e07e67a59 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -46,12 +46,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Install vcstool - run: | - sudo apt-get -y update - sudo apt-get -y install python3-pip - pip install --no-cache-dir vcstool - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -60,12 +54,7 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos - - - name: Build 'autoware-universe' + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: bake-target: autoware diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index bb261df9181..86380deb512 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -41,12 +41,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Install vcstool - run: | - sudo apt-get -y update - sudo apt-get -y install python3-pip - pip install --no-cache-dir vcstool - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -55,12 +49,7 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos - - - name: Build 'autoware-universe' + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: bake-target: autoware diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index d7df16222bf..e91d46bb645 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -58,12 +58,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Install vcstool - run: | - sudo apt-get -y update - sudo apt-get -y install python3-pip - pip install --no-cache-dir vcstool - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -72,11 +66,6 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos - - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index e0f04aaf556..fee5967c7d9 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -53,12 +53,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Install vcstool - run: | - sudo apt-get -y update - sudo apt-get -y install python3-pip - pip install --no-cache-dir vcstool - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -67,11 +61,6 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos - - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: From ca8f52713b6e3e9f975f68d4595fd87094c68dd9 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 12 Jun 2024 04:08:56 +0900 Subject: [PATCH 183/380] feat(ci,docker): set multiple Docker build cache (#4852) Signed-off-by: Yutaka Kondo --- .github/workflows/build-main-self-hosted.yaml | 4 ++-- .github/workflows/build-main.yaml | 4 ++-- .../workflows/docker-build-and-push-main-self-hosted.yaml | 5 +++-- .github/workflows/docker-build-and-push-main.yaml | 5 +++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 07e07e67a59..f6cc66a5ebd 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -64,8 +64,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main,mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 86380deb512..0e382eba987 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -59,8 +59,8 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main,mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index e91d46bb645..7c3832e14db 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -76,8 +76,9 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index fee5967c7d9..bb2e1e42dff 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -71,8 +71,9 @@ jobs: *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} *.args.SETUP_ARGS=${{ matrix.setup-args }} *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }} - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}:buildcache-${{ matrix.name }}-${{ matrix.platform }},mode=max + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true From 443d364366bc1a5661ce6ce89eb19d0ac7c4118c Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 12 Jun 2024 09:36:01 +0900 Subject: [PATCH 184/380] refactor(ci): use `matrix.platform` to `tag-suffix` (#4853) use matrix.platform Signed-off-by: Yutaka Kondo --- .github/workflows/build-main-self-hosted.yaml | 2 +- .github/workflows/build-main.yaml | 2 +- .github/workflows/docker-build-and-push-main-self-hosted.yaml | 2 +- .github/workflows/docker-build-and-push-main.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index f6cc66a5ebd..73354230d98 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -66,7 +66,7 @@ jobs: *.args.LIB_DIR=${{ matrix.lib_dir }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main,mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 + tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 0e382eba987..859c754c169 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -61,7 +61,7 @@ jobs: *.args.LIB_DIR=${{ matrix.lib_dir }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main,mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 + tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: false diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 7c3832e14db..0d44a72ed30 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -79,7 +79,7 @@ jobs: *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-arm64 + tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index bb2e1e42dff..c0267f95ba4 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -74,7 +74,7 @@ jobs: *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-amd64 + tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} tag-prefix: ${{ needs.load-env.outputs.rosdistro }} allow-push: true From 23a0f14f33bf69bdb9e5dcf6d8d7809bc69e2f7c Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 12 Jun 2024 15:29:40 +0900 Subject: [PATCH 185/380] feat(ci,docker): save `RUN --mount=type=cache` ccache on GitHub Actions cache (#4854) Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 13 +++++------ .github/workflows/build-main-self-hosted.yaml | 22 +++++++++++++++++++ .github/workflows/build-main.yaml | 22 +++++++++++++++++++ ...ocker-build-and-push-main-self-hosted.yaml | 22 +++++++++++++++++++ .../workflows/docker-build-and-push-main.yaml | 22 +++++++++++++++++++ docker/Dockerfile | 8 +++---- 6 files changed, 96 insertions(+), 13 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 91f82916a91..40b9ee3f022 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -22,9 +22,6 @@ inputs: runs: using: composite steps: - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Install jq and vcstool run: | sudo apt-get -y update @@ -59,7 +56,7 @@ runs: - name: Docker meta for prebuilt id: meta-prebuilt - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: ${{ steps.set-docker-tags.outputs.tags }} @@ -70,7 +67,7 @@ runs: - name: Docker meta for devel id: meta-devel - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: ${{ steps.set-docker-tags.outputs.tags }} @@ -82,7 +79,7 @@ runs: - name: Docker meta for runtime if: ${{ github.event_name == 'workflow_dispatch' }} || ${{ (github.event_name == 'push' && github.ref_type == 'tag') }} id: meta-runtime - uses: docker/metadata-action@v4 + uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: ${{ steps.set-docker-tags.outputs.tags }} @@ -101,7 +98,7 @@ runs: - name: Build and Push to GitHub Container Registry if: ${{ github.event_name == 'push' || github.event_name == 'schedule' || ( github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} - uses: docker/bake-action@v3 + uses: docker/bake-action@v4 with: push: ${{ inputs.allow-push == 'true' }} files: | @@ -115,7 +112,7 @@ runs: - name: Build only if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - uses: docker/bake-action@v3 + uses: docker/bake-action@v4 with: push: false files: | diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index 73354230d98..eb178be3c27 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -46,6 +46,9 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -54,6 +57,25 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Cache + uses: actions/cache@v3 + id: cache + with: + path: | + root-ccache + key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} + restore-keys: | + cache-${{ matrix.platform }}-${{ matrix.name }}- + cache-${{ matrix.platform }}- + - name: inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-map: | + { + "root-ccache": "/root/.ccache" + } + skip-extraction: ${{ steps.cache.outputs.cache-hit }} + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 859c754c169..76bf9d5b9dc 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -41,6 +41,9 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -49,6 +52,25 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Cache + uses: actions/cache@v3 + id: cache + with: + path: | + root-ccache + key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} + restore-keys: | + cache-${{ matrix.platform }}-${{ matrix.name }}- + cache-${{ matrix.platform }}- + - name: inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-map: | + { + "root-ccache": "/root/.ccache" + } + skip-extraction: ${{ steps.cache.outputs.cache-hit }} + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 0d44a72ed30..6af6d592294 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -58,6 +58,9 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -66,6 +69,25 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Cache + uses: actions/cache@v3 + id: cache + with: + path: | + root-ccache + key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} + restore-keys: | + cache-${{ matrix.platform }}-${{ matrix.name }}- + cache-${{ matrix.platform }}- + - name: inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-map: | + { + "root-ccache": "/root/.ccache" + } + skip-extraction: ${{ steps.cache.outputs.cache-hit }} + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index c0267f95ba4..0703ffc3daa 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -53,6 +53,9 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -61,6 +64,25 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Cache + uses: actions/cache@v3 + id: cache + with: + path: | + root-ccache + key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} + restore-keys: | + cache-${{ matrix.platform }}-${{ matrix.name }}- + cache-${{ matrix.platform }}- + - name: inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-map: | + { + "root-ccache": "/root/.ccache" + } + skip-extraction: ${{ steps.cache.outputs.cache-hit }} + - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: diff --git a/docker/Dockerfile b/docker/Dockerfile index d97b55c8cdd..89c41b96a90 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -66,8 +66,6 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG SETUP_ARGS ENV CCACHE_DIR="/var/tmp/ccache" -ENV CC="/usr/lib/ccache/gcc" -ENV CXX="/usr/lib/ccache/g++" # cspell: ignore libcu libnv # Set up development environment @@ -90,13 +88,13 @@ RUN --mount=type=ssh \ COPY --from=src-imported /autoware/src /autoware/src RUN --mount=type=cache,target=${CCACHE_DIR} \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && du -sh ${CCACHE_DIR} && ccache -s \ && colcon build --cmake-args \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ " -Wno-dev" \ " --no-warn-unused-cli" \ + --mixin release compile-commands ccache \ + && du -sh ${CCACHE_DIR} && ccache -s \ && find /autoware/install -type d -exec chmod 777 {} \; \ - && chmod -R 777 /var/tmp/ccache \ && rm -rf /autoware/build /autoware/src CMD ["/bin/bash"] From bd669035bdeff5d1bb08af69f2de1054bf8b1ed4 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 13 Jun 2024 20:04:37 +0900 Subject: [PATCH 186/380] feat(docker,ansible): revert "feat(docker,ansible): download artifacts at runtime (#4771)" (#4864) Revert "feat(docker,ansible): download artifacts at runtime (#4771)" This reverts commit e8a258fc4f455a6c57b326c3271f8e0e81fda47d. Signed-off-by: Yutaka Kondo --- ansible/playbooks/docker.yaml | 4 ---- docker/Dockerfile | 4 ++-- docker/run.sh | 14 ++------------ setup-dev-env.sh | 2 +- 4 files changed, 5 insertions(+), 19 deletions(-) diff --git a/ansible/playbooks/docker.yaml b/ansible/playbooks/docker.yaml index 443d355709a..5cc84043e27 100644 --- a/ansible/playbooks/docker.yaml +++ b/ansible/playbooks/docker.yaml @@ -24,7 +24,3 @@ when: prompt_install_nvidia == 'y' - role: autoware.dev_env.docker_engine - role: autoware.dev_env.nvidia_container_toolkit - - # ONNX files and other artifacts - - role: autoware.dev_env.artifacts - when: prompt_download_artifacts == 'y' diff --git a/docker/Dockerfile b/docker/Dockerfile index 89c41b96a90..3a960776096 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -104,7 +104,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module dev-tools openadkit \ + ./setup-dev-env.sh -y --module dev-tools --download-artifacts openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache @@ -124,7 +124,7 @@ ARG SETUP_ARGS COPY --from=src-imported /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ diff --git a/docker/run.sh b/docker/run.sh index e26bd5c4a37..ef6cbf1038a 100755 --- a/docker/run.sh +++ b/docker/run.sh @@ -20,12 +20,11 @@ fi option_no_nvidia=false option_devel=false option_headless=false -DATA_PATH="${HOME}/autoware_data" MAP_PATH="" WORKSPACE_PATH="" USER_ID="" WORKSPACE="" -DEFAULT_LAUNCH_CMD="ros2 launch autoware_launch autoware.launch.xml data_path:=/autoware_data map_path:=/autoware_map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit" +DEFAULT_LAUNCH_CMD="ros2 launch autoware_launch autoware.launch.xml map_path:=/autoware_map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit" # Function to print help message print_help() { @@ -36,7 +35,6 @@ print_help() { echo -e "${RED}Usage:${NC} run.sh [OPTIONS] [LAUNCH_CMD](optional)" echo -e "Options:" echo -e " ${GREEN}--help/-h${NC} Display this help message" - echo -e " ${GREEN}--data-path${NC} Specify to mount data files into /autoware_data" echo -e " ${GREEN}--map-path${NC} Specify to mount map files into /autoware_map (mandatory if no custom launch command is provided)" echo -e " ${GREEN}--no-nvidia${NC} Disable NVIDIA GPU support" echo -e " ${GREEN}--devel${NC} Use the latest development version of Autoware" @@ -66,10 +64,6 @@ parse_arguments() { WORKSPACE_PATH="$2" shift ;; - --data-path) - DATA_PATH="$2" - shift - ;; --map-path) MAP_PATH="$2" shift @@ -101,9 +95,6 @@ set_variables() { exit 1 fi - # Mount data path - DATA="-v ${DATA_PATH}:/autoware_data:ro" - # Mount map path if provided MAP="-v ${MAP_PATH}:/autoware_map:ro" @@ -159,7 +150,6 @@ main() { echo -e "${GREEN}\n-----------------------LAUNCHING CONTAINER-----------------------" echo -e "${GREEN}IMAGE:${NC} ${IMAGE}" - echo -e "${GREEN}DATA PATH(mounted):${NC} ${DATA_PATH}:/autoware_data" echo -e "${GREEN}MAP PATH(mounted):${NC} ${MAP_PATH}:/autoware_map" echo -e "${GREEN}WORKSPACE(mounted):${NC} ${WORKSPACE_PATH}:/workspace" echo -e "${GREEN}LAUNCH CMD:${NC} ${LAUNCH_CMD}" @@ -169,7 +159,7 @@ main() { set -x docker run -it --rm --net=host ${GPU_FLAG} ${USER_ID} ${MOUNT_X} \ -e XAUTHORITY=${XAUTHORITY} -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR -e NVIDIA_DRIVER_CAPABILITIES=all -v /etc/localtime:/etc/localtime:ro \ - ${WORKSPACE} ${DATA} ${MAP} ${IMAGE} \ + ${WORKSPACE} ${MAP} ${IMAGE} \ ${LAUNCH_CMD} } diff --git a/setup-dev-env.sh b/setup-dev-env.sh index 48afecc4444..e5cb6953f61 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -133,7 +133,7 @@ if [ "$option_yes" = "true" ] || [ "$option_download_artifacts" = "true" ]; then fi # Check downloading artifacts -if [ "$target_playbook" = "autoware.dev_env.docker" ] || [ "$target_playbook" = "autoware.dev_env.openadk" ]; then +if [ "$target_playbook" = "autoware.dev_env.openadk" ]; then if [ "$option_download_artifacts" = "true" ]; then echo -e "\e[36mArtifacts will be downloaded to $option_data_dir\e[m" ansible_args+=("--extra-vars" "prompt_download_artifacts=y") From 7738b5a7fd6be55407ee9776c923495d2c44fa64 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 14 Jun 2024 14:57:06 +0900 Subject: [PATCH 187/380] feat(ci): save cache on `build-main` workflows and only restore cache on `docker-build-and-push-main` workflows (#4865) * fix ccache_dir Signed-off-by: Yutaka Kondo * update build-main Signed-off-by: Yutaka Kondo * restore only Signed-off-by: Yutaka Kondo * reorder Signed-off-by: Yutaka Kondo * MUST REVERT Signed-off-by: Yutaka Kondo * add cache-tag-suffix arg Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * Revert "MUST REVERT" This reverts commit adced0dc54fd73e82994c830c68116f232efe46e. * Revert "Revert "MUST REVERT"" This reverts commit 7004dbe3b154badb74a2fdd1172f1749427d27a0. * Revert "Revert "Revert "MUST REVERT""" This reverts commit e6d62e4c869a54359088a9840b3ab69d51d47f54. --------- Signed-off-by: Yutaka Kondo --- .github/actions/docker-build/action.yaml | 72 +++++++++++++++++++ .github/workflows/build-main-self-hosted.yaml | 49 +++---------- .github/workflows/build-main.yaml | 49 +++---------- ...ocker-build-and-push-main-self-hosted.yaml | 10 +-- .../workflows/docker-build-and-push-main.yaml | 14 ++-- docker/Dockerfile | 2 +- 6 files changed, 101 insertions(+), 95 deletions(-) create mode 100644 .github/actions/docker-build/action.yaml diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml new file mode 100644 index 00000000000..01ad08fa7b5 --- /dev/null +++ b/.github/actions/docker-build/action.yaml @@ -0,0 +1,72 @@ +name: docker-build +description: "" + +inputs: + name: + description: "" + required: true + platform: + description: "" + required: true + cache-tag-suffix: + description: "" + required: true + build-args: + description: "" + required: true + +runs: + using: composite + steps: + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Install vcstool + run: | + sudo apt-get -y update + sudo apt-get -y install python3-pip + pip install --no-cache-dir vcstool + shell: bash + + - name: Run vcs import + run: | + mkdir src + vcs import src < autoware.repos + shell: bash + + - name: Cache + uses: actions/cache@v3 + id: cache + with: + path: | + root-ccache + key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('autoware.repos') }} + restore-keys: | + cache-${{ inputs.platform }}-${{ inputs.name }}- + cache-${{ inputs.platform }}- + + - name: Inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-map: | + { + "root-ccache": "/root/.ccache" + } + skip-extraction: ${{ steps.cache.outputs.cache-hit }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} + + - name: Run docker build + uses: docker/build-push-action@v5 + with: + file: docker/Dockerfile + context: . + push: false + build-args: ${{ inputs.build-args }} + cache-from: type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ inputs.name }}-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }} + cache-to: type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ inputs.name }}-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }},mode=max diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/build-main-self-hosted.yaml index eb178be3c27..a93cc134485 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/build-main-self-hosted.yaml @@ -4,13 +4,6 @@ on: schedule: - cron: 0 12 * * * workflow_dispatch: - inputs: - artifacts-destination: - type: choice - description: Built images will be saved as tarball - options: - - tarball - default: tarball jobs: load-env: @@ -46,9 +39,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -57,40 +47,17 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Cache - uses: actions/cache@v3 - id: cache - with: - path: | - root-ccache - key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} - restore-keys: | - cache-${{ matrix.platform }}-${{ matrix.name }}- - cache-${{ matrix.platform }}- - - name: inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.0 - with: - cache-map: | - { - "root-ccache": "/root/.ccache" - } - skip-extraction: ${{ steps.cache.outputs.cache-hit }} - - name: Build 'Autoware' - uses: ./.github/actions/docker-build-and-push + uses: ./.github/actions/docker-build with: - bake-target: autoware + name: ${{ matrix.name }} + platform: ${{ matrix.platform }} + cache-tag-suffix: main build-args: | - *.platform=linux/${{ matrix.platform }} - *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} - *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} - *.args.SETUP_ARGS=${{ matrix.setup-args }} - *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main,mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} - tag-prefix: ${{ needs.load-env.outputs.rosdistro }} - allow-push: false + ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} + SETUP_ARGS=${{ matrix.setup-args }} + LIB_DIR=${{ matrix.lib_dir }} - name: Show disk space run: | diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index 76bf9d5b9dc..249402092e7 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -4,13 +4,6 @@ on: schedule: - cron: 0 12 * * * workflow_dispatch: - inputs: - artifacts-destination: - type: choice - description: Built images will be saved as tarball - options: - - tarball - default: tarball jobs: load-env: @@ -41,9 +34,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -52,40 +42,17 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Cache - uses: actions/cache@v3 - id: cache - with: - path: | - root-ccache - key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} - restore-keys: | - cache-${{ matrix.platform }}-${{ matrix.name }}- - cache-${{ matrix.platform }}- - - name: inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.0 - with: - cache-map: | - { - "root-ccache": "/root/.ccache" - } - skip-extraction: ${{ steps.cache.outputs.cache-hit }} - - name: Build 'Autoware' - uses: ./.github/actions/docker-build-and-push + uses: ./.github/actions/docker-build with: - bake-target: autoware + name: ${{ matrix.name }} + platform: ${{ matrix.platform }} + cache-tag-suffix: main build-args: | - *.platform=linux/${{ matrix.platform }} - *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} - *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} - *.args.SETUP_ARGS=${{ matrix.setup-args }} - *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main,mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} - tag-prefix: ${{ needs.load-env.outputs.rosdistro }} - allow-push: false + ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} + SETUP_ARGS=${{ matrix.setup-args }} + LIB_DIR=${{ matrix.lib_dir }} - name: Show disk space run: | diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 6af6d592294..374d5c29a82 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -69,9 +69,8 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Cache - uses: actions/cache@v3 - id: cache + - name: Restore cache + uses: actions/cache/restore@v4 with: path: | root-ccache @@ -79,14 +78,15 @@ jobs: restore-keys: | cache-${{ matrix.platform }}-${{ matrix.name }}- cache-${{ matrix.platform }}- - - name: inject cache into docker + + - name: Inject cache into docker uses: reproducible-containers/buildkit-cache-dance@v3.1.0 with: cache-map: | { "root-ccache": "/root/.ccache" } - skip-extraction: ${{ steps.cache.outputs.cache-hit }} + skip-extraction: true - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 0703ffc3daa..69b27998f97 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -39,14 +39,14 @@ jobs: - cuda include: - name: no-cuda - base_image_env: base_image platform: amd64 + base_image_env: base_image lib_dir: x86_64 setup-args: --no-nvidia additional-tag-suffix: "" - name: cuda - base_image_env: base_image platform: amd64 + base_image_env: base_image lib_dir: x86_64 additional-tag-suffix: -cuda steps: @@ -64,9 +64,8 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Cache - uses: actions/cache@v3 - id: cache + - name: Restore cache + uses: actions/cache/restore@v4 with: path: | root-ccache @@ -74,14 +73,15 @@ jobs: restore-keys: | cache-${{ matrix.platform }}-${{ matrix.name }}- cache-${{ matrix.platform }}- - - name: inject cache into docker + + - name: Inject cache into docker uses: reproducible-containers/buildkit-cache-dance@v3.1.0 with: cache-map: | { "root-ccache": "/root/.ccache" } - skip-extraction: ${{ steps.cache.outputs.cache-hit }} + skip-extraction: true - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push diff --git a/docker/Dockerfile b/docker/Dockerfile index 3a960776096..8ada18b521e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -65,7 +65,7 @@ FROM base as prebuilt SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG SETUP_ARGS -ENV CCACHE_DIR="/var/tmp/ccache" +ENV CCACHE_DIR="/root/.ccache" # cspell: ignore libcu libnv # Set up development environment From dd1d0becf6e9f31b470997cc089c9ce510c0c5e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Jun 2024 06:11:53 +0000 Subject: [PATCH 188/380] chore(deps): bump reproducible-containers/buildkit-cache-dance from 3.1.0 to 3.1.1 (#4860) chore(deps): bump reproducible-containers/buildkit-cache-dance Bumps [reproducible-containers/buildkit-cache-dance](https://github.com/reproducible-containers/buildkit-cache-dance) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/reproducible-containers/buildkit-cache-dance/releases) - [Commits](https://github.com/reproducible-containers/buildkit-cache-dance/compare/v3.1.0...v3.1.1) --- updated-dependencies: - dependency-name: reproducible-containers/buildkit-cache-dance dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker-build-and-push-main-self-hosted.yaml | 2 +- .github/workflows/docker-build-and-push-main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 374d5c29a82..8e85b3bac28 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -80,7 +80,7 @@ jobs: cache-${{ matrix.platform }}- - name: Inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + uses: reproducible-containers/buildkit-cache-dance@v3.1.1 with: cache-map: | { diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 69b27998f97..61d18d9d6de 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -75,7 +75,7 @@ jobs: cache-${{ matrix.platform }}- - name: Inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + uses: reproducible-containers/buildkit-cache-dance@v3.1.1 with: cache-map: | { From f84afce6c161a806a21dfea5d7403ebce5f2742e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 14 Jun 2024 18:32:34 +0900 Subject: [PATCH 189/380] feat(readme): append `Autoware CI Metrics` link to `README.md` (#4872) add ci metrics link Signed-off-by: Yutaka Kondo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index efc3f8be789..cbc8e85a0f3 100644 --- a/README.md +++ b/README.md @@ -98,3 +98,4 @@ If you wish to use Autoware.AI, the previous version of Autoware based on ROS 1, - [Autoware Foundation homepage](https://www.autoware.org/) - [Support guidelines](https://autowarefoundation.github.io/autoware-documentation/main/support/support-guidelines/) +- [CI metrics](https://autowarefoundation.github.io/autoware-ci-metrics/) From 4e7f539d0739058697a73c2546d3065fb8682e70 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Fri, 14 Jun 2024 15:35:56 +0300 Subject: [PATCH 190/380] feat(docker): fix CUDA compile on devel image and improve run.sh (#4849) * modular containers PR phase1 Signed-off-by: Oguz * style(pre-commit): autofix * add download artifacts to devel and runtime image Signed-off-by: Oguz * Update docker/build.sh Co-authored-by: Yutaka Kondo * style(pre-commit): autofix * build from temp source directory and remove dangling images Signed-off-by: Oguz Ozturk * Revert "build from temp source directory and remove dangling images" This reverts commit c66a1ddf482d44ad8e05d38185a9d57038ab080f. * build containers from temp source and remove dangling images Signed-off-by: Oguz Ozturk * style(pre-commit): autofix * add vcs pull to update Signed-off-by: Oguz Ozturk * style(pre-commit): autofix --------- Signed-off-by: Oguz Signed-off-by: Oguz Ozturk Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Yutaka Kondo --- .gitignore | 3 ++ ansible/playbooks/openadkit.yaml | 4 +- docker/Dockerfile | 4 +- docker/build.sh | 27 +++++++++++ docker/docker-bake.hcl | 9 +++- docker/run.sh | 81 ++++++++++++++++++++------------ 6 files changed, 92 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 024b426a3b1..1ceb054951d 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ capture/ # Node.js node_modules/ + +# Docker build +docker/src diff --git a/ansible/playbooks/openadkit.yaml b/ansible/playbooks/openadkit.yaml index f343d9cef55..46a8757229f 100644 --- a/ansible/playbooks/openadkit.yaml +++ b/ansible/playbooks/openadkit.yaml @@ -24,6 +24,8 @@ when: module == 'base' - role: autoware.dev_env.kisak_mesa when: module == 'base' + - role: autoware.dev_env.pacmod + when: module == 'base' - role: autoware.dev_env.build_tools when: module == 'all' and install_devel=='y' @@ -34,8 +36,6 @@ when: (module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' - role: autoware.dev_env.tensorrt when: (module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' - - role: autoware.dev_env.pacmod - when: module == 'planning-control' or module == 'perception-localization' or module == 'all' # Development environment - role: autoware.dev_env.dev_tools diff --git a/docker/Dockerfile b/docker/Dockerfile index 8ada18b521e..646a894f711 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -72,9 +72,7 @@ ENV CCACHE_DIR="/root/.ccache" RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ - && find / -name 'libcu*.a' -delete \ - && find / -name 'libnv*.a' -delete + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache # Install rosdep dependencies COPY --from=src-imported /rosdep-all-depend-packages.txt /tmp/rosdep-all-depend-packages.txt diff --git a/docker/build.sh b/docker/build.sh index 3d0a417c952..5c2d3e634ee 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -97,6 +97,19 @@ load_env() { fi } +# Clone repositories +clone_repositories() { + cd "$WORKSPACE_ROOT" + if [ ! -d "docker/src" ]; then + mkdir -p docker/src + vcs import docker/src Date: Sun, 16 Jun 2024 13:34:56 +0300 Subject: [PATCH 191/380] ci(markdownlint.yaml): allow images without alt text (#4874) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .markdownlint.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.markdownlint.yaml b/.markdownlint.yaml index babaaa1f158..7b7359fe0cd 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -7,5 +7,6 @@ MD029: style: ordered MD033: false MD041: false +MD045: false MD046: false MD049: false From b757eb38740fb7fbd531af4af04288dbcf9b3ac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Wed, 19 Jun 2024 09:41:48 +0300 Subject: [PATCH 192/380] ci(docker-build-and-push): add base tag to fix failure (#4886) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .../actions/docker-build-and-push/action.yaml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 40b9ee3f022..e7586db3c99 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -54,6 +54,17 @@ runs: echo "$EOF" >> $GITHUB_OUTPUT shell: bash + - name: Docker meta for base + id: meta-base + 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-base + flavor: | + latest=false + suffix=-base + - name: Docker meta for prebuilt id: meta-prebuilt uses: docker/metadata-action@v5 @@ -77,7 +88,7 @@ runs: suffix=-devel${{ inputs.tag-suffix }} - name: Docker meta for runtime - if: ${{ github.event_name == 'workflow_dispatch' }} || ${{ (github.event_name == 'push' && github.ref_type == 'tag') }} + if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag') }} id: meta-runtime uses: docker/metadata-action@v5 with: @@ -97,12 +108,15 @@ runs: password: ${{ github.token }} - name: Build and Push to GitHub Container Registry - if: ${{ github.event_name == 'push' || github.event_name == 'schedule' || ( github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} + if: ${{ github.event_name == 'push' || + github.event_name == 'schedule' || + (github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} uses: docker/bake-action@v4 with: push: ${{ inputs.allow-push == 'true' }} files: | docker/docker-bake.hcl + ${{ steps.meta-base.outputs.bake-file }} ${{ steps.meta-prebuilt.outputs.bake-file }} ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-runtime.outputs.bake-file }} @@ -117,6 +131,7 @@ runs: push: false files: | docker/docker-bake.hcl + ${{ steps.meta-base.outputs.bake-file }} ${{ steps.meta-prebuilt.outputs.bake-file }} ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-runtime.outputs.bake-file }} From ce3e9129760e6915a0334f12de48cfe0b3837cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Wed, 19 Jun 2024 09:58:02 +0300 Subject: [PATCH 193/380] ci(docker-build-and-push-main): don't push to registry on commit to main (#4888) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/workflows/docker-build-and-push-main-self-hosted.yaml | 2 -- .github/workflows/docker-build-and-push-main.yaml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 8e85b3bac28..541b2757744 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -10,8 +10,6 @@ on: push: tags: - openadkit-v*.*.* - branches: - - main schedule: - cron: 0 0 1,15 * * workflow_dispatch: diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 61d18d9d6de..32193ef6dc1 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -10,8 +10,6 @@ on: push: tags: - openadkit-v*.*.* - branches: - - main schedule: - cron: 0 0 1,15 * * workflow_dispatch: From ebd4fe75969b2c6fc6fceb07488579fff5285f25 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 20 Jun 2024 23:50:06 +0900 Subject: [PATCH 194/380] fix(docker): fix the `src` directory in `docker/build.sh` (#4894) Signed-off-by: Yutaka Kondo --- .gitignore | 3 --- docker/build.sh | 16 +++++----------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 1ceb054951d..024b426a3b1 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,3 @@ capture/ # Node.js node_modules/ - -# Docker build -docker/src diff --git a/docker/build.sh b/docker/build.sh index 5c2d3e634ee..cdaa092c410 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -100,13 +100,13 @@ load_env() { # Clone repositories clone_repositories() { cd "$WORKSPACE_ROOT" - if [ ! -d "docker/src" ]; then - mkdir -p docker/src - vcs import docker/src Date: Fri, 21 Jun 2024 20:29:21 +0900 Subject: [PATCH 195/380] feat(ci): update `docker/bake-action` and `docker/build-push-action` versions to enable GitHub Actions build summary (#4898) * update docker actions Signed-off-by: Yutaka Kondo * update docker actions Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 4 ++-- .github/actions/docker-build/action.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index e7586db3c99..e857117b57a 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -111,7 +111,7 @@ runs: if: ${{ github.event_name == 'push' || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} - uses: docker/bake-action@v4 + uses: docker/bake-action@v5 with: push: ${{ inputs.allow-push == 'true' }} files: | @@ -126,7 +126,7 @@ runs: - name: Build only if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} - uses: docker/bake-action@v4 + uses: docker/bake-action@v5 with: push: false files: | diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 01ad08fa7b5..c4f35778214 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -62,7 +62,7 @@ runs: password: ${{ github.token }} - name: Run docker build - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: file: docker/Dockerfile context: . From 873857c55ffd0d002388ac79b09f3534e62b8342 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 24 Jun 2024 18:15:10 +0900 Subject: [PATCH 196/380] feat(ci): update `docker/login-action` to fix Node.js deprecation (#4903) update login-action Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 2 +- .github/actions/docker-build/action.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index e857117b57a..4e42577f96b 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -101,7 +101,7 @@ runs: - name: Login to GitHub Container Registry if: ${{ github.event_name != 'pull_request' }} - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index c4f35778214..84523983a0a 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -55,7 +55,7 @@ runs: skip-extraction: ${{ steps.cache.outputs.cache-hit }} - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} From b2e0b72c6f8d009748464964d1e7d0440ee95d7c Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 24 Jun 2024 23:31:05 +0900 Subject: [PATCH 197/380] feat(autoware.repos): import `autoware_lanelet2_extension` (#4912) import autoware_lanelet2_extension Signed-off-by: Yutaka Kondo --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index 9ac8154c683..4fec10c5fb8 100644 --- a/autoware.repos +++ b/autoware.repos @@ -16,6 +16,10 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_common.git version: main + core/autoware_lanelet2_extension: + type: git + url: https://github.com/autowarefoundation/autoware_lanelet2_extension.git + version: main core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git From 4ab442ab405954293d8d77e38ed1c6628899f1c4 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 25 Jun 2024 17:24:00 +0900 Subject: [PATCH 198/380] feat(autoware.repos): import `autoware_cmake` and `autoware_utils` (#4914) * import autoware_cmake and autoware_utils Signed-off-by: Yutaka Kondo * add todo Signed-off-by: Yutaka Kondo * add core prefix Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- autoware.repos | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/autoware.repos b/autoware.repos index 4fec10c5fb8..f5b4fe9e934 100644 --- a/autoware.repos +++ b/autoware.repos @@ -12,9 +12,18 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git version: main + # TODO(youtalk): Remove autoware_common when https://github.com/autowarefoundation/autoware/issues/4911 is closed core/autoware_common: type: git url: https://github.com/autowarefoundation/autoware_common.git + version: remove-autoware-cmake-utils + core/autoware_cmake: + type: git + url: https://github.com/autowarefoundation/autoware_cmake.git + version: main + core/autoware_utils: + type: git + url: https://github.com/autowarefoundation/autoware_utils.git version: main core/autoware_lanelet2_extension: type: git From ada7b8caf76f1d19a38b6da0644798c74c791702 Mon Sep 17 00:00:00 2001 From: Ryuta Kambe Date: Wed, 26 Jun 2024 23:20:34 +0900 Subject: [PATCH 199/380] chore(ci): add separate .clang-tidy-ci file (#4918) Signed-off-by: veqcc --- .clang-tidy-ci | 480 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 .clang-tidy-ci diff --git a/.clang-tidy-ci b/.clang-tidy-ci new file mode 100644 index 00000000000..04a9f8bacce --- /dev/null +++ b/.clang-tidy-ci @@ -0,0 +1,480 @@ +Checks: " + -*, + boost-use-to-string, + bugprone-argument-comment, + bugprone-assert-side-effect, + bugprone-bad-signal-to-kill-thread, + bugprone-bool-pointer-implicit-conversion, + bugprone-branch-clone, + bugprone-copy-constructor-init, + bugprone-dangling-handle, + bugprone-dynamic-static-initializers, + bugprone-exception-escape, + bugprone-fold-init-type, + bugprone-forward-declaration-namespace, + bugprone-forwarding-reference-overload, + bugprone-inaccurate-erase, + bugprone-incorrect-roundings, + bugprone-integer-division, + bugprone-lambda-function-name, + bugprone-macro-parentheses, + bugprone-macro-repeated-side-effects, + bugprone-misplaced-operator-in-strlen-in-alloc, + bugprone-misplaced-widening-cast, + bugprone-move-forwarding-reference, + bugprone-multiple-statement-macro, + bugprone-not-null-terminated-result, + bugprone-parent-virtual-call, + bugprone-posix-return, + bugprone-signed-char-misuse, + bugprone-sizeof-container, + bugprone-sizeof-expression, + bugprone-string-constructor, + bugprone-string-integer-assignment, + bugprone-string-literal-with-embedded-nul, + bugprone-suspicious-enum-usage, + bugprone-suspicious-memset-usage, + bugprone-suspicious-missing-comma, + bugprone-suspicious-semicolon, + bugprone-suspicious-string-compare, + bugprone-swapped-arguments, + bugprone-terminating-continue, + bugprone-throw-keyword-missing, + bugprone-too-small-loop-variable, + bugprone-unchecked-optional-access, + bugprone-undefined-memory-manipulation, + bugprone-undelegated-constructor, + bugprone-unhandled-self-assignment, + bugprone-unused-raii, + bugprone-unused-return-value, + bugprone-use-after-move, + bugprone-virtual-near-miss, + cppcoreguidelines-avoid-goto, + cppcoreguidelines-init-variables, + cppcoreguidelines-interfaces-global-init, + cppcoreguidelines-macro-usage, + cppcoreguidelines-narrowing-conversions, + cppcoreguidelines-no-malloc, + cppcoreguidelines-pro-bounds-pointer-arithmetic, + cppcoreguidelines-pro-type-const-cast, + cppcoreguidelines-pro-type-cstyle-cast, + cppcoreguidelines-pro-type-member-init, + cppcoreguidelines-pro-type-reinterpret-cast, + cppcoreguidelines-pro-type-static-cast-downcast, + cppcoreguidelines-pro-type-union-access, + cppcoreguidelines-slicing, + cppcoreguidelines-special-member-functions, + google-build-explicit-make-pair, + google-build-namespaces, + google-build-using-namespace, + google-explicit-constructor, + google-global-names-in-headers, + google-upgrade-googletest-case, + hicpp-exception-baseclass, + hicpp-multiway-paths-covered, + hicpp-no-assembler, + hicpp-signed-bitwise, + llvm-namespace-comment, + misc-definitions-in-headers, + misc-misplaced-const, + misc-new-delete-overloads, + misc-non-copyable-objects, + misc-redundant-expression, + misc-static-assert, + misc-throw-by-value-catch-by-reference, + misc-unconventional-assign-operator, + misc-uniqueptr-reset-release, + misc-unused-alias-decls, + misc-unused-parameters, + misc-unused-using-decls, + modernize-concat-nested-namespaces, + modernize-deprecated-headers, + modernize-deprecated-ios-base-aliases, + modernize-loop-convert, + modernize-make-shared, + modernize-make-unique, + modernize-pass-by-value, + modernize-raw-string-literal, + modernize-redundant-void-arg, + modernize-replace-auto-ptr, + modernize-replace-disallow-copy-and-assign-macro, + modernize-replace-random-shuffle, + modernize-return-braced-init-list, + modernize-shrink-to-fit, + modernize-unary-static-assert, + modernize-use-auto, + modernize-use-bool-literals, + modernize-use-default-member-init, + modernize-use-emplace, + modernize-use-equals-default, + modernize-use-equals-delete, + modernize-use-nodiscard, + modernize-use-noexcept, + modernize-use-nullptr, + modernize-use-override, + modernize-use-transparent-functors, + modernize-use-uncaught-exceptions, + modernize-use-using, + openmp-use-default-none, + performance-faster-string-find, + performance-for-range-copy, + performance-implicit-conversion-in-loop, + performance-inefficient-algorithm, + performance-inefficient-string-concatenation, + performance-inefficient-vector-operation, + performance-move-const-arg, + performance-move-constructor-init, + performance-no-automatic-move, + performance-no-int-to-ptr, + performance-noexcept-move-constructor, + performance-trivially-destructible, + performance-type-promotion-in-math-fn, + performance-unnecessary-copy-initialization, + performance-unnecessary-value-param, + portability-simd-intrinsics, + readability-const-return-type, + readability-container-size-empty, + readability-convert-member-functions-to-static, + readability-delete-null-pointer, + readability-else-after-return, + readability-function-cognitive-complexity, + readability-identifier-naming, + readability-inconsistent-declaration-parameter-name, + readability-isolate-declaration, + readability-make-member-function-const, + readability-misleading-indentation, + readability-misplaced-array-index, + readability-non-const-parameter, + readability-redundant-access-specifiers, + readability-redundant-control-flow, + readability-redundant-declaration, + readability-redundant-function-ptr-dereference, + readability-redundant-member-init, + readability-redundant-smartptr-get, + readability-redundant-string-cstr, + readability-redundant-string-init, + readability-simplify-boolean-expr, + readability-simplify-subscript-expr, + readability-static-accessed-through-instance, + readability-static-definition-in-anonymous-namespace, + readability-string-compare, + readability-uniqueptr-delete-release" + +WarningsAsErrors: " + // severity: HIGH + bugprone-dangling-handle, + bugprone-fold-init-type, + bugprone-inaccurate-erase, + // bugprone-incorrect-roundings, + // bugprone-misplaced-widening-cast, + bugprone-sizeof-container, + bugprone-sizeof-expression, + bugprone-string-constructor, + bugprone-suspicious-enum-usage, + bugprone-suspicious-memset-usage, + bugprone-suspicious-missing-comma, + bugprone-suspicious-semicolon, + bugprone-swapped-arguments, + bugprone-unchecked-optional-access, + // bugprone-unused-raii, + bugprone-use-after-move, + misc-non-copyable-objects, + misc-throw-by-value-catch-by-reference, + + // severity: MEDIUM + bugprone-assert-side-effect, + bugprone-bad-signal-to-kill-thread, + bugprone-copy-constructor-init, + bugprone-dynamic-static-initializers, + // bugprone-exception-escape, + // bugprone-integer-division, + // bugprone-macro-parentheses, + bugprone-macro-repeated-side-effects, + bugprone-misplaced-operator-in-strlen-in-alloc, + bugprone-move-forwarding-reference, + bugprone-multiple-statement-macro, + bugprone-not-null-terminated-result, + // bugprone-parent-virtual-call, + bugprone-posix-return, + // bugprone-signed-char-misuse, + bugprone-string-literal-with-embedded-nul, + bugprone-suspicious-string-compare, + bugprone-terminating-continue, + // bugprone-throw-keyword-missing, + bugprone-too-small-loop-variable, + bugprone-undefined-memory-manipulation, + bugprone-undelegated-constructor, + bugprone-unhandled-self-assignment, + bugprone-unused-return-value, + bugprone-virtual-near-miss, + // cppcoreguidelines-init-variables, + // cppcoreguidelines-narrowing-conversions, + google-build-explicit-make-pair, + google-build-namespaces, + // google-explicit-constructor, + misc-definitions-in-headers, + misc-new-delete-overloads, + misc-redundant-expression, + misc-unconventional-assign-operator, + misc-uniqueptr-reset-release, + performance-inefficient-algorithm, + // performance-move-const-arg, + performance-move-constructor-init, + performance-noexcept-move-constructor, + // readability-simplify-boolean-expr" + +HeaderFilterRegex: ^(?!\/usr)(?!\/opt) + +CheckOptions: + - key: bugprone-argument-comment.CommentBoolLiterals + value: "0" + - key: bugprone-argument-comment.CommentCharacterLiterals + value: "0" + - key: bugprone-argument-comment.CommentFloatLiterals + value: "0" + - key: bugprone-argument-comment.CommentIntegerLiterals + value: "0" + - key: bugprone-argument-comment.CommentNullPtrs + value: "0" + - key: bugprone-argument-comment.CommentStringLiterals + value: "0" + - key: bugprone-argument-comment.CommentUserDefinedLiterals + value: "0" + - key: bugprone-argument-comment.IgnoreSingleArgument + value: "0" + - key: bugprone-argument-comment.StrictMode + value: "0" + - key: bugprone-assert-side-effect.AssertMacros + value: assert + - key: bugprone-assert-side-effect.CheckFunctionCalls + value: "0" + - key: bugprone-dangling-handle.HandleClasses + value: std::basic_string_view;std::experimental::basic_string_view + - key: bugprone-dynamic-static-initializers.HeaderFileExtensions + value: ",h,hh,hpp,hxx" + - key: bugprone-exception-escape.FunctionsThatShouldNotThrow + value: "" + - key: bugprone-exception-escape.IgnoredExceptions + value: "" + - key: bugprone-misplaced-widening-cast.CheckImplicitCasts + value: "0" + - key: bugprone-not-null-terminated-result.WantToUseSafeFunctions + value: "1" + - key: bugprone-signed-char-misuse.CharTypdefsToIgnore + value: "" + - key: bugprone-sizeof-expression.WarnOnSizeOfCompareToConstant + value: "1" + - key: bugprone-sizeof-expression.WarnOnSizeOfConstant + value: "1" + - key: bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression + value: "0" + - key: bugprone-sizeof-expression.WarnOnSizeOfThis + value: "1" + - key: bugprone-string-constructor.LargeLengthThreshold + value: "8388608" + - key: bugprone-string-constructor.WarnOnLargeLength + value: "1" + - key: bugprone-suspicious-enum-usage.StrictMode + value: "0" + - key: bugprone-suspicious-missing-comma.MaxConcatenatedTokens + value: "5" + - key: bugprone-suspicious-missing-comma.RatioThreshold + value: "0.200000" + - key: bugprone-suspicious-missing-comma.SizeThreshold + value: "5" + - key: bugprone-suspicious-string-compare.StringCompareLikeFunctions + value: "" + - key: bugprone-suspicious-string-compare.WarnOnImplicitComparison + value: "1" + - key: bugprone-suspicious-string-compare.WarnOnLogicalNotComparison + value: "0" + - key: bugprone-too-small-loop-variable.MagnitudeBitsUpperLimit + value: "16" + - key: bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField + value: "1" + - key: bugprone-unused-return-value.CheckedFunctions + value: ::std::async;::std::launder;::std::remove;::std::remove_if;::std::unique;::std::unique_ptr::release;::std::basic_string::empty;::std::vector::empty + - key: cert-dcl16-c.NewSuffixes + value: L;LL;LU;LLU + - key: cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField + value: "0" + - key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors + value: "1" + - key: cppcoreguidelines-macro-usage.AllowedRegexp + value: ^DEBUG_* + - key: cppcoreguidelines-macro-usage.CheckCapsOnly + value: "0" + - key: cppcoreguidelines-macro-usage.IgnoreCommandLineMacros + value: "1" + - key: cppcoreguidelines-no-malloc.Allocations + value: ::malloc;::calloc + - key: cppcoreguidelines-no-malloc.Deallocations + value: ::free + - key: cppcoreguidelines-no-malloc.Reallocations + value: ::realloc + - key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic + value: "1" + - key: cppcoreguidelines-pro-type-member-init.IgnoreArrays + value: "0" + - key: cppcoreguidelines-pro-type-member-init.UseAssignment + value: "0" + - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions + value: "0" + - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor + value: "0" + - key: google-readability-braces-around-statements.ShortStatementLines + value: "1" + - key: google-readability-function-size.StatementThreshold + value: "800" + - key: google-readability-namespace-comments.ShortNamespaceLines + value: "10" + - key: google-readability-namespace-comments.SpacesBeforeComments + value: "2" + - key: hicpp-multiway-paths-covered.WarnOnMissingElse + value: "0" + - key: hicpp-signed-bitwise.IgnorePositiveIntegerLiterals + value: "0" + - key: misc-definitions-in-headers.HeaderFileExtensions + value: ",h,hh,hpp,hxx" + - key: misc-definitions-in-headers.UseHeaderFileExtension + value: "1" + - key: misc-throw-by-value-catch-by-reference.CheckThrowTemporaries + value: "1" + - key: misc-unused-parameters.StrictMode + value: "0" + - key: modernize-loop-convert.MaxCopySize + value: "16" + - key: modernize-loop-convert.MinConfidence + value: reasonable + - key: modernize-loop-convert.NamingStyle + value: CamelCase + - key: modernize-make-shared.IgnoreMacros + value: "1" + - key: modernize-make-shared.IncludeStyle + value: google + - key: modernize-make-shared.MakeSmartPtrFunction + value: std::make_shared + - key: modernize-make-shared.MakeSmartPtrFunctionHeader + value: memory + - key: modernize-make-unique.IgnoreMacros + value: "1" + - key: modernize-make-unique.IncludeStyle + value: google + - key: modernize-make-unique.MakeSmartPtrFunction + value: std::make_unique + - key: modernize-make-unique.MakeSmartPtrFunctionHeader + value: memory + - key: modernize-pass-by-value.IncludeStyle + value: google + - key: modernize-pass-by-value.ValuesOnly + value: "0" + - key: modernize-raw-string-literal.ReplaceShorterLiterals + value: "0" + - key: modernize-replace-auto-ptr.IncludeStyle + value: google + - key: modernize-replace-random-shuffle.IncludeStyle + value: google + - key: modernize-use-auto.MinTypeNameLength + value: "5" + - key: modernize-use-auto.RemoveStars + value: "0" + - key: modernize-use-default-member-init.IgnoreMacros + value: "1" + - key: modernize-use-default-member-init.UseAssignment + value: "0" + - key: modernize-use-emplace.ContainersWithPushBack + value: ::std::vector;::std::list;::std::deque + - key: modernize-use-emplace.SmartPointers + value: ::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr + - key: modernize-use-emplace.TupleMakeFunctions + value: ::std::make_pair;::std::make_tuple + - key: modernize-use-emplace.TupleTypes + value: ::std::pair;::std::tuple + - key: modernize-use-equals-default.IgnoreMacros + value: "1" + - key: modernize-use-equals-delete.IgnoreMacros + value: "1" + - key: modernize-use-nodiscard.ReplacementString + value: "[[nodiscard]]" + - key: modernize-use-noexcept.ReplacementString + value: "" + - key: modernize-use-noexcept.UseNoexceptFalse + value: "1" + - key: modernize-use-nullptr.NullMacros + value: "NULL" + - key: modernize-use-override.AllowOverrideAndFinal + value: "0" + - key: modernize-use-override.FinalSpelling + value: final + - key: modernize-use-override.IgnoreDestructors + value: "0" + - key: modernize-use-override.OverrideSpelling + value: override + - key: modernize-use-transparent-functors.SafeMode + value: "0" + - key: modernize-use-using.IgnoreMacros + value: "1" + - key: performance-faster-string-find.StringLikeClasses + value: std::basic_string + - key: performance-for-range-copy.AllowedTypes + value: "" + - key: performance-for-range-copy.WarnOnAllAutoCopies + value: "0" + - key: performance-inefficient-string-concatenation.StrictMode + value: "0" + - key: performance-inefficient-vector-operation.EnableProto + value: "0" + - key: performance-inefficient-vector-operation.VectorLikeClasses + value: ::std::vector + - key: performance-move-const-arg.CheckTriviallyCopyableMove + value: "1" + - key: performance-move-constructor-init.IncludeStyle + value: google + - key: performance-no-automatic-move.AllowedTypes + value: "" + - key: performance-type-promotion-in-math-fn.IncludeStyle + value: google + - key: performance-unnecessary-copy-initialization.AllowedTypes + value: "" + - key: performance-unnecessary-value-param.AllowedTypes + value: .*Ptr;.*SharedFuture + - key: performance-unnecessary-value-param.IncludeStyle + value: google + - key: portability-simd-intrinsics.Std + value: "" + - key: portability-simd-intrinsics.Suggest + value: "0" + - key: readability-function-cognitive-complexity.IgnoreMacros + value: "1" + - key: readability-else-after-return.WarnOnUnfixable + value: "1" + - key: readability-identifier-naming.NamespaceCase + value: lower_case + - key: readability-identifier-naming.ClassCase + value: CamelCase + - key: readability-identifier-naming.PrivateMemberSuffix + value: _ + - key: readability-identifier-naming.StructCase + value: CamelCase + - key: readability-identifier-naming.FunctionCase + value: lower_case + - key: readability-identifier-naming.VariableCase + value: lower_case + - key: readability-identifier-naming.GlobalConstantCase + value: lower_case + - key: readability-identifier-naming.GlobalConstantPrefix + value: g_ + - key: readability-identifier-naming.ConstexprVariableCase + value: lower_case + - key: readability-inconsistent-declaration-parameter-name.IgnoreMacros + value: "1" + - key: readability-inconsistent-declaration-parameter-name.Strict + value: "0" + - key: readability-redundant-smartptr-get.IgnoreMacros + value: "1" + - key: readability-redundant-string-init.StringNames + value: ::std::basic_string + - key: readability-simplify-subscript-expr.Types + value: ::std::basic_string;::std::basic_string_view;::std::vector;::std::array + - key: readability-static-accessed-through-instance.NameSpecifierNestingThreshold + value: "3" From f8b6b44df54f6ee7d44798a9307976de3a77e093 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 06:02:13 +0900 Subject: [PATCH 200/380] chore(deps): bump reproducible-containers/buildkit-cache-dance from 3.1.1 to 3.1.2 (#4930) chore(deps): bump reproducible-containers/buildkit-cache-dance Bumps [reproducible-containers/buildkit-cache-dance](https://github.com/reproducible-containers/buildkit-cache-dance) from 3.1.1 to 3.1.2. - [Release notes](https://github.com/reproducible-containers/buildkit-cache-dance/releases) - [Commits](https://github.com/reproducible-containers/buildkit-cache-dance/compare/v3.1.1...v3.1.2) --- updated-dependencies: - dependency-name: reproducible-containers/buildkit-cache-dance dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker-build-and-push-main-self-hosted.yaml | 2 +- .github/workflows/docker-build-and-push-main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-main-self-hosted.yaml index 541b2757744..ad2779e82cf 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-main-self-hosted.yaml @@ -78,7 +78,7 @@ jobs: cache-${{ matrix.platform }}- - name: Inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.1 + uses: reproducible-containers/buildkit-cache-dance@v3.1.2 with: cache-map: | { diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push-main.yaml index 32193ef6dc1..02bbbfb303f 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push-main.yaml @@ -73,7 +73,7 @@ jobs: cache-${{ matrix.platform }}- - name: Inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.1 + uses: reproducible-containers/buildkit-cache-dance@v3.1.2 with: cache-map: | { From 36a88eef8439fe8d7feb23f4292cbdbadc1bb525 Mon Sep 17 00:00:00 2001 From: kminoda <44218668+kminoda@users.noreply.github.com> Date: Tue, 2 Jul 2024 15:38:18 +0900 Subject: [PATCH 201/380] feat(lidar_centerpoint_tvm): remove artifacts (#4919) Signed-off-by: kminoda --- ansible/roles/artifacts/tasks/main.yaml | 45 ------------------------- 1 file changed, 45 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 54efaaea341..e693c5d9fd8 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -429,51 +429,6 @@ src: "{{ data_dir }}/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz" dest: "{{ data_dir }}/tvm_utility/models/yolo_v2_tiny" -# lidar_centerpoint_tvm -- name: Create lidar_centerpoint_tvm/models directory inside {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/lidar_centerpoint_tvm/models" - mode: "755" - state: directory - -- name: Download centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz - become: true - ansible.builtin.get_url: - url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz - dest: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz" - mode: "644" - checksum: sha256:41e19de43f30549c325968aee06b4ad0d9701220be819e79d37efdfa86b918d0 - -- name: Create centerpoint_encoder folder in lidar_centerpoint_tvm/models of {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_encoder" - mode: "755" - state: directory - -- name: Extract centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz - ansible.builtin.unarchive: - src: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_encoder-x86_64-llvm-3.0.0-20221221.tar.gz" - dest: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_encoder" - -- name: Download centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz - become: true - ansible.builtin.get_url: - url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz - dest: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz" - mode: "644" - checksum: sha256:3840b6b3590984e8115d66b12061aea3a2cfaed70b4e8d59457f04b0d6f6a1fc - -- name: Create centerpoint_backbone folder in lidar_centerpoint_tvm/models of {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_backbone" - mode: "755" - state: directory - -- name: Extract centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz - ansible.builtin.unarchive: - src: "{{ data_dir }}/lidar_centerpoint_tvm/centerpoint_backbone-x86_64-llvm-3.0.0-20221221.tar.gz" - dest: "{{ data_dir }}/lidar_centerpoint_tvm/models/centerpoint_backbone" - # lidar_apollo_segmentation_tvm - name: Create lidar_apollo_segmentation_tvm/models directory inside {{ data_dir }} ansible.builtin.file: From 6fc986e34b50892a701618f0dc8a8d75a5eff520 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 5 Jul 2024 00:08:04 +0900 Subject: [PATCH 202/380] feat(ci): save cache on `no-cuda` jobs and restore cache only on `cuda` jobs (#4945) --- .github/actions/docker-build/action.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 84523983a0a..147a1a75cf5 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -35,7 +35,8 @@ runs: shell: bash - name: Cache - uses: actions/cache@v3 + uses: actions/cache@v4 + if: ${{ inputs.name == 'no-cuda' }} id: cache with: path: | @@ -45,8 +46,19 @@ runs: cache-${{ inputs.platform }}-${{ inputs.name }}- cache-${{ inputs.platform }}- + - name: Restore cache + uses: actions/cache/restore@v4 + if: ${{ inputs.name != 'no-cuda' }} + with: + path: | + root-ccache + key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} + restore-keys: | + cache-${{ matrix.platform }}-${{ matrix.name }}- + cache-${{ matrix.platform }}- + - name: Inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + uses: reproducible-containers/buildkit-cache-dance@v3.1.2 with: cache-map: | { From 766c81b7a1a1651bec7258145e32912ed9a95d29 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 5 Jul 2024 15:46:52 +0900 Subject: [PATCH 203/380] feat(ci): rename `docker build` workflows (#4947) * cache only on no-cuda Signed-off-by: Yutaka Kondo * version up Signed-off-by: Yutaka Kondo * version up Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * rename to health-check Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- ...elf-hosted.yaml => docker-build-and-push-self-hosted.yaml} | 4 ++-- ...er-build-and-push-main.yaml => docker-build-and-push.yaml} | 4 ++-- ...ld-main-self-hosted.yaml => health-check-self-hosted.yaml} | 4 ++-- .github/workflows/{build-main.yaml => health-check.yaml} | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) rename .github/workflows/{docker-build-and-push-main-self-hosted.yaml => docker-build-and-push-self-hosted.yaml} (97%) rename .github/workflows/{docker-build-and-push-main.yaml => docker-build-and-push.yaml} (98%) rename .github/workflows/{build-main-self-hosted.yaml => health-check-self-hosted.yaml} (96%) rename .github/workflows/{build-main.yaml => health-check.yaml} (97%) diff --git a/.github/workflows/docker-build-and-push-main-self-hosted.yaml b/.github/workflows/docker-build-and-push-self-hosted.yaml similarity index 97% rename from .github/workflows/docker-build-and-push-main-self-hosted.yaml rename to .github/workflows/docker-build-and-push-self-hosted.yaml index ad2779e82cf..3dc81ddda5a 100644 --- a/.github/workflows/docker-build-and-push-main-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-self-hosted.yaml @@ -4,7 +4,7 @@ # push-branch: Build only devel and prebuilt. TAGS: date, latest # push-tag: Build all. TAGS: version, date, latest -name: docker-build-and-push-main-self-hosted +name: docker-build-and-push-self-hosted on: push: @@ -26,7 +26,7 @@ jobs: load-env: uses: ./.github/workflows/load-env.yaml - docker-build-and-push-main-self-hosted: + docker-build-and-push: needs: load-env runs-on: [self-hosted, linux, ARM64] strategy: diff --git a/.github/workflows/docker-build-and-push-main.yaml b/.github/workflows/docker-build-and-push.yaml similarity index 98% rename from .github/workflows/docker-build-and-push-main.yaml rename to .github/workflows/docker-build-and-push.yaml index 02bbbfb303f..cdaf99ec58f 100644 --- a/.github/workflows/docker-build-and-push-main.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -4,7 +4,7 @@ # push-branch: Build only devel and prebuilt. TAGS: date, latest # push-tag: Build all. TAGS: version, date, latest -name: docker-build-and-push-main +name: docker-build-and-push on: push: @@ -26,7 +26,7 @@ jobs: load-env: uses: ./.github/workflows/load-env.yaml - docker-build-and-push-main: + docker-build-and-push: needs: load-env runs-on: ubuntu-latest strategy: diff --git a/.github/workflows/build-main-self-hosted.yaml b/.github/workflows/health-check-self-hosted.yaml similarity index 96% rename from .github/workflows/build-main-self-hosted.yaml rename to .github/workflows/health-check-self-hosted.yaml index a93cc134485..d42be5c5f51 100644 --- a/.github/workflows/build-main-self-hosted.yaml +++ b/.github/workflows/health-check-self-hosted.yaml @@ -1,4 +1,4 @@ -name: build-main-self-hosted +name: health-check-self-hosted on: schedule: @@ -9,7 +9,7 @@ jobs: load-env: uses: ./.github/workflows/load-env.yaml - build-main-self-hosted: + docker-build: needs: load-env runs-on: [self-hosted, linux, ARM64] strategy: diff --git a/.github/workflows/build-main.yaml b/.github/workflows/health-check.yaml similarity index 97% rename from .github/workflows/build-main.yaml rename to .github/workflows/health-check.yaml index 249402092e7..5f75b1f52f5 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/health-check.yaml @@ -1,4 +1,4 @@ -name: build-main +name: health-check on: schedule: @@ -9,7 +9,7 @@ jobs: load-env: uses: ./.github/workflows/load-env.yaml - build-main: + docker-build: needs: load-env runs-on: ubuntu-latest strategy: From 78f680eeb8bbd588ad2556272b53250b5abe0f19 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 5 Jul 2024 16:04:17 +0900 Subject: [PATCH 204/380] refactor(ci): refactor `docker-build-and-push` action (#4948) * cache only on no-cuda Signed-off-by: Yutaka Kondo * version up Signed-off-by: Yutaka Kondo * version up Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * rename to health-check Signed-off-by: Yutaka Kondo * refactor action Signed-off-by: Yutaka Kondo * remove old comment Signed-off-by: Yutaka Kondo * revert free disk Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 28 +++++++++++++++++ .../docker-build-and-push-self-hosted.yaml | 30 ++----------------- .github/workflows/docker-build-and-push.yaml | 30 ++----------------- 3 files changed, 32 insertions(+), 56 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 4e42577f96b..bcd59551fef 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -2,6 +2,12 @@ name: docker-build-and-push description: "" inputs: + name: + description: "" + required: true + platform: + description: "" + required: true bake-target: description: "" required: true @@ -35,6 +41,28 @@ runs: vcs import src < autoware.repos shell: bash + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Restore cache + uses: actions/cache/restore@v4 + with: + path: | + root-ccache + key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('autoware.repos') }} + restore-keys: | + cache-${{ inputs.platform }}-${{ inputs.name }}- + cache-${{ inputs.platform }}- + + - name: Inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.2 + with: + cache-map: | + { + "root-ccache": "/root/.ccache" + } + skip-extraction: true + - name: Set Docker tags id: set-docker-tags run: | diff --git a/.github/workflows/docker-build-and-push-self-hosted.yaml b/.github/workflows/docker-build-and-push-self-hosted.yaml index 3dc81ddda5a..9e675a8519b 100644 --- a/.github/workflows/docker-build-and-push-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-self-hosted.yaml @@ -1,9 +1,3 @@ -# EVENTS: push, schedule, workflow_dispatch -# workflow_dispatch: Build all. No publish to registry; save as tarball. -# schedule: Build only devel and prebuilt. TAGS: date, latest -# push-branch: Build only devel and prebuilt. TAGS: date, latest -# push-tag: Build all. TAGS: version, date, latest - name: docker-build-and-push-self-hosted on: @@ -56,9 +50,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -67,28 +58,11 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Restore cache - uses: actions/cache/restore@v4 - with: - path: | - root-ccache - key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} - restore-keys: | - cache-${{ matrix.platform }}-${{ matrix.name }}- - cache-${{ matrix.platform }}- - - - name: Inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.2 - with: - cache-map: | - { - "root-ccache": "/root/.ccache" - } - skip-extraction: true - - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: + name: ${{ matrix.name }} + platform: ${{ matrix.platform }} bake-target: autoware build-args: | *.platform=linux/${{ matrix.platform }} diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index cdaf99ec58f..728bcbde64d 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -1,9 +1,3 @@ -# EVENTS: push, schedule, workflow_dispatch -# workflow_dispatch: Build all. No publish to registry; save as tarball. -# schedule: Build only devel and prebuilt. TAGS: date, latest -# push-branch: Build only devel and prebuilt. TAGS: date, latest -# push-tag: Build all. TAGS: version, date, latest - name: docker-build-and-push on: @@ -51,9 +45,6 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: @@ -62,28 +53,11 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space - - name: Restore cache - uses: actions/cache/restore@v4 - with: - path: | - root-ccache - key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} - restore-keys: | - cache-${{ matrix.platform }}-${{ matrix.name }}- - cache-${{ matrix.platform }}- - - - name: Inject cache into docker - uses: reproducible-containers/buildkit-cache-dance@v3.1.2 - with: - cache-map: | - { - "root-ccache": "/root/.ccache" - } - skip-extraction: true - - name: Build 'Autoware' uses: ./.github/actions/docker-build-and-push with: + name: ${{ matrix.name }} + platform: ${{ matrix.platform }} bake-target: autoware build-args: | *.platform=linux/${{ matrix.platform }} From 240fe869ee7b1f0debc7cd4fb14c42104b2aeca2 Mon Sep 17 00:00:00 2001 From: Max Schmeller <6088931+mojomex@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:26:56 +0900 Subject: [PATCH 205/380] chore(clang-tidy): remove deprecated/unsupported AnalyzeTemporaryDtors setting (#4960) Signed-off-by: Max SCHMELLER --- .clang-tidy | 2 -- 1 file changed, 2 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index c4533f50cce..06c54854b5d 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -202,8 +202,6 @@ WarningsAsErrors: " HeaderFilterRegex: ^(?!\/usr)(?!\/opt) -AnalyzeTemporaryDtors: false - FormatStyle: none CheckOptions: From 6afef66101133b971b8ad3677f1cfa41e22247fc Mon Sep 17 00:00:00 2001 From: Satoshi Tanaka <16330533+scepter914@users.noreply.github.com> Date: Wed, 10 Jul 2024 15:44:08 +0900 Subject: [PATCH 206/380] fix(ansible/artifacts): update transfusion model (#4959) --- ansible/roles/artifacts/tasks/main.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index e693c5d9fd8..8c82aba1293 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -169,23 +169,23 @@ - name: Download lidar_transfusion/transfusion.onnx become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/transfusion/v1/transfusion.onnx + url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/transfusion.onnx dest: "{{ data_dir }}/lidar_transfusion/transfusion.onnx" mode: "644" - checksum: sha256:8938999cf03770ffd3301027300ea2cbcf471c180450e0434121d7294c42aa0b + checksum: sha256:ad66a061d61449af671bd0d14c2c407f0d749753f17f3165287857f686c4fd1a - name: Download lidar_transfusion/transfusion.param.yaml become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/transfusion/v1/transfusion.param.yaml + url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/transfusion.param.yaml dest: "{{ data_dir }}/lidar_transfusion/transfusion.param.yaml" mode: "644" - checksum: sha256:0e18776040f14e380037ef6ecb500d1d1d151f21ff7d5c890606673f7e100e14 + checksum: sha256:fdd8dd21b7c1c0f9a15119fa6a79565f927ce8f6bac4ddf095cb7e27672cb3d8 - name: Download lidar_transfusion/detection_class_remapper.param.yaml become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/transfusion/v1/detection_class_remapper.param.yaml + url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/detection_class_remapper.param.yaml dest: "{{ data_dir }}/lidar_transfusion/detection_class_remapper.param.yaml" mode: "644" checksum: sha256:c711f8875ece9b527dfe31ffc75f8c0de2e77945ef67860a959a4e04c36772d5 From 3b343c2776632bfe30195be39219caa728b45afc Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 11 Jul 2024 15:23:08 +0900 Subject: [PATCH 207/380] feat(ci): change `ccache` cache key to update the cache more precisely (#4969) * hash cpp files Signed-off-by: Yutaka Kondo * add src prefix Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 2 +- .github/actions/docker-build/action.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index bcd59551fef..25b482bce2b 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -49,7 +49,7 @@ runs: with: path: | root-ccache - key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('autoware.repos') }} + key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | cache-${{ inputs.platform }}-${{ inputs.name }}- cache-${{ inputs.platform }}- diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 147a1a75cf5..7b36ab426a9 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -41,7 +41,7 @@ runs: with: path: | root-ccache - key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('autoware.repos') }} + key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | cache-${{ inputs.platform }}-${{ inputs.name }}- cache-${{ inputs.platform }}- @@ -52,7 +52,7 @@ runs: with: path: | root-ccache - key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('autoware.repos') }} + key: cache-${{ matrix.platform }}-${{ matrix.name }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | cache-${{ matrix.platform }}-${{ matrix.name }}- cache-${{ matrix.platform }}- From 7ec614ed3b21e4e0676b96d0dbf9b80c8a2fad7a Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 11 Jul 2024 15:24:21 +0900 Subject: [PATCH 208/380] feat(ci): make sure `tag:run-health-check` tag is present on PR to run `health-check` CI (#4962) * check tag Signed-off-by: Yutaka Kondo * run only github hosted runner Signed-off-by: Yutaka Kondo * check result Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/workflows/health-check.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/health-check.yaml b/.github/workflows/health-check.yaml index 5f75b1f52f5..0fbd76375a7 100644 --- a/.github/workflows/health-check.yaml +++ b/.github/workflows/health-check.yaml @@ -1,12 +1,25 @@ name: health-check on: + pull_request: + types: + - opened + - synchronize + - reopened + - labeled schedule: - cron: 0 12 * * * workflow_dispatch: jobs: + label-check: + uses: autowarefoundation/autoware-github-actions/.github/workflows/make-sure-label-is-present.yaml@v1 + with: + label: tag:run-health-check + load-env: + needs: label-check + if: ${{ needs.label-check.outputs.result == 'true' }} uses: ./.github/workflows/load-env.yaml docker-build: From 3654c44aa89bc23ddda01bffe1eeb4dccb7954db Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 11 Jul 2024 15:24:32 +0900 Subject: [PATCH 209/380] feat(autoware.repos): specify the tag instead of the main branch for versioning (#4963) use tag instead of main Signed-off-by: Yutaka Kondo --- autoware.repos | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/autoware.repos b/autoware.repos index f5b4fe9e934..07a30169265 100644 --- a/autoware.repos +++ b/autoware.repos @@ -3,15 +3,15 @@ repositories: core/autoware_msgs: type: git url: https://github.com/autowarefoundation/autoware_msgs.git - version: main + version: 1.1.0 core/autoware_adapi_msgs: type: git url: https://github.com/autowarefoundation/autoware_adapi_msgs.git - version: main + version: 1.3.0 core/autoware_internal_msgs: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git - version: main + version: 1.1.0 # TODO(youtalk): Remove autoware_common when https://github.com/autowarefoundation/autoware/issues/4911 is closed core/autoware_common: type: git @@ -20,15 +20,15 @@ repositories: core/autoware_cmake: type: git url: https://github.com/autowarefoundation/autoware_cmake.git - version: main + version: 1.0.0 core/autoware_utils: type: git url: https://github.com/autowarefoundation/autoware_utils.git - version: main + version: 1.0.0 core/autoware_lanelet2_extension: type: git url: https://github.com/autowarefoundation/autoware_lanelet2_extension.git - version: main + version: 0.5.0 core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git From cc26a02f461f2cceefa718f0bca666deff38cb41 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 11 Jul 2024 17:19:33 +0900 Subject: [PATCH 210/380] feat(docker,ci): cache apt archives to GitHub Actions cache (#4971) --- .../actions/docker-build-and-push/action.yaml | 23 +++++++-- .github/actions/docker-build/action.yaml | 51 +++++++++++++++---- docker/Dockerfile | 35 +++++++++---- 3 files changed, 86 insertions(+), 23 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 25b482bce2b..235b5e134fd 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -44,22 +44,37 @@ runs: - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Restore cache + - name: Restore ccache uses: actions/cache/restore@v4 with: path: | root-ccache key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | - cache-${{ inputs.platform }}-${{ inputs.name }}- - cache-${{ inputs.platform }}- + ccache-${{ inputs.platform }}-${{ inputs.name }}- + ccache-${{ inputs.platform }}- + cache-${{ inputs.platform }}-${{ inputs.name }}- # TODO(youtalk): Remove obsolete cache key + cache-${{ inputs.platform }}- # TODO(youtalk): Remove obsolete cache key + + - name: Restore apt-get + uses: actions/cache/restore@v4 + with: + path: | + var-cache-apt + var-lib-apt + key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} + restore-keys: | + apt-get-${{ inputs.platform }}-${{ inputs.name }}- + apt-get-${{ inputs.platform }}- - name: Inject cache into docker uses: reproducible-containers/buildkit-cache-dance@v3.1.2 with: cache-map: | { - "root-ccache": "/root/.ccache" + "root-ccache": "/root/.ccache", + "var-cache-apt": "/var/cache/apt", + "var-lib-apt": "/var/lib/apt" } skip-extraction: true diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 7b36ab426a9..ba369946981 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -34,37 +34,68 @@ runs: vcs import src < autoware.repos shell: bash - - name: Cache + - name: Cache ccache uses: actions/cache@v4 if: ${{ inputs.name == 'no-cuda' }} - id: cache + id: cache-ccahce with: path: | root-ccache key: cache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | - cache-${{ inputs.platform }}-${{ inputs.name }}- - cache-${{ inputs.platform }}- + ccache-${{ inputs.platform }}-${{ inputs.name }}- + ccache-${{ inputs.platform }}- + cache-${{ inputs.platform }}-${{ inputs.name }}- # TODO(youtalk): Remove obsolete cache key + cache-${{ inputs.platform }}- # TODO(youtalk): Remove obsolete cache key - - name: Restore cache + - name: Cache apt-get + uses: actions/cache@v4 + if: ${{ inputs.name == 'no-cuda' }} + id: cache-apt-get + with: + path: | + var-cache-apt + var-lib-apt + key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} + restore-keys: | + apt-get-${{ inputs.platform }}-${{ inputs.name }}- + apt-get-${{ inputs.platform }}- + + - name: Restore ccache uses: actions/cache/restore@v4 if: ${{ inputs.name != 'no-cuda' }} with: path: | root-ccache - key: cache-${{ matrix.platform }}-${{ matrix.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 }}- # TODO(youtalk): Remove obsolete cache key + cache-${{ inputs.platform }}- # TODO(youtalk): Remove obsolete cache key + + - name: Restore apt-get + uses: actions/cache/restore@v4 + if: ${{ inputs.name != 'no-cuda' }} + with: + path: | + var-cache-apt + var-lib-apt + key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} restore-keys: | - cache-${{ matrix.platform }}-${{ matrix.name }}- - cache-${{ matrix.platform }}- + apt-get-${{ inputs.platform }}-${{ inputs.name }}- + apt-get-${{ inputs.platform }}- - name: Inject cache into docker uses: reproducible-containers/buildkit-cache-dance@v3.1.2 with: cache-map: | { - "root-ccache": "/root/.ccache" + "root-ccache": "/root/.ccache", + "var-cache-apt": "/var/cache/apt", + "var-lib-apt": "/var/lib/apt" } - skip-extraction: ${{ steps.cache.outputs.cache-hit }} + skip-extraction: ${{ steps.cache-ccache.outputs.cache-hit && steps.cache-apt-get.outputs.cache-hit }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 diff --git a/docker/Dockerfile b/docker/Dockerfile index 646a894f711..cc2534c48c0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,10 +6,14 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO # Install apt packages and add GitHub to known hosts for private repositories -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ +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 +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ gosu \ ssh \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && mkdir -p ~/.ssh \ && ssh-keyscan github.com >> ~/.ssh/known_hosts @@ -20,9 +24,11 @@ WORKDIR /autoware # Set up base environment RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module base --runtime openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc # Create entrypoint @@ -37,10 +43,14 @@ COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /auto COPY ansible/ /autoware/ansible/ WORKDIR /autoware +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 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y rosdep \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + && apt-get autoremove -y && rm -rf "$HOME"/.cache # Copy repository files COPY src /autoware/src @@ -70,17 +80,20 @@ ENV CCACHE_DIR="/root/.ccache" # cspell: ignore libcu libnv # Set up development environment RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + && 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 # hadolint ignore=SC2002 -RUN --mount=type=ssh \ +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 \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + && apt-get autoremove -y && rm -rf "$HOME"/.cache # Build Autoware COPY --from=src-imported /autoware/src /autoware/src @@ -102,9 +115,11 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module dev-tools --download-artifacts openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + && apt-get autoremove -y && rm -rf "$HOME"/.cache # Create entrypoint COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh @@ -122,11 +137,13 @@ ARG SETUP_ARGS COPY --from=src-imported /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 \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-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 \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ From 2a002156ab0d0c451341eee52eb3fdb5a72364c0 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 11 Jul 2024 22:24:42 +0900 Subject: [PATCH 211/380] fix(ci): run `health-check` on schedule and workflow_dispatch events (#4974) run health-check on schedule and workflow_dispatch Signed-off-by: Yutaka Kondo --- .github/workflows/health-check.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/health-check.yaml b/.github/workflows/health-check.yaml index 0fbd76375a7..bed2d8f51a6 100644 --- a/.github/workflows/health-check.yaml +++ b/.github/workflows/health-check.yaml @@ -19,7 +19,9 @@ jobs: load-env: needs: label-check - if: ${{ needs.label-check.outputs.result == 'true' }} + if: ${{ needs.label-check.outputs.result == 'true' || + github.event_name == 'schedule' || + github.event_name == 'workflow_dispatch' }} uses: ./.github/workflows/load-env.yaml docker-build: From 0a1e1a9ca62e0bf8c7b34a67ea195d4db196ae92 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 12 Jul 2024 18:20:48 +0900 Subject: [PATCH 212/380] fix(ci): fix `ccache` cache key (#4977) --- .github/actions/docker-build-and-push/action.yaml | 5 +++-- .github/actions/docker-build/action.yaml | 12 +++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 235b5e134fd..15f12d59759 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -44,6 +44,7 @@ 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: @@ -53,8 +54,8 @@ runs: restore-keys: | ccache-${{ inputs.platform }}-${{ inputs.name }}- ccache-${{ inputs.platform }}- - cache-${{ inputs.platform }}-${{ inputs.name }}- # TODO(youtalk): Remove obsolete cache key - cache-${{ inputs.platform }}- # TODO(youtalk): Remove obsolete cache key + cache-${{ inputs.platform }}-${{ inputs.name }}- + cache-${{ inputs.platform }}- - name: Restore apt-get uses: actions/cache/restore@v4 diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index ba369946981..2f0849fb0ce 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -34,6 +34,7 @@ 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' }} @@ -41,12 +42,12 @@ runs: 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 }}- # TODO(youtalk): Remove obsolete cache key - cache-${{ inputs.platform }}- # TODO(youtalk): Remove obsolete cache key + cache-${{ inputs.platform }}-${{ inputs.name }}- + cache-${{ inputs.platform }}- - name: Cache apt-get uses: actions/cache@v4 @@ -61,6 +62,7 @@ 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' }} @@ -71,8 +73,8 @@ runs: restore-keys: | ccache-${{ inputs.platform }}-${{ inputs.name }}- ccache-${{ inputs.platform }}- - cache-${{ inputs.platform }}-${{ inputs.name }}- # TODO(youtalk): Remove obsolete cache key - cache-${{ inputs.platform }}- # TODO(youtalk): Remove obsolete cache key + cache-${{ inputs.platform }}-${{ inputs.name }}- + cache-${{ inputs.platform }}- - name: Restore apt-get uses: actions/cache/restore@v4 From a8a3270d81ecc90d66b090e51393d42eeb845fe0 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 12 Jul 2024 18:22:27 +0900 Subject: [PATCH 213/380] feat(ci): save GitHub Actions cache only on the `main` branch (#4975) update condition Signed-off-by: Yutaka Kondo --- .github/actions/docker-build/action.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 2f0849fb0ce..ed992a8a1ba 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -37,7 +37,7 @@ runs: # TODO(youtalk): Remove obsolete "cache-" restore-keys - name: Cache ccache uses: actions/cache@v4 - if: ${{ inputs.name == 'no-cuda' }} + if: ${{ inputs.name == 'no-cuda' && github.ref == 'refs/heads/main' }} id: cache-ccahce with: path: | @@ -51,7 +51,7 @@ runs: - name: Cache apt-get uses: actions/cache@v4 - if: ${{ inputs.name == 'no-cuda' }} + if: ${{ inputs.name == 'no-cuda' && github.ref == 'refs/heads/main' }} id: cache-apt-get with: path: | @@ -65,7 +65,7 @@ runs: # TODO(youtalk): Remove obsolete "cache-" restore-keys - name: Restore ccache uses: actions/cache/restore@v4 - if: ${{ inputs.name != 'no-cuda' }} + if: ${{ inputs.name != 'no-cuda' || github.ref != 'refs/heads/main' }} with: path: | root-ccache @@ -78,7 +78,7 @@ runs: - name: Restore apt-get uses: actions/cache/restore@v4 - if: ${{ inputs.name != 'no-cuda' }} + if: ${{ inputs.name != 'no-cuda' || github.ref != 'refs/heads/main' }} with: path: | var-cache-apt From 022854b1d233e1f575c95df6ef4633c4b9fd4b80 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 12 Jul 2024 10:06:33 +0000 Subject: [PATCH 214/380] ci(pre-commit-ansible): autoupdate (#4819) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index f3538d8674f..4b8210eb003 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -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: From 45c3a785a7af5792f24dae5b9a442b623f77bc07 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 16 Jul 2024 21:06:24 +0900 Subject: [PATCH 215/380] feat(docker,ci): split prebuilt stage into autoware-core and autoware-universe stages (#4961) * add autoware-core stage Signed-off-by: Yutaka Kondo * rename autoware-universe Signed-off-by: Yutaka Kondo * chage copy order Signed-off-by: Yutaka Kondo * run on pr Signed-off-by: Yutaka Kondo * remove --from Signed-off-by: Yutaka Kondo * fix copy Signed-off-by: Yutaka Kondo * update bake Signed-off-by: Yutaka Kondo * revert pr Signed-off-by: Yutaka Kondo * rename to rosdep-depend Signed-off-by: Yutaka Kondo * alphabet order Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 25 +++++-- docker/Dockerfile | 72 ++++++++++++++----- docker/docker-bake.hcl | 17 +++-- 3 files changed, 85 insertions(+), 29 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 15f12d59759..aae6a9747f2 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -109,16 +109,27 @@ 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-prebuilt + bake-target: docker-metadata-action-autoware-core flavor: | latest=false - suffix=-prebuilt${{ inputs.tag-suffix }} + 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-autoware-universe + flavor: | + latest=false + suffix=-autoware-universe${{ inputs.tag-suffix }} - name: Docker meta for devel id: meta-devel @@ -161,7 +172,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 @@ -176,7 +188,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 diff --git a/docker/Dockerfile b/docker/Dockerfile index cc2534c48c0..a1792c6efff 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -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 @@ -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 '^#' \ @@ -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 @@ -87,16 +97,15 @@ 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 \ @@ -104,13 +113,41 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ " -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 @@ -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 \ @@ -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 diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 95aa124fb4b..9e3fb6536a7 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -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" {} @@ -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" { From b57e6e1fe846b56140f73abaa2a9901d9cec5602 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 17 Jul 2024 06:25:12 +0900 Subject: [PATCH 216/380] refactor(ci): remove obsolete ccache `restore-keys` (#4992) remove obsolete restore-keys Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 5 +---- .github/actions/docker-build/action.yaml | 6 ------ 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index aae6a9747f2..4cf51296cdd 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -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 diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index ed992a8a1ba..67c2513ddc3 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -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' }} @@ -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 @@ -62,7 +59,6 @@ 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' }} @@ -73,8 +69,6 @@ runs: 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 From 720e31c64f9c76a203d3a536b371e798fd4c3daa Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 17 Jul 2024 21:43:52 +0900 Subject: [PATCH 217/380] fix(README.md): update CI report link (#4999) Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cbc8e85a0f3..af125d7015a 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,9 @@

- - Build Main CI + + health-check CI Code Coverage From d5e9bc1be95d1b7af503a9376bf0c474297122e4 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 18 Jul 2024 21:18:20 +0900 Subject: [PATCH 218/380] fix(ci): fix Docker image organization (#5002) fix image organization Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 2 +- .github/actions/docker-build/action.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 4cf51296cdd..5a9081a57b3 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -121,7 +121,7 @@ runs: id: meta-autoware-universe 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-autoware-universe flavor: | diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 67c2513ddc3..6e36e44fe6e 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -97,7 +97,7 @@ runs: uses: docker/login-action@v3 with: registry: ghcr.io - username: ${{ github.actor }} + username: ${{ github.repository_owner }} password: ${{ github.token }} - name: Run docker build From ed46a7acc930833490b7fb19f00adb4db97d70d2 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 18 Jul 2024 21:58:46 +0900 Subject: [PATCH 219/380] feat(docker,ci): push `autoware` image on "push to main branch" and "push tag" events (#4993) * wip Signed-off-by: Yutaka Kondo * fix date Signed-off-by: Yutaka Kondo * add branches Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * Revert "fix date" This reverts commit 5f3b139f1cac0e8d167598b0d8b79c9dfce41f4d. * add tags Signed-off-by: Yutaka Kondo * build only when file changed Signed-off-by: Yutaka Kondo * update condition Signed-off-by: Yutaka Kondo * fix self-hosted Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 29 ++---------------- .../docker-build-and-push-self-hosted.yaml | 30 +++++++++++-------- .github/workflows/docker-build-and-push.yaml | 30 +++++++++++-------- 3 files changed, 38 insertions(+), 51 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 5a9081a57b3..6061cb41c84 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -20,10 +20,6 @@ inputs: tag-suffix: description: "" required: false - allow-push: - description: "" - default: "true" - required: false runs: using: composite @@ -140,7 +136,6 @@ runs: suffix=-devel${{ inputs.tag-suffix }} - name: Docker meta for runtime - if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag') }} id: meta-runtime uses: docker/metadata-action@v5 with: @@ -148,11 +143,10 @@ runs: tags: ${{ steps.set-docker-tags.outputs.tags }} bake-target: docker-metadata-action-runtime flavor: | - latest=${{ github.event_name == 'push' && github.ref_type == 'tag' }} + latest=auto suffix=-runtime${{ inputs.tag-suffix }} - name: Login to GitHub Container Registry - if: ${{ github.event_name != 'pull_request' }} uses: docker/login-action@v3 with: registry: ghcr.io @@ -160,28 +154,9 @@ runs: password: ${{ github.token }} - name: Build and Push to GitHub Container Registry - if: ${{ github.event_name == 'push' || - github.event_name == 'schedule' || - (github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'registry') }} - uses: docker/bake-action@v5 - with: - push: ${{ inputs.allow-push == 'true' }} - files: | - docker/docker-bake.hcl - ${{ steps.meta-base.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 - set: | - ${{ inputs.build-args }} - - - name: Build only - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.artifacts-destination == 'tarball' }} uses: docker/bake-action@v5 with: - push: false + push: true files: | docker/docker-bake.hcl ${{ steps.meta-base.outputs.bake-file }} diff --git a/.github/workflows/docker-build-and-push-self-hosted.yaml b/.github/workflows/docker-build-and-push-self-hosted.yaml index 9e675a8519b..36ced590d21 100644 --- a/.github/workflows/docker-build-and-push-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-self-hosted.yaml @@ -2,19 +2,10 @@ name: docker-build-and-push-self-hosted on: push: + branches: + - main tags: - - openadkit-v*.*.* - schedule: - - cron: 0 0 1,15 * * workflow_dispatch: - inputs: - artifacts-destination: - type: choice - description: Destination for the artifacts - options: - - registry - - tarball - default: tarball jobs: load-env: @@ -58,7 +49,23 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v44 + with: + files: | + *.env + *.repos + .github/actions/docker-build-and-push/action.yaml + .github/workflows/docker-build-and-push*.yaml + ansible-galaxy-requirements.yaml + ansible/** + docker/** + - name: Build 'Autoware' + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} uses: ./.github/actions/docker-build-and-push with: name: ${{ matrix.name }} @@ -75,7 +82,6 @@ jobs: *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} tag-prefix: ${{ needs.load-env.outputs.rosdistro }} - allow-push: true - name: Show disk space run: | diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 728bcbde64d..4fe8759ba1a 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -2,19 +2,10 @@ name: docker-build-and-push on: push: + branches: + - main tags: - - openadkit-v*.*.* - schedule: - - cron: 0 0 1,15 * * workflow_dispatch: - inputs: - artifacts-destination: - type: choice - description: Destination for the artifacts - options: - - registry - - tarball - default: tarball jobs: load-env: @@ -53,7 +44,23 @@ jobs: - name: Free disk space uses: ./.github/actions/free-disk-space + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v44 + with: + files: | + *.env + *.repos + .github/actions/docker-build-and-push/action.yaml + .github/workflows/docker-build-and-push*.yaml + ansible-galaxy-requirements.yaml + ansible/** + docker/** + - name: Build 'Autoware' + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} uses: ./.github/actions/docker-build-and-push with: name: ${{ matrix.name }} @@ -70,7 +77,6 @@ jobs: *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} tag-prefix: ${{ needs.load-env.outputs.rosdistro }} - allow-push: true - name: Show disk space run: | From 8be95f87e31b82bc1a671f0e8d362a3cbe22cb23 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 19 Jul 2024 06:27:59 +0900 Subject: [PATCH 220/380] feat(ci,docker): disable `var-lib-apt` cache (#5004) Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 4 +--- .github/actions/docker-build/action.yaml | 5 +---- docker/Dockerfile | 7 ------- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 6061cb41c84..63b53f7b17f 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -55,7 +55,6 @@ runs: with: path: | var-cache-apt - var-lib-apt key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} restore-keys: | apt-get-${{ inputs.platform }}-${{ inputs.name }}- @@ -67,8 +66,7 @@ runs: cache-map: | { "root-ccache": "/root/.ccache", - "var-cache-apt": "/var/cache/apt", - "var-lib-apt": "/var/lib/apt" + "var-cache-apt": "/var/cache/apt" } skip-extraction: true diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 6e36e44fe6e..a49834d14b3 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -53,7 +53,6 @@ runs: with: path: | var-cache-apt - var-lib-apt key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} restore-keys: | apt-get-${{ inputs.platform }}-${{ inputs.name }}- @@ -76,7 +75,6 @@ runs: with: path: | var-cache-apt - var-lib-apt key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} restore-keys: | apt-get-${{ inputs.platform }}-${{ inputs.name }}- @@ -88,8 +86,7 @@ runs: cache-map: | { "root-ccache": "/root/.ccache", - "var-cache-apt": "/var/cache/apt", - "var-lib-apt": "/var/lib/apt" + "var-cache-apt": "/var/cache/apt" } skip-extraction: ${{ steps.cache-ccache.outputs.cache-hit && steps.cache-apt-get.outputs.cache-hit }} diff --git a/docker/Dockerfile b/docker/Dockerfile index a1792c6efff..24e2b91c2a8 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -9,7 +9,6 @@ ARG ROS_DISTRO 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 RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ gosu \ ssh \ @@ -25,7 +24,6 @@ WORKDIR /autoware # Set up base environment RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module base --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache \ @@ -46,7 +44,6 @@ 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 RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y rosdep \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache @@ -91,7 +88,6 @@ ENV CCACHE_DIR="/root/.ccache" # Set up development environment RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache @@ -100,7 +96,6 @@ RUN --mount=type=ssh \ 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-core-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ && apt-get autoremove -y && rm -rf "$HOME"/.cache @@ -153,7 +148,6 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module dev-tools --download-artifacts openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache @@ -175,7 +169,6 @@ COPY --from=rosdep-depend /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depe # hadolint ignore=SC2002 RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get update \ From eac84a4fc03c84d8c732941c19bf194f128fb3f2 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 19 Jul 2024 06:54:32 +0900 Subject: [PATCH 221/380] feat(.dockerignore): revise `.dockerignore` to correctly ignore copying unrelated files (#5009) Signed-off-by: Yutaka Kondo --- .dockerignore | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/.dockerignore b/.dockerignore index 8ae6e191434..3a5004f8199 100644 --- a/.dockerignore +++ b/.dockerignore @@ -7,11 +7,20 @@ *.md # Ignore Docker files -docker-bake.hcl +docker +!docker/etc -# Etc -*.ignore -*.lint -*.lock -*.log -*.out +# Ignore a part of files under src +src/**/.* +src/**/*.asc +src/**/*.csv +src/**/*.gif +src/**/*.md +src/**/*.pcd +src/**/*.png +src/**/*.svg + +# Ignore generated files by colcon +build +install +log From fd8503f77eb536eb606e34f6a94f32b1ce83bacb Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 23 Jul 2024 15:38:11 +0900 Subject: [PATCH 222/380] feat(ci): disable `cache-to` option to run `health-check` from forked branch (#5021) disable cache-to Signed-off-by: Yutaka Kondo --- .github/actions/docker-build/action.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index a49834d14b3..42e7307cb6f 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -105,4 +105,3 @@ runs: push: false build-args: ${{ inputs.build-args }} cache-from: type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ inputs.name }}-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }} - cache-to: type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ inputs.name }}-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }},mode=max From 79429d44401a3749cc043b523f87afa54c1579f9 Mon Sep 17 00:00:00 2001 From: beginningfan <103237402+beginningfan@users.noreply.github.com> Date: Tue, 23 Jul 2024 15:24:17 +0800 Subject: [PATCH 223/380] feat: add single lidar sensor kit (#4988) feat(autoware.repos): add single lidar sensor kit Signed-off-by: beginningfan Co-authored-by: Yutaka Kondo --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index 07a30169265..00d9f56e912 100644 --- a/autoware.repos +++ b/autoware.repos @@ -121,6 +121,10 @@ repositories: type: git url: https://github.com/autowarefoundation/awsim_labs_sensor_kit_launch.git version: main + sensor_kit/single_lidar_sensor_kit_launch: + type: git + url: https://github.com/autowarefoundation/single_lidar_sensor_kit_launch.git + version: main # vehicle vehicle/sample_vehicle_launch: type: git From 57516233b0c3ab98c91b4c2a5f92cb53d0f09643 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Tue, 23 Jul 2024 17:20:28 +0900 Subject: [PATCH 224/380] fix(docker-build): fix ccache typo (#5024) Signed-off-by: mitsudome-r --- .github/actions/docker-build/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 42e7307cb6f..de582611886 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -37,7 +37,7 @@ runs: - name: Cache ccache uses: actions/cache@v4 if: ${{ inputs.name == 'no-cuda' && github.ref == 'refs/heads/main' }} - id: cache-ccahce + id: cache-ccache with: path: | root-ccache From 89797446024a9fc15954e43dec3da50cf0295219 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 23 Jul 2024 22:13:04 +0900 Subject: [PATCH 225/380] feat(docker): no longer download artifacts on `devel` image (#5023) not download artifacts on devel Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 24e2b91c2a8..757022a02a1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -148,7 +148,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module dev-tools --download-artifacts openadkit \ + ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache From 3e7f3d4af81632107ab7d4c2ba2c32ba786b66ad Mon Sep 17 00:00:00 2001 From: Max Schmeller <6088931+mojomex@users.noreply.github.com> Date: Wed, 24 Jul 2024 20:33:27 +0900 Subject: [PATCH 226/380] chore(autoware.repos): add ros2_socketcan and change transport_drivers fork (#5008) Signed-off-by: Max SCHMELLER --- autoware.repos | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/autoware.repos b/autoware.repos index 00d9f56e912..32d11ffd5d6 100644 --- a/autoware.repos +++ b/autoware.repos @@ -104,10 +104,16 @@ repositories: type: git url: https://github.com/tier4/nebula.git version: main - sensor_component/external/transport_drivers: + # Fork of transport_drivers that enables reduction of copy operations + sensor_component/transport_drivers: type: git - url: https://github.com/MapIV/transport_drivers.git - version: boost + url: https://github.com/autowarefoundation/transport_drivers + version: mutable-buffer-in-udp-callback + # Continental compatible version of ROS 2 socket CAN + sensor_component/ros2_socketcan: + type: git + url: https://github.com/autowarefoundation/ros2_socketcan + version: feat/continental_fd # sensor_kit sensor_kit/sample_sensor_kit_launch: type: git From f1b85618378cd5a3e69a25c3d700119fd56fdee2 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 24 Jul 2024 22:27:43 +0900 Subject: [PATCH 227/380] feat(ci): remove `vcs-import` workflow (#5026) Signed-off-by: Yutaka Kondo --- .github/workflows/vcs-import.yaml | 47 ------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 .github/workflows/vcs-import.yaml diff --git a/.github/workflows/vcs-import.yaml b/.github/workflows/vcs-import.yaml deleted file mode 100644 index 235c2b19df3..00000000000 --- a/.github/workflows/vcs-import.yaml +++ /dev/null @@ -1,47 +0,0 @@ -name: vcs-import - -on: - pull_request: - workflow_dispatch: - -jobs: - load-env: - uses: ./.github/workflows/load-env.yaml - - vcs-import: - needs: load-env - runs-on: ubuntu-latest - container: ros:${{ needs.load-env.outputs.rosdistro }} - steps: - - name: Check out repository - uses: actions/checkout@v4 - - - name: Install pip for rosdep - run: | - sudo apt-get -y update - sudo apt-get -y install python3-pip - - - name: Register AutonomouStuff repository - uses: autowarefoundation/autoware-github-actions/register-autonomoustuff-repository@v1 - with: - rosdistro: ${{ needs.load-env.outputs.rosdistro }} - - - name: Set git config - uses: autowarefoundation/autoware-github-actions/set-git-config@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Run vcs import - run: | - mkdir src - vcs import src < autoware.repos - - - name: Run vcs export - run: | - vcs export --exact src || true - - - name: Run rosdep install - run: | - sudo apt-get -y update - rosdep update - DEBIAN_FRONTEND=noninteractive rosdep install -y --from-paths src --ignore-src --rosdistro ${{ needs.load-env.outputs.rosdistro }} From ede026d9dd799b5372fd20cb4d916950e1a49cb9 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 26 Jul 2024 15:39:13 +0900 Subject: [PATCH 228/380] feat(docker): copy `src` by `--mount=type=bind` instead of `COPY` (#5027) use --mount=type=bind instead of COPY Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 757022a02a1..55a0759c380 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -100,8 +100,8 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ && cat /tmp/rosdep-core-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ && apt-get autoremove -y && rm -rf "$HOME"/.cache -COPY src/core /autoware/src/core -RUN --mount=type=cache,target=${CCACHE_DIR} \ +RUN --mount=type=bind,from=rosdep-depend,source=/autoware/src/core,target=/autoware/src/core \ + --mount=type=cache,target=${CCACHE_DIR} \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && du -sh ${CCACHE_DIR} && ccache -s \ && colcon build --cmake-args \ @@ -125,13 +125,8 @@ RUN --mount=type=ssh \ && 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} \ +RUN --mount=type=bind,from=rosdep-depend,source=/autoware/src,target=/autoware/src \ + --mount=type=cache,target=${CCACHE_DIR} \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && du -sh ${CCACHE_DIR} && ccache -s \ && colcon build --cmake-args \ @@ -152,6 +147,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache +COPY src /autoware/src # Create entrypoint COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh RUN chmod +x /ros_entrypoint.sh From c3e8374079cf56b873f832721ce8b8a80e636e1d Mon Sep 17 00:00:00 2001 From: kminoda <44218668+kminoda@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:42:55 +0900 Subject: [PATCH 229/380] feat(lidar_apollo_segmentation_tvm)!: remove packages (#5022) Signed-off-by: Koji Minoda --- ansible/roles/artifacts/tasks/main.yaml | 26 ------------------------- 1 file changed, 26 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 8c82aba1293..3356431e370 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -428,29 +428,3 @@ ansible.builtin.unarchive: src: "{{ data_dir }}/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz" dest: "{{ data_dir }}/tvm_utility/models/yolo_v2_tiny" - -# lidar_apollo_segmentation_tvm -- name: Create lidar_apollo_segmentation_tvm/models directory inside {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/lidar_apollo_segmentation_tvm/models" - mode: "755" - state: directory - -- name: Download baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz - become: true - ansible.builtin.get_url: - url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz - dest: "{{ data_dir }}/lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz" - mode: "644" - checksum: sha256:4293e6196ec937d2cd5ec658e5ce70933647d2d38633a1805febb36cafd684e3 - -- name: Create baidu_cnn folder in lidar_apollo_segmentation_tvm/models of {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/lidar_apollo_segmentation_tvm/models/baidu_cnn" - mode: "755" - state: directory - -- name: Extract baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz - ansible.builtin.unarchive: - src: "{{ data_dir }}/lidar_apollo_segmentation_tvm/baidu_cnn-x86_64-llvm-3.0.0-20221221.tar.gz" - dest: "{{ data_dir }}/lidar_apollo_segmentation_tvm/models/baidu_cnn" From 4cfa28a7ce23bcee358f85252c634c0319be8ab0 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Mon, 29 Jul 2024 19:13:01 +0300 Subject: [PATCH 230/380] fix(docker): remove prebuilt tag in build.sh (#5044) remove prebuilt tag Signed-off-by: Oguz Ozturk --- docker/build.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/docker/build.sh b/docker/build.sh index cdaa092c410..4824a88e11b 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -134,7 +134,6 @@ build_images() { --set "*.args.LIB_DIR=$lib_dir" \ --set "base.tags=ghcr.io/autowarefoundation/autoware:latest-base" \ --set "devel.tags=ghcr.io/autowarefoundation/autoware:latest-devel$image_name_suffix" \ - --set "prebuilt.tags=ghcr.io/autowarefoundation/autoware:latest-prebuilt$image_name_suffix" \ --set "runtime.tags=ghcr.io/autowarefoundation/autoware:latest-runtime$image_name_suffix" \ "${targets[@]}" set +x From 811a84045bb905568636416805adf441fef13801 Mon Sep 17 00:00:00 2001 From: Amadeusz Szymko Date: Thu, 1 Aug 2024 22:57:34 +0900 Subject: [PATCH 231/380] feat(ansible): add envs to local user .bashrc (#4923) * feat(ansible): add envs to local user .bashrc Signed-off-by: Amadeusz Szymko * fix(ansible): set root privileges Signed-off-by: amadeuszsz --------- Signed-off-by: Amadeusz Szymko Signed-off-by: amadeuszsz --- ansible/roles/build_tools/tasks/main.yaml | 9 +++++++++ ansible/roles/cuda/tasks/main.yaml | 12 ++++++++++-- ansible/roles/rmw_implementation/tasks/main.yaml | 6 +++++- ansible/roles/ros2/tasks/main.yaml | 6 +++++- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/ansible/roles/build_tools/tasks/main.yaml b/ansible/roles/build_tools/tasks/main.yaml index 836501f6a94..d7ef9250235 100644 --- a/ansible/roles/build_tools/tasks/main.yaml +++ b/ansible/roles/build_tools/tasks/main.yaml @@ -13,6 +13,15 @@ create: true mode: 0644 +- name: Add CCACHE_DIR to .bashrc of local user + become: true + ansible.builtin.lineinfile: + dest: /etc/skel/.bashrc + line: export CCACHE_DIR="$HOME/.ccache" + state: present + create: true + mode: 0644 + - name: Export CC to ccache ansible.builtin.lineinfile: dest: ~/.bashrc diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index e683d90da18..796b105d2f5 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -66,20 +66,28 @@ when: cuda_install_drivers | bool - name: Add PATH to .bashrc + become: true ansible.builtin.lineinfile: - dest: ~/.bashrc + dest: "{{ item }}" line: export PATH="/usr/local/cuda/bin:$PATH" state: present create: true mode: 0644 + loop: + - ~/.bashrc + - /etc/skel/.bashrc - name: Add LD_LIBRARY_PATH to bashrc + become: true ansible.builtin.lineinfile: - dest: ~/.bashrc + dest: "{{ item }}" line: export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH" state: present create: true mode: 0644 + loop: + - ~/.bashrc + - /etc/skel/.bashrc - name: Create Vulkan directory become: true diff --git a/ansible/roles/rmw_implementation/tasks/main.yaml b/ansible/roles/rmw_implementation/tasks/main.yaml index e37b94c3146..e7f23557a0f 100644 --- a/ansible/roles/rmw_implementation/tasks/main.yaml +++ b/ansible/roles/rmw_implementation/tasks/main.yaml @@ -24,9 +24,13 @@ when: not install_result.changed - name: Add RMW_IMPLEMENTATION to .bashrc + become: true ansible.builtin.lineinfile: - dest: ~/.bashrc + dest: "{{ item }}" line: export RMW_IMPLEMENTATION={{ rmw_implementation }} state: present create: true mode: 0644 + loop: + - ~/.bashrc + - /etc/skel/.bashrc diff --git a/ansible/roles/ros2/tasks/main.yaml b/ansible/roles/ros2/tasks/main.yaml index 9ad8bb165f9..beeb4cef6b2 100644 --- a/ansible/roles/ros2/tasks/main.yaml +++ b/ansible/roles/ros2/tasks/main.yaml @@ -55,9 +55,13 @@ when: not install_result.changed - name: Add PATH to .bashrc + become: true ansible.builtin.lineinfile: - dest: ~/.bashrc + dest: "{{ item }}" line: source /opt/ros/{{ rosdistro }}/setup.bash state: present create: true mode: 0644 + loop: + - ~/.bashrc + - /etc/skel/.bashrc From 2f9cbfb0f384f73c73441cffb601acdd30305da8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Wed, 7 Aug 2024 07:10:21 +0300 Subject: [PATCH 232/380] feat(autoware.repos): remove autoware_auto_msgs (#5011) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(autoware.repos): remove autoware_auto_msgs Signed-off-by: M. Fatih Cırıt * temporarily test on my fork of ad_api_adaptor Signed-off-by: M. Fatih Cırıt * remove tier4 api adaptor Signed-off-by: Takagi, Isamu * restore adaptor Signed-off-by: Takagi, Isamu * use adaptor main branch Signed-off-by: Takagi, Isamu --------- Signed-off-by: M. Fatih Cırıt Signed-off-by: Takagi, Isamu Co-authored-by: Takagi, Isamu --- autoware.repos | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/autoware.repos b/autoware.repos index 32d11ffd5d6..705e28e67c7 100644 --- a/autoware.repos +++ b/autoware.repos @@ -33,16 +33,12 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware.core.git version: main - core/external/autoware_auto_msgs: # TODO(mfc): Remove when autoware_msgs is merged - type: git - url: https://github.com/tier4/autoware_auto_msgs.git - version: tier4/main # universe universe/autoware.universe: type: git url: https://github.com/autowarefoundation/autoware.universe.git version: main - universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Improve design/code and transfer to AWF + universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API type: git url: https://github.com/tier4/tier4_ad_api_adaptor.git version: tier4/universe From 18e73a1531ba9f9c1ed98e6994445101895d317b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 15 Aug 2024 07:12:07 +0900 Subject: [PATCH 233/380] docs(docker): describe multi-stage Dockerfile structure (#5093) * add svg Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * add devel and runtime Signed-off-by: Yutaka Kondo * refine Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docker/README.md | 40 ++++++++++ docker/img/Dockerfile.svg | 163 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 docker/img/Dockerfile.svg diff --git a/docker/README.md b/docker/README.md index a569443bf01..4e5854710be 100644 --- a/docker/README.md +++ b/docker/README.md @@ -3,3 +3,43 @@ [Open AD Kit](https://autoware.org/open-ad-kit/) offers containers for Autoware to simplify the development and deployment of Autoware and its dependencies. This directory contains scripts to build and run the containers. Detailed instructions on how to use the containers can be found in the [Open AD Kit documentation](https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/docker-installation/). + +## Multi-stage Dockerfile structure + +![](./img/Dockerfile.svg) + +### `$BASE_IMAGE` + +This is a base image of this Dockerfile. [`ros:humble-ros-base-jammy`](https://hub.docker.com/_/ros/tags?page=&page_size=&ordering=&name=humble-ros-base-jammy) will be given. + +### `base` + +This stage performs only the basic setup required for all Autoware images. + +### `rosdep-depend` + +The following three ROS dependency package list files will be generated: + +- `/rosdep-core-depend-packages.txt`: A dependency package list file for the packages under the `core` directory of `autoware.repos`. +- `/rosdep-universe-depend-packages.txt`: A dependency package list file for the packages under the `universe` directory of `autoware.repos`. +- `/rosdep-exec-depend-packages.txt`: A dependency package list file required for running Autoware. + +These files will be used in the subsequent `autoware-core`, `autoware-universe`, and `runtime` stages. + +By generating only the package list files and copying them to the subsequent stages, the dependency packages will not be reinstalled during the container build process unless the dependency packages change. + +### `autoware-core` + +This stage installs the dependency packages based on `/rosdep-core-depend-packages.txt` and build the packages under the `core` directory of `autoware.repos`. + +### `autoware-universe` + +This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the packages under the `universe` directory of `autoware.repos`. + +### `devel` + +This stage provides a [development container](https://containers.dev) to Autoware developers. By running the host's source code with volume mounting, it allows for easy building and debugging of Autoware. + +### `runtime` + +This stage is an Autoware runtime container. It only includes the dependencies given by `/rosdep-exec-depend-packages.txt`, the binaries built in the `autoware-universe` stage, and artifacts. diff --git a/docker/img/Dockerfile.svg b/docker/img/Dockerfile.svg new file mode 100644 index 00000000000..cd4341a66ec --- /dev/null +++ b/docker/img/Dockerfile.svg @@ -0,0 +1,163 @@ + + + + + + +G + + +cluster_legend + + + + +key +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  + + + +key2 +  +  +  + + + +key:e->key2:w + + + + + +key:e->key2:w + + + + + +key:e->key2:w + + + + + +external_image_0 + +$BASE_IMAGE + + + +stage_0 + +base + + + +external_image_0->stage_0 + + + + + +stage_1 + +rosdep-depend + + + +external_image_0->stage_1 + + + + + +stage_2 + +autoware-core + + + +stage_0->stage_2 + + + + + +stage_5 + +runtime + + + +stage_0->stage_5 + + + + + +stage_1->stage_2 + + + + + +stage_1->stage_2 + + + + + +stage_3 + +autoware-universe + + + +stage_1->stage_3 + + + + + +stage_1->stage_3 + + + + + +stage_1->stage_5 + + + + + +stage_2->stage_3 + + + + + +stage_4 + +devel + + + +stage_3->stage_4 + + + + + +stage_3->stage_5 + + + + + From bb573c8f32182cf9033dcc3b5e7f76c08ec2b467 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Thu, 15 Aug 2024 20:09:56 +0300 Subject: [PATCH 234/380] fix(docker): prevent artifacts being downloaded into base image everytime (#5069) prevent artifacts being downloaded into base image everytime Signed-off-by: Oguz Ozturk --- setup-dev-env.sh | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/setup-dev-env.sh b/setup-dev-env.sh index e5cb6953f61..5c8c141b6e9 100755 --- a/setup-dev-env.sh +++ b/setup-dev-env.sh @@ -127,13 +127,7 @@ else fi # Check downloading artifacts -if [ "$option_yes" = "true" ] || [ "$option_download_artifacts" = "true" ]; then - echo -e "\e[36mArtifacts will be downloaded to $option_data_dir\e[m" - ansible_args+=("--extra-vars" "prompt_download_artifacts=y") -fi - -# Check downloading artifacts -if [ "$target_playbook" = "autoware.dev_env.openadk" ]; then +if [ "$target_playbook" = "autoware.dev_env.openadkit" ]; then if [ "$option_download_artifacts" = "true" ]; then echo -e "\e[36mArtifacts will be downloaded to $option_data_dir\e[m" ansible_args+=("--extra-vars" "prompt_download_artifacts=y") From 6ce1211d2f11dafbf3c4e96a8353d9aba8c7c2b7 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 16 Aug 2024 12:09:49 +0900 Subject: [PATCH 235/380] refactor(docker): use capital `AS` (#5101) --- docker/Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 55a0759c380..bf23ebfabb7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,7 @@ # hadolint global ignore=DL3006,DL3008,DL3013 ARG BASE_IMAGE -FROM $BASE_IMAGE as base +FROM $BASE_IMAGE AS base SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -32,7 +32,7 @@ RUN --mount=type=ssh \ # Create entrypoint CMD ["/bin/bash"] -FROM $BASE_IMAGE as rosdep-depend +FROM $BASE_IMAGE AS rosdep-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -78,7 +78,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 autoware-core +FROM base AS autoware-core SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG SETUP_ARGS @@ -110,7 +110,7 @@ RUN --mount=type=bind,from=rosdep-depend,source=/autoware/src/core,target=/autow --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s -FROM autoware-core as autoware-universe +FROM autoware-core AS autoware-universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG SETUP_ARGS @@ -137,7 +137,7 @@ RUN --mount=type=bind,from=rosdep-depend,source=/autoware/src,target=/autoware/s CMD ["/bin/bash"] -FROM autoware-universe as devel +FROM autoware-universe AS devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts @@ -154,7 +154,7 @@ RUN chmod +x /ros_entrypoint.sh ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base as runtime +FROM base AS runtime SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR From ee6d9107ab8eb968369103cfc43a833f8f878394 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 19 Aug 2024 15:07:36 +0900 Subject: [PATCH 236/380] refactor(docker): minimize `hadolint` ignore (#5102) * minimize hadolint ignore Signed-off-by: Yutaka Kondo * fix sc2002 Signed-off-by: Yutaka Kondo * revert sc2002 Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index bf23ebfabb7..ff2c2a55657 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ -# hadolint global ignore=DL3006,DL3008,DL3013 ARG BASE_IMAGE +# hadolint ignore=DL3006 FROM $BASE_IMAGE AS base SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -32,6 +32,7 @@ RUN --mount=type=ssh \ # Create entrypoint CMD ["/bin/bash"] +# hadolint ignore=DL3006 FROM $BASE_IMAGE AS rosdep-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -84,7 +85,6 @@ ARG ROS_DISTRO ARG SETUP_ARGS ENV CCACHE_DIR="/root/.ccache" -# cspell: ignore libcu libnv # Set up development environment RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ From b35b75ccbd122c82be4a6dde870640646066058f Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 19 Aug 2024 18:20:29 +0900 Subject: [PATCH 237/380] fix(autoware.repos): fix the `morai_msgs` version (#5105) * fix version Signed-off-by: Yutaka Kondo * use complete hash Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- autoware.repos | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 705e28e67c7..2ba32608bfc 100644 --- a/autoware.repos +++ b/autoware.repos @@ -46,10 +46,11 @@ repositories: type: git url: https://github.com/tier4/tier4_autoware_msgs.git version: tier4/universe + # Fix the version not to merge https://github.com/MORAI-Autonomous/MORAI-ROS2_morai_msgs/pull/9 universe/external/morai_msgs: type: git url: https://github.com/MORAI-Autonomous/MORAI-ROS2_morai_msgs.git - version: main + version: e2e75fc1603a9798773e467a679edf68b448e705 universe/external/muSSP: type: git url: https://github.com/tier4/muSSP.git From 91e882937487284b279fc002e06ea323c582fd36 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 22 Aug 2024 18:44:45 +0900 Subject: [PATCH 238/380] feat(docker): install `colcon build` artifacts to `/opt/autoware` instead of `/autoware/install` (#5117) --- docker/Dockerfile | 30 +++++++++++++++++++++--------- docker/etc/ros_entrypoint.sh | 4 ++-- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index ff2c2a55657..f6c7153e2a0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -100,15 +100,18 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ && cat /tmp/rosdep-core-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ && apt-get autoremove -y && rm -rf "$HOME"/.cache -RUN --mount=type=bind,from=rosdep-depend,source=/autoware/src/core,target=/autoware/src/core \ - --mount=type=cache,target=${CCACHE_DIR} \ +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/core,target=/autoware/src/core \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && du -sh ${CCACHE_DIR} && ccache -s \ && colcon build --cmake-args \ " -Wno-dev" \ " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build FROM autoware-core AS autoware-universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -125,15 +128,25 @@ RUN --mount=type=ssh \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache # Build Autoware -RUN --mount=type=bind,from=rosdep-depend,source=/autoware/src,target=/autoware/src \ - --mount=type=cache,target=${CCACHE_DIR} \ +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/param,target=/autoware/src/param \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_component,target=/autoware/src/sensor_component \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_kit,target=/autoware/src/sensor_kit \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe,target=/autoware/src/universe \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ && du -sh ${CCACHE_DIR} && ccache -s \ && colcon build --cmake-args \ " -Wno-dev" \ " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build CMD ["/bin/bash"] @@ -147,7 +160,6 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache -COPY src /autoware/src # Create entrypoint COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh RUN chmod +x /ros_entrypoint.sh @@ -179,11 +191,11 @@ 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 --from=autoware-universe /autoware/install/ /autoware/install/ +COPY --from=autoware-universe /opt/autoware /opt/autoware # Copy bash aliases COPY docker/etc/.bash_aliases /root/.bash_aliases -RUN echo "source /autoware/install/setup.bash" > /etc/bash.bashrc +RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc # Create entrypoint COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh diff --git a/docker/etc/ros_entrypoint.sh b/docker/etc/ros_entrypoint.sh index cbe45ef3bdb..25484312db6 100644 --- a/docker/etc/ros_entrypoint.sh +++ b/docker/etc/ros_entrypoint.sh @@ -10,7 +10,7 @@ GROUP_NAME=${LOCAL_GROUP} # Check if any of the variables are empty if [[ -z $USER_ID || -z $USER_NAME || -z $GROUP_ID || -z $GROUP_NAME ]]; then source "/opt/ros/$ROS_DISTRO/setup.bash" - source /autoware/install/setup.bash + source /opt/autoware/setup.bash exec "$@" else echo "Starting with user: $USER_NAME >> UID $USER_ID, GID: $GROUP_ID" @@ -25,7 +25,7 @@ else # Source ROS2 # hadolint ignore=SC1090 source "/opt/ros/$ROS_DISTRO/setup.bash" - source /autoware/install/setup.bash + source /opt/autoware/setup.bash # Execute the command as the user exec /usr/sbin/gosu "$USER_NAME" "$@" From 025e9d17be20f6bb1221a68603df07ae1bf6e7bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 12:44:18 +0000 Subject: [PATCH 239/380] chore(deps): bump tj-actions/changed-files from 44 to 45 (#5115) Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44 to 45. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/v44...v45) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker-build-and-push-self-hosted.yaml | 2 +- .github/workflows/docker-build-and-push.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-build-and-push-self-hosted.yaml b/.github/workflows/docker-build-and-push-self-hosted.yaml index 36ced590d21..dd824cc696b 100644 --- a/.github/workflows/docker-build-and-push-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-self-hosted.yaml @@ -51,7 +51,7 @@ jobs: - name: Get changed files id: changed-files - uses: tj-actions/changed-files@v44 + uses: tj-actions/changed-files@v45 with: files: | *.env diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 4fe8759ba1a..9199634b8c2 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -46,7 +46,7 @@ jobs: - name: Get changed files id: changed-files - uses: tj-actions/changed-files@v44 + uses: tj-actions/changed-files@v45 with: files: | *.env From 490088f70957ea37e6d513ae3f344e9fe71807d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 23 Aug 2024 15:15:21 +0300 Subject: [PATCH 240/380] ci: rename self-hosted workflows to arm64 (#5121) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- ...d-push-self-hosted.yaml => docker-build-and-push-arm64.yaml} | 2 +- .../{health-check-self-hosted.yaml => health-check-arm64.yaml} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{docker-build-and-push-self-hosted.yaml => docker-build-and-push-arm64.yaml} (98%) rename .github/workflows/{health-check-self-hosted.yaml => health-check-arm64.yaml} (98%) diff --git a/.github/workflows/docker-build-and-push-self-hosted.yaml b/.github/workflows/docker-build-and-push-arm64.yaml similarity index 98% rename from .github/workflows/docker-build-and-push-self-hosted.yaml rename to .github/workflows/docker-build-and-push-arm64.yaml index dd824cc696b..9a4dcc46950 100644 --- a/.github/workflows/docker-build-and-push-self-hosted.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -1,4 +1,4 @@ -name: docker-build-and-push-self-hosted +name: docker-build-and-push-arm64 on: push: diff --git a/.github/workflows/health-check-self-hosted.yaml b/.github/workflows/health-check-arm64.yaml similarity index 98% rename from .github/workflows/health-check-self-hosted.yaml rename to .github/workflows/health-check-arm64.yaml index d42be5c5f51..e1ee8813ca6 100644 --- a/.github/workflows/health-check-self-hosted.yaml +++ b/.github/workflows/health-check-arm64.yaml @@ -1,4 +1,4 @@ -name: health-check-self-hosted +name: health-check-arm64 on: schedule: From a97afafc9a88862a206a407df59e9b2f67610347 Mon Sep 17 00:00:00 2001 From: Mamoru Sobue Date: Wed, 28 Aug 2024 18:05:08 +0900 Subject: [PATCH 241/380] chore: bump up autoware_lanelet2_extension (#5134) bump up autoware_lanelet2_extension Signed-off-by: Mamoru Sobue --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 2ba32608bfc..e9795ef8456 100644 --- a/autoware.repos +++ b/autoware.repos @@ -28,7 +28,7 @@ repositories: core/autoware_lanelet2_extension: type: git url: https://github.com/autowarefoundation/autoware_lanelet2_extension.git - version: 0.5.0 + version: 0.6.0 core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git From 99786d744302e94f5e77ee7f814fa4fce2994e24 Mon Sep 17 00:00:00 2001 From: Amadeusz Szymko Date: Tue, 3 Sep 2024 12:44:41 +0900 Subject: [PATCH 242/380] feat(ansible): update config (#5036) Signed-off-by: Amadeusz Szymko --- ansible/roles/artifacts/tasks/main.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 3356431e370..c46bf3aed2f 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -174,13 +174,13 @@ mode: "644" checksum: sha256:ad66a061d61449af671bd0d14c2c407f0d749753f17f3165287857f686c4fd1a -- name: Download lidar_transfusion/transfusion.param.yaml +- name: Download lidar_transfusion/transfusion_ml_package.param.yaml become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/transfusion.param.yaml - dest: "{{ data_dir }}/lidar_transfusion/transfusion.param.yaml" + url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/transfusion_ml_package.param.yaml + dest: "{{ data_dir }}/lidar_transfusion/transfusion_ml_package.param.yaml" mode: "644" - checksum: sha256:fdd8dd21b7c1c0f9a15119fa6a79565f927ce8f6bac4ddf095cb7e27672cb3d8 + checksum: sha256:476f7727adc17a823962f2e09ba23d40f3116c50be48361d98179d054cd131b6 - name: Download lidar_transfusion/detection_class_remapper.param.yaml become: true From 28deda860b351a6d27f78e7413362a455bc951a1 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 3 Sep 2024 19:08:24 +0900 Subject: [PATCH 243/380] feat(docker): introduce `autoware-universe-common` stage (#5157) * add universe-common stage Signed-off-by: Yutaka Kondo * create -common list Signed-off-by: Yutaka Kondo * install dummy Signed-off-by: Yutaka Kondo * Revert "create -common list" This reverts commit 0b478c19bacb9e66f2d202ba08ec53bf5dff1d12. * Revert "Revert "create -common list"" This reverts commit a682ee3347fe0bc2b8b5c783800f0d9596d5a2c5. * move launcher to universe Signed-off-by: Yutaka Kondo * reorder Signed-off-by: Yutaka Kondo * reorder Signed-off-by: Yutaka Kondo * copy 2 packages Signed-off-by: Yutaka Kondo * mount 2 packages Signed-off-by: Yutaka Kondo * add todo Signed-off-by: Yutaka Kondo * remove linefeed Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 61 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index f6c7153e2a0..440a3192bfa 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -58,6 +58,18 @@ RUN rosdep update && rosdep keys --ignore-src --from-paths src \ | sort \ > /rosdep-core-depend-packages.txt \ && cat /rosdep-core-depend-packages.txt +COPY src/universe/external /autoware/src/universe/external +COPY src/universe/autoware.universe/common /autoware/src/universe/autoware.universe/common +# TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved +COPY src/universe/autoware.universe/simulator/dummy_perception_publisher /autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher +COPY src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils /autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils +RUN rosdep keys --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-common-depend-packages.txt \ + && cat /rosdep-universe-common-depend-packages.txt COPY src/launcher /autoware/src/launcher COPY src/param /autoware/src/param COPY src/sensor_component /autoware/src/sensor_component @@ -113,10 +125,41 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build -FROM autoware-core AS autoware-universe +FROM autoware-core AS autoware-universe-common +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ENV CCACHE_DIR="/root/.ccache" + +# Install rosdep dependencies +COPY --from=rosdep-depend /rosdep-universe-common-depend-packages.txt /tmp/rosdep-universe-common-depend-packages.txt +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + apt-get update \ + && cat /tmp/rosdep-universe-common-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 + +# TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/common,target=/autoware/src/universe/autoware.universe/common \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher,target=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils,target=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/external,target=/autoware/src/universe/external \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && colcon build --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ + --mixin release compile-commands ccache \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build + +FROM autoware-universe-common AS autoware-universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO -ARG SETUP_ARGS ENV CCACHE_DIR="/root/.ccache" # Install rosdep dependencies @@ -127,14 +170,24 @@ RUN --mount=type=ssh \ && 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 # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/param,target=/autoware/src/param \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_component,target=/autoware/src/sensor_component \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_kit,target=/autoware/src/sensor_kit \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe,target=/autoware/src/universe \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/evaluator,target=/autoware/src/universe/autoware.universe/evaluator \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/localization,target=/autoware/src/universe/autoware.universe/localization \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/map,target=/autoware/src/universe/autoware.universe/map \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/vehicle,target=/autoware/src/universe/autoware.universe/vehicle \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ From d5568e061bc3c39b4d269b145aff9b749b4a1245 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 4 Sep 2024 10:55:59 +0900 Subject: [PATCH 244/380] feat(docker): install CUDA drivers in `autoware:base` image (#5159) * install cuda on base Signed-off-by: Yutaka Kondo * change suffix Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 2 +- ansible/playbooks/openadkit.yaml | 8 ++++---- docker/Dockerfile | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 63b53f7b17f..e28a7edec28 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -98,7 +98,7 @@ runs: bake-target: docker-metadata-action-base flavor: | latest=false - suffix=-base + suffix=-base${{ inputs.tag-suffix }} - name: Docker meta for autoware-core id: meta-autoware-core diff --git a/ansible/playbooks/openadkit.yaml b/ansible/playbooks/openadkit.yaml index 46a8757229f..5cfa0408d58 100644 --- a/ansible/playbooks/openadkit.yaml +++ b/ansible/playbooks/openadkit.yaml @@ -26,16 +26,16 @@ when: module == 'base' - role: autoware.dev_env.pacmod when: module == 'base' + - role: autoware.dev_env.cuda + when: module == 'base' and prompt_install_nvidia=='y' + - role: autoware.dev_env.tensorrt + when: module == 'base' and prompt_install_nvidia=='y' - role: autoware.dev_env.build_tools when: module == 'all' and install_devel=='y' # Module specific dependencies - role: autoware.dev_env.geographiclib when: module == 'perception-localization' or module == 'all' - - role: autoware.dev_env.cuda - when: (module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' - - role: autoware.dev_env.tensorrt - when: (module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' # Development environment - role: autoware.dev_env.dev_tools diff --git a/docker/Dockerfile b/docker/Dockerfile index 440a3192bfa..37546ea600f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,6 +4,7 @@ ARG BASE_IMAGE FROM $BASE_IMAGE AS base SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO +ARG SETUP_ARGS # Install apt packages and add GitHub to known hosts for private repositories RUN rm -f /etc/apt/apt.conf.d/docker-clean \ @@ -24,7 +25,7 @@ WORKDIR /autoware # Set up base environment RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module base --runtime openadkit \ + ./setup-dev-env.sh -y --module base ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc @@ -94,13 +95,12 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ FROM base AS autoware-core SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO -ARG SETUP_ARGS ENV CCACHE_DIR="/root/.ccache" # Set up development environment RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ + ./setup-dev-env.sh -y --module all openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache From 42cba8b6795553a1e72114d1dcc91af0de8870a6 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 5 Sep 2024 07:54:15 +0900 Subject: [PATCH 245/380] feat(docker): separation from `autoware-universe` stage to `autoware-universe-sensing-perception` stage (#5164) * split depend stage Signed-off-by: Yutaka Kondo * add s/p stage Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * revert rename Signed-off-by: Yutaka Kondo * Revert "revert rename" This reverts commit 789ee21e00f65cc3f09b29614e266c54d9ec9b05. * simplify rosdep-depend Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 37546ea600f..f053916daea 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -59,6 +59,7 @@ RUN rosdep update && rosdep keys --ignore-src --from-paths src \ | sort \ > /rosdep-core-depend-packages.txt \ && cat /rosdep-core-depend-packages.txt + COPY src/universe/external /autoware/src/universe/external COPY src/universe/autoware.universe/common /autoware/src/universe/autoware.universe/common # TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved @@ -71,6 +72,17 @@ RUN rosdep keys --ignore-src --from-paths src \ | sort \ > /rosdep-universe-common-depend-packages.txt \ && cat /rosdep-universe-common-depend-packages.txt + +COPY src/universe/autoware.universe/perception /autoware/src/universe/autoware.universe/perception +COPY src/universe/autoware.universe/sensing /autoware/src/universe/autoware.universe/sensing +RUN rosdep keys --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-sensing-perception-depend-packages.txt \ + && cat /rosdep-universe-sensing-perception-depend-packages.txt + COPY src/launcher /autoware/src/launcher COPY src/param /autoware/src/param COPY src/sensor_component /autoware/src/sensor_component @@ -84,6 +96,7 @@ RUN rosdep keys --ignore-src --from-paths src \ | 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 '^#' \ @@ -157,6 +170,37 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build +FROM autoware-universe-common AS autoware-universe-sensing-perception +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ENV CCACHE_DIR="/root/.ccache" + +# Install rosdep dependencies +COPY --from=rosdep-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-depend-packages.txt +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + apt-get update \ + && cat /tmp/rosdep-universe-sensing-perception-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 + +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \ + --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && colcon build --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ + --mixin release compile-commands ccache \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build + +CMD ["/bin/bash"] + FROM autoware-universe-common AS autoware-universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -170,6 +214,7 @@ RUN --mount=type=ssh \ && 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 +COPY --from=autoware-universe-sensing-perception /opt/autoware /opt/autoware # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ @@ -181,9 +226,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/localization,target=/autoware/src/universe/autoware.universe/localization \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/map,target=/autoware/src/universe/autoware.universe/map \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \ From e3fa138444a6d054e99c14825cac55fd5d639a65 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 5 Sep 2024 15:09:12 +0900 Subject: [PATCH 246/380] feat(docker): rename multi-stages (#5170) * rename stages Signed-off-by: Yutaka Kondo * fix bake Signed-off-by: Yutaka Kondo * fix dockerfile Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 34 +++++++++---------- docker/Dockerfile | 16 ++++----- docker/docker-bake.hcl | 26 +++++++------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index e28a7edec28..24d564f6e8b 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -89,7 +89,7 @@ runs: echo "$EOF" >> $GITHUB_OUTPUT shell: bash - - name: Docker meta for base + - name: Docker meta for autoware:base id: meta-base uses: docker/metadata-action@v5 with: @@ -100,29 +100,29 @@ runs: latest=false suffix=-base${{ inputs.tag-suffix }} - - name: Docker meta for autoware-core - id: meta-autoware-core + - name: Docker meta for autoware:core-devel + id: meta-core-devel 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 + bake-target: docker-metadata-action-core-devel flavor: | latest=false - suffix=-autoware-core${{ inputs.tag-suffix }} + suffix=-core-devel${{ inputs.tag-suffix }} - - name: Docker meta for autoware-universe - id: meta-autoware-universe + - name: Docker meta for autoware:universe-devel + id: meta-universe-devel 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-universe + bake-target: docker-metadata-action-universe-devel flavor: | latest=false - suffix=-autoware-universe${{ inputs.tag-suffix }} + suffix=-universe-devel${{ inputs.tag-suffix }} - - name: Docker meta for devel + - name: Docker meta for autoware:devel id: meta-devel uses: docker/metadata-action@v5 with: @@ -133,16 +133,16 @@ runs: latest=false suffix=-devel${{ inputs.tag-suffix }} - - name: Docker meta for runtime - id: meta-runtime + - name: Docker meta for autoware:universe + id: meta-universe 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-runtime + bake-target: docker-metadata-action-universe flavor: | latest=auto - suffix=-runtime${{ inputs.tag-suffix }} + suffix=-universe${{ inputs.tag-suffix }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 @@ -158,10 +158,10 @@ runs: files: | docker/docker-bake.hcl ${{ steps.meta-base.outputs.bake-file }} - ${{ steps.meta-autoware-core.outputs.bake-file }} - ${{ steps.meta-autoware-universe.outputs.bake-file }} + ${{ steps.meta-core-devel.outputs.bake-file }} + ${{ steps.meta-universe-devel.outputs.bake-file }} ${{ steps.meta-devel.outputs.bake-file }} - ${{ steps.meta-runtime.outputs.bake-file }} + ${{ steps.meta-universe.outputs.bake-file }} provenance: false set: | ${{ inputs.build-args }} diff --git a/docker/Dockerfile b/docker/Dockerfile index f053916daea..a346470a029 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -105,7 +105,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 autoware-core +FROM base AS core-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" @@ -138,7 +138,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build -FROM autoware-core AS autoware-universe-common +FROM core-devel AS universe-common-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" @@ -170,7 +170,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build -FROM autoware-universe-common AS autoware-universe-sensing-perception +FROM universe-common-devel AS universe-sensing-perception-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" @@ -201,7 +201,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ CMD ["/bin/bash"] -FROM autoware-universe-common AS autoware-universe +FROM universe-common-devel AS universe-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" @@ -214,7 +214,7 @@ RUN --mount=type=ssh \ && 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 -COPY --from=autoware-universe-sensing-perception /opt/autoware /opt/autoware +COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ @@ -246,7 +246,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ CMD ["/bin/bash"] -FROM autoware-universe AS devel +FROM universe-devel AS devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Install development tools and artifacts @@ -262,7 +262,7 @@ RUN chmod +x /ros_entrypoint.sh ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base AS runtime +FROM base AS universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR @@ -287,7 +287,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 --from=autoware-universe /opt/autoware /opt/autoware +COPY --from=universe-devel /opt/autoware /opt/autoware # Copy bash aliases COPY docker/etc/.bash_aliases /root/.bash_aliases diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 9e3fb6536a7..978f622fadb 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -1,13 +1,13 @@ group "default" { - targets = ["base", "autoware-core", "autoware-universe", "devel", "runtime"] + targets = ["base", "core-devel", "universe-devel", "devel", "universe"] } // For docker/metadata-action target "docker-metadata-action-base" {} -target "docker-metadata-action-autoware-core" {} -target "docker-metadata-action-autoware-universe" {} +target "docker-metadata-action-core-devel" {} +target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-devel" {} -target "docker-metadata-action-runtime" {} +target "docker-metadata-action-universe" {} target "base" { inherits = ["docker-metadata-action-base"] @@ -15,16 +15,16 @@ target "base" { target = "base" } -target "autoware-core" { - inherits = ["docker-metadata-action-autoware-core"] +target "core-devel" { + inherits = ["docker-metadata-action-core-devel"] dockerfile = "docker/Dockerfile" - target = "autoware-core" + target = "core-devel" } -target "autoware-universe" { - inherits = ["docker-metadata-action-autoware-universe"] +target "universe-devel" { + inherits = ["docker-metadata-action-universe-devel"] dockerfile = "docker/Dockerfile" - target = "autoware-universe" + target = "universe-devel" } target "devel" { @@ -33,8 +33,8 @@ target "devel" { target = "devel" } -target "runtime" { - inherits = ["docker-metadata-action-runtime"] +target "universe" { + inherits = ["docker-metadata-action-universe"] dockerfile = "docker/Dockerfile" - target = "runtime" + target = "universe" } From ca34d2896426747c64ab3d69e7b717e71d4d4c11 Mon Sep 17 00:00:00 2001 From: beyzanurkaya <32412808+beyzanurkaya@users.noreply.github.com> Date: Thu, 5 Sep 2024 10:41:19 +0300 Subject: [PATCH 247/380] feat(autoware.repos): add awsim_labs_vehicle_launch to autoware.repos (#5166) Signed-off-by: beyza --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index e9795ef8456..9abd0d21826 100644 --- a/autoware.repos +++ b/autoware.repos @@ -133,6 +133,10 @@ repositories: type: git url: https://github.com/autowarefoundation/sample_vehicle_launch.git version: main + vehicle/awsim_labs_vehicle_launch: + type: git + url: https://github.com/autowarefoundation/awsim_labs_vehicle_launch.git + version: main vehicle/external/pacmod_interface: type: git url: https://github.com/tier4/pacmod_interface.git From 7148b7769cc26c60410bba2aa49d18d058e886c4 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 5 Sep 2024 20:29:37 +0900 Subject: [PATCH 248/380] feat(docker): no longer support `devel` image (#5171) --- .../actions/docker-build-and-push/action.yaml | 12 ------- docker/Dockerfile | 33 ++++++++----------- docker/docker-bake.hcl | 9 +---- 3 files changed, 14 insertions(+), 40 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 24d564f6e8b..1dda6a4439f 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -122,17 +122,6 @@ runs: latest=false suffix=-universe-devel${{ inputs.tag-suffix }} - - name: Docker meta for autoware:devel - id: meta-devel - 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-devel - flavor: | - latest=false - suffix=-devel${{ inputs.tag-suffix }} - - name: Docker meta for autoware:universe id: meta-universe uses: docker/metadata-action@v5 @@ -160,7 +149,6 @@ runs: ${{ steps.meta-base.outputs.bake-file }} ${{ steps.meta-core-devel.outputs.bake-file }} ${{ steps.meta-universe-devel.outputs.bake-file }} - ${{ steps.meta-devel.outputs.bake-file }} ${{ steps.meta-universe.outputs.bake-file }} provenance: false set: | diff --git a/docker/Dockerfile b/docker/Dockerfile index a346470a029..8f62a41003b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -31,6 +31,9 @@ RUN --mount=type=ssh \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc # Create entrypoint +COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh +RUN chmod +x /ros_entrypoint.sh +ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] # hadolint ignore=DL3006 @@ -110,10 +113,11 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" -# Set up development environment +# Set up development environment and tools RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ ./setup-dev-env.sh -y --module all openadkit \ + && ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache @@ -138,6 +142,9 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM core-devel AS universe-common-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -170,6 +177,9 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM universe-common-devel AS universe-sensing-perception-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -199,6 +209,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build +ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] FROM universe-common-devel AS universe-devel @@ -244,21 +255,6 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build -CMD ["/bin/bash"] - -FROM universe-devel AS devel -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -# Install development tools and artifacts -RUN --mount=type=ssh \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module dev-tools openadkit \ - && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache - -# Create entrypoint -COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh -RUN chmod +x /ros_entrypoint.sh ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -293,8 +289,5 @@ COPY --from=universe-devel /opt/autoware /opt/autoware COPY docker/etc/.bash_aliases /root/.bash_aliases RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc -# Create entrypoint -COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh -RUN chmod +x /ros_entrypoint.sh ENTRYPOINT ["/ros_entrypoint.sh"] -CMD ["bash"] +CMD ["/bin/bash"] diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 978f622fadb..7e48cbf8b1d 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -1,12 +1,11 @@ group "default" { - targets = ["base", "core-devel", "universe-devel", "devel", "universe"] + targets = ["base", "core-devel", "universe-devel", "universe"] } // For docker/metadata-action target "docker-metadata-action-base" {} target "docker-metadata-action-core-devel" {} target "docker-metadata-action-universe-devel" {} -target "docker-metadata-action-devel" {} target "docker-metadata-action-universe" {} target "base" { @@ -27,12 +26,6 @@ target "universe-devel" { target = "universe-devel" } -target "devel" { - inherits = ["docker-metadata-action-devel"] - dockerfile = "docker/Dockerfile" - target = "devel" -} - target "universe" { inherits = ["docker-metadata-action-universe"] dockerfile = "docker/Dockerfile" From 7a3def539d7e6721c9c82b3ef2c999e87370e0b3 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 6 Sep 2024 13:57:38 +0900 Subject: [PATCH 249/380] feat(docker): add `universe-sensing-perception` runtime stage (#5172) * rename stages Signed-off-by: Yutaka Kondo * update docker-bake Signed-off-by: Yutaka Kondo * update actions Signed-off-by: Yutaka Kondo * fix target Signed-off-by: Yutaka Kondo * fix inherits Signed-off-by: Yutaka Kondo * feat(docker): separation from `autoware-universe` stage to `autoware-universe-sensing-perception` stage (#5164) * split depend stage Signed-off-by: Yutaka Kondo * add s/p stage Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * revert rename Signed-off-by: Yutaka Kondo * Revert "revert rename" This reverts commit 789ee21e00f65cc3f09b29614e266c54d9ec9b05. * simplify rosdep-depend Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo * fix rebase Signed-off-by: Yutaka Kondo * rename stages Signed-off-by: Yutaka Kondo * fix bake Signed-off-by: Yutaka Kondo * fix dockerfile Signed-off-by: Yutaka Kondo * fix merge Signed-off-by: Yutaka Kondo * add universe-sensing-perception stage Signed-off-by: Yutaka Kondo * update config Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 24 +++++++++++ docker/Dockerfile | 41 +++++++++++++++++++ docker/docker-bake.hcl | 23 ++++++++++- 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 1dda6a4439f..a4e158fbff9 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -111,6 +111,28 @@ runs: latest=false suffix=-core-devel${{ inputs.tag-suffix }} + - name: Docker meta for autoware:universe-sensing-perception-devel + id: meta-universe-sensing-perception-devel + 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-universe-sensing-perception-devel + flavor: | + latest=false + suffix=-universe-sensing-perception-devel${{ inputs.tag-suffix }} + + - name: Docker meta for autoware:universe-sensing-perception + id: meta-universe-sensing-perception + 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-universe-sensing-perception + flavor: | + latest=false + suffix=-universe-sensing-perception${{ inputs.tag-suffix }} + - name: Docker meta for autoware:universe-devel id: meta-universe-devel uses: docker/metadata-action@v5 @@ -148,6 +170,8 @@ runs: docker/docker-bake.hcl ${{ steps.meta-base.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 }} ${{ steps.meta-universe-devel.outputs.bake-file }} ${{ steps.meta-universe.outputs.bake-file }} provenance: false diff --git a/docker/Dockerfile b/docker/Dockerfile index 8f62a41003b..9e62ce5a02e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -85,6 +85,13 @@ RUN rosdep keys --ignore-src --from-paths src \ | sort \ > /rosdep-universe-sensing-perception-depend-packages.txt \ && cat /rosdep-universe-sensing-perception-depend-packages.txt +RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-sensing-perception-exec-depend-packages.txt \ + && cat /rosdep-universe-sensing-perception-exec-depend-packages.txt COPY src/launcher /autoware/src/launcher COPY src/param /autoware/src/param @@ -258,6 +265,40 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM base AS universe-sensing-perception +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR +ARG SETUP_ARGS + +# Set up runtime environment and artifacts +COPY --from=rosdep-depend /rosdep-universe-sensing-perception-exec-depend-packages.txt /tmp/rosdep-universe-sensing-perception-exec-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 ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get update \ + && cat /tmp/rosdep-universe-sensing-perception-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ + && find / -name "*.o" -type f -delete \ + && find / -name "*.h" -type f -delete \ + && find / -name "*.hpp" -type f -delete \ + && rm -rf /autoware/ansible \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + /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 --from=universe-sensing-perception-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"] + FROM base AS universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 7e48cbf8b1d..4360c907329 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -1,10 +1,19 @@ group "default" { - targets = ["base", "core-devel", "universe-devel", "universe"] + targets = [ + "base", + "core-devel", + "universe-sensing-perception-devel", + "universe-sensing-perception", + "universe-devel", + "universe" + ] } // For docker/metadata-action target "docker-metadata-action-base" {} target "docker-metadata-action-core-devel" {} +target "docker-metadata-action-universe-sensing-perception-devel" {} +target "docker-metadata-action-universe-sensing-perception" {} target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-universe" {} @@ -20,6 +29,18 @@ target "core-devel" { target = "core-devel" } +target "universe-sensing-perception-devel" { + inherits = ["docker-metadata-action-universe-sensing-perception-devel"] + dockerfile = "docker/Dockerfile" + target = "universe-sensing-perception-devel" +} + +target "universe-sensing-perception" { + inherits = ["docker-metadata-action-universe-sensing-perception"] + dockerfile = "docker/Dockerfile" + target = "universe-sensing-perception" +} + target "universe-devel" { inherits = ["docker-metadata-action-universe-devel"] dockerfile = "docker/Dockerfile" From 4ab9f446ffea23b18e173a0df558872980499a91 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 6 Sep 2024 17:33:42 +0900 Subject: [PATCH 250/380] docs(docker): update `docker/README.md` (#5185) * mv svg Signed-off-by: Yutaka Kondo * update svg Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * fix dir Signed-off-by: Yutaka Kondo * complete Signed-off-by: Yutaka Kondo * improve Signed-off-by: Yutaka Kondo * typo Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile.svg | 209 ++++++++++++++++++++++++++++++++++++++ docker/README.md | 64 +++++++++--- docker/img/Dockerfile.svg | 163 ----------------------------- 3 files changed, 259 insertions(+), 177 deletions(-) create mode 100644 docker/Dockerfile.svg delete mode 100644 docker/img/Dockerfile.svg diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg new file mode 100644 index 00000000000..82bdf254968 --- /dev/null +++ b/docker/Dockerfile.svg @@ -0,0 +1,209 @@ + + + + + + +G + + +cluster_legend + + + + +key +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  + + + +key2 +  +  +  + + + +key:e->key2:w + + + + + +key:e->key2:w + + + + + +key:e->key2:w + + + + + +external_image_0 + +$BASE_IMAGE + + + +stage_0 + +base + + + +external_image_0->stage_0 + + + + + +stage_1 + +rosdep-depend + + + +external_image_0->stage_1 + + + + + +stage_2 + +core-devel + + + +stage_0->stage_2 + + + + + +stage_6 + +universe-sensing-perception + + + +stage_0->stage_6 + + + + + + +stage_7 + +universe + + + +stage_0->stage_7 + + + + + +stage_1->stage_2 + + + + + +stage_1->stage_6 + + + + + +stage_1->stage_7 + + + + + + + + +stage_3 + +universe-common-devel + + + +stage_1->stage_3 + + + + + +stage_4 + +universe-sensing-perception-devel + + + +stage_1->stage_4 + + + + + +stage_5 + +universe-devel + + + +stage_1->stage_5 + + + + + +stage_2->stage_3 + + + + + +stage_3->stage_4 + + + + + +stage_3->stage_5 + + + + + +stage_4->stage_6 + + + + + +stage_4->stage_5 + + + + + +stage_5->stage_7 + + + + + diff --git a/docker/README.md b/docker/README.md index 4e5854710be..af56cd4061a 100644 --- a/docker/README.md +++ b/docker/README.md @@ -6,7 +6,9 @@ Detailed instructions on how to use the containers can be found in the [Open AD ## Multi-stage Dockerfile structure -![](./img/Dockerfile.svg) +![](./Dockerfile.svg) + +The suffix `-devel` (e.g. `universe-devel`) is intended for use as a [development container](https://containers.dev). On the other hand, those without the `-devel` suffix (e.g. `universe`) are intended to be used as a runtime container. ### `$BASE_IMAGE` @@ -18,28 +20,62 @@ This stage performs only the basic setup required for all Autoware images. ### `rosdep-depend` -The following three ROS dependency package list files will be generated: - -- `/rosdep-core-depend-packages.txt`: A dependency package list file for the packages under the `core` directory of `autoware.repos`. -- `/rosdep-universe-depend-packages.txt`: A dependency package list file for the packages under the `universe` directory of `autoware.repos`. -- `/rosdep-exec-depend-packages.txt`: A dependency package list file required for running Autoware. +The ROS dependency package list files will be generated. +These files will be used in the subsequent stages: -These files will be used in the subsequent `autoware-core`, `autoware-universe`, and `runtime` stages. +- `core-devel` +- `universe-common` +- `universe-COMPONENT-devel` (e.g. `universe-sensing-perception-devel`) +- `universe-COMPONENT` (e.g. `universe-sensing-perception`) +- `universe-devel` +- `universe` By generating only the package list files and copying them to the subsequent stages, the dependency packages will not be reinstalled during the container build process unless the dependency packages change. -### `autoware-core` +### `core-devel` This stage installs the dependency packages based on `/rosdep-core-depend-packages.txt` and build the packages under the `core` directory of `autoware.repos`. -### `autoware-universe` +### `universe-common-devel` + +This stage installs the dependency packages based on `/rosdep-universe-common-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. + +- `universe/external` +- `universe/autoware.universe/common` + +### `universe-sensing-perception-devel` + +This stage installs the dependency packages based on `/rosdep-universe-sensing-perception-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. + +- `universe/autoware.universe/perception` +- `universe/autoware.universe/sensing` + +### `universe-sensing-perception` + +This stage is a Autoware Universe Sensing/Perception runtime container. It only includes the dependencies given by `/rosdep-universe-sensing-perception-exec-depend-packages.txt` and the binaries built in the `universe-sensing-perception-devel` stage. + +### `universe-devel` -This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the packages under the `universe` directory of `autoware.repos`. +This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the remaining packages of `autoware.repos`: -### `devel` +- `launcher` +- `param` +- `sensor_component` +- `sensor_kit` +- `universe/autoware.universe/control` +- `universe/autoware.universe/evaluator` +- `universe/autoware.universe/launch` +- `universe/autoware.universe/localization` +- `universe/autoware.universe/map` +- `universe/autoware.universe/planning` +- `universe/autoware.universe/simulator` +- `universe/autoware.universe/system` +- `universe/autoware.universe/tools` +- `universe/autoware.universe/vehicle` +- `vehicle` -This stage provides a [development container](https://containers.dev) to Autoware developers. By running the host's source code with volume mounting, it allows for easy building and debugging of Autoware. +This stage provides an all-in-one development container to Autoware developers. By running the host's source code with volume mounting, it allows for easy building and debugging of Autoware. -### `runtime` +### `universe` -This stage is an Autoware runtime container. It only includes the dependencies given by `/rosdep-exec-depend-packages.txt`, the binaries built in the `autoware-universe` stage, and artifacts. +This stage is an Autoware Universe runtime container. It only includes the dependencies given by `/rosdep-exec-depend-packages.txt`, the binaries built in the `universe-devel` stage, and artifacts. diff --git a/docker/img/Dockerfile.svg b/docker/img/Dockerfile.svg deleted file mode 100644 index cd4341a66ec..00000000000 --- a/docker/img/Dockerfile.svg +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -G - - -cluster_legend - - - - -key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  - - - -key2 -  -  -  - - - -key:e->key2:w - - - - - -key:e->key2:w - - - - - -key:e->key2:w - - - - - -external_image_0 - -$BASE_IMAGE - - - -stage_0 - -base - - - -external_image_0->stage_0 - - - - - -stage_1 - -rosdep-depend - - - -external_image_0->stage_1 - - - - - -stage_2 - -autoware-core - - - -stage_0->stage_2 - - - - - -stage_5 - -runtime - - - -stage_0->stage_5 - - - - - -stage_1->stage_2 - - - - - -stage_1->stage_2 - - - - - -stage_3 - -autoware-universe - - - -stage_1->stage_3 - - - - - -stage_1->stage_3 - - - - - -stage_1->stage_5 - - - - - -stage_2->stage_3 - - - - - -stage_4 - -devel - - - -stage_3->stage_4 - - - - - -stage_3->stage_5 - - - - - From 6c504869582cc66c8e8c7b1f60ab0122118fac13 Mon Sep 17 00:00:00 2001 From: Mamoru Sobue Date: Fri, 6 Sep 2024 18:58:18 +0900 Subject: [PATCH 251/380] chore: bump up autoware_lanelet2_extension (#5183) Signed-off-by: Mamoru Sobue --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 9abd0d21826..a61cd39ba5f 100644 --- a/autoware.repos +++ b/autoware.repos @@ -28,7 +28,7 @@ repositories: core/autoware_lanelet2_extension: type: git url: https://github.com/autowarefoundation/autoware_lanelet2_extension.git - version: 0.6.0 + version: 0.6.1 core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git From 71b7a4b38d91cf4c53b8654ec5c607060597675a Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 6 Sep 2024 22:04:46 +0900 Subject: [PATCH 252/380] fix(.dockerignore): not ignore specific `csv` and `png` files (#5187) not ignore specific csv and png files Signed-off-by: Yutaka Kondo --- .dockerignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.dockerignore b/.dockerignore index 3a5004f8199..5d2f070ee05 100644 --- a/.dockerignore +++ b/.dockerignore @@ -19,6 +19,8 @@ src/**/*.md src/**/*.pcd src/**/*.png src/**/*.svg +!src/universe/autoware.universe/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/assets +!src/universe/autoware.universe/vehicle/autoware_raw_vehicle_cmd_converter/data/default # Ignore generated files by colcon build From b17202b090d5adbfcea7c6bf549b9a54da1c8524 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 6 Sep 2024 22:25:35 +0900 Subject: [PATCH 253/380] feat(docker): separation from `universe-devel` stage to `universe-localization-mapping-devel` stage (#5186) * update rosdep Signed-off-by: Yutaka Kondo * update build Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * fix action Signed-off-by: Yutaka Kondo * update svg Signed-off-by: Yutaka Kondo * update readme Signed-off-by: Yutaka Kondo * Revert "fix action" This reverts commit 5ecc4cc789be1dc374e58dc0bc9ca84573ade52d. --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 97 +++++++++++--- docker/Dockerfile.svg | 304 +++++++++++++++++++++++++----------------- docker/README.md | 9 +- 3 files changed, 263 insertions(+), 147 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 9e62ce5a02e..edb8d78ba7c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -76,6 +76,10 @@ RUN rosdep keys --ignore-src --from-paths src \ > /rosdep-universe-common-depend-packages.txt \ && cat /rosdep-universe-common-depend-packages.txt +FROM rosdep-depend AS rosdep-universe-sensing-perception-depend +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO + COPY src/universe/autoware.universe/perception /autoware/src/universe/autoware.universe/perception COPY src/universe/autoware.universe/sensing /autoware/src/universe/autoware.universe/sensing RUN rosdep keys --ignore-src --from-paths src \ @@ -93,6 +97,24 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ > /rosdep-universe-sensing-perception-exec-depend-packages.txt \ && cat /rosdep-universe-sensing-perception-exec-depend-packages.txt +FROM rosdep-depend AS rosdep-universe-localization-mapping-depend +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO + +COPY src/universe/autoware.universe/localization /autoware/src/universe/autoware.universe/localization +COPY src/universe/autoware.universe/map /autoware/src/universe/autoware.universe/map +RUN rosdep keys --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-localization-mapping-depend-packages.txt \ + && cat /rosdep-universe-localization-mapping-depend-packages.txt + +FROM rosdep-depend AS rosdep-universe-depend +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO + COPY src/launcher /autoware/src/launcher COPY src/param /autoware/src/param COPY src/sensor_component /autoware/src/sensor_component @@ -165,10 +187,10 @@ RUN --mount=type=ssh \ && cat /tmp/rosdep-universe-common-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 -# TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/common,target=/autoware/src/universe/autoware.universe/common \ + # TODO(youtalk): Remove --mount options when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher,target=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils,target=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/external,target=/autoware/src/universe/external \ @@ -193,7 +215,7 @@ ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" # Install rosdep dependencies -COPY --from=rosdep-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-depend-packages.txt +COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ apt-get update \ @@ -202,8 +224,40 @@ RUN --mount=type=ssh \ # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && colcon build --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ + --mixin release compile-commands ccache \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + +FROM universe-common-devel AS universe-localization-mapping-devel +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ENV CCACHE_DIR="/root/.ccache" + +# Install rosdep dependencies +COPY --from=rosdep-universe-localization-mapping-depend /rosdep-universe-localization-mapping-depend-packages.txt /tmp/rosdep-universe-localization-mapping-depend-packages.txt +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + apt-get update \ + && cat /tmp/rosdep-universe-localization-mapping-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 + +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-universe-localization-mapping-depend,source=/autoware/src/universe/autoware.universe/localization,target=/autoware/src/universe/autoware.universe/localization \ + --mount=type=bind,from=rosdep-universe-localization-mapping-depend,source=/autoware/src/universe/autoware.universe/map,target=/autoware/src/universe/autoware.universe/map \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ && du -sh ${CCACHE_DIR} && ccache -s \ @@ -225,7 +279,7 @@ ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" # Install rosdep dependencies -COPY --from=rosdep-depend /rosdep-universe-depend-packages.txt /tmp/rosdep-universe-depend-packages.txt +COPY --from=rosdep-universe-depend /rosdep-universe-depend-packages.txt /tmp/rosdep-universe-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ apt-get update \ @@ -233,23 +287,22 @@ RUN --mount=type=ssh \ && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware +COPY --from=universe-localization-mapping-devel /opt/autoware /opt/autoware # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/param,target=/autoware/src/param \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_component,target=/autoware/src/sensor_component \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/sensor_kit,target=/autoware/src/sensor_kit \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/evaluator,target=/autoware/src/universe/autoware.universe/evaluator \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/localization,target=/autoware/src/universe/autoware.universe/localization \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/map,target=/autoware/src/universe/autoware.universe/map \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/vehicle,target=/autoware/src/universe/autoware.universe/vehicle \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/param,target=/autoware/src/param \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/sensor_component,target=/autoware/src/sensor_component \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/sensor_kit,target=/autoware/src/sensor_kit \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/evaluator,target=/autoware/src/universe/autoware.universe/evaluator \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/vehicle,target=/autoware/src/universe/autoware.universe/vehicle \ + --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ && du -sh ${CCACHE_DIR} && ccache -s \ @@ -272,7 +325,7 @@ ARG LIB_DIR ARG SETUP_ARGS # Set up runtime environment and artifacts -COPY --from=rosdep-depend /rosdep-universe-sensing-perception-exec-depend-packages.txt /tmp/rosdep-universe-sensing-perception-exec-depend-packages.txt +COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-exec-depend-packages.txt /tmp/rosdep-universe-sensing-perception-exec-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ @@ -306,7 +359,7 @@ ARG LIB_DIR ARG SETUP_ARGS # Set up runtime environment and artifacts -COPY --from=rosdep-depend /rosdep-exec-depend-packages.txt /tmp/rosdep-exec-depend-packages.txt +COPY --from=rosdep-universe-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 \ diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index 82bdf254968..6975aaaf038 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -4,206 +4,264 @@ - - + + G - + cluster_legend - + key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  key2 -  -  -  +  +  +  key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + external_image_0 - -$BASE_IMAGE + +$BASE_IMAGE stage_0 - -base + +base external_image_0->stage_0 - - + + stage_1 - -rosdep-depend + +rosdep-depend external_image_0->stage_1 - - + + - + -stage_2 - -core-devel +stage_5 + +core-devel - + -stage_0->stage_2 - - +stage_0->stage_5 + + - + -stage_6 - -universe-sensing-perception +stage_10 + +universe-sensing-perception - + -stage_0->stage_6 - - - +stage_0->stage_10 + + - + -stage_7 - -universe +stage_11 + +universe - + -stage_0->stage_7 - - +stage_0->stage_11 + + + + + + +stage_1->stage_5 + + + + + +stage_2 + +rosdep-universe-sensing-perception-depend stage_1->stage_2 - - - - - -stage_1->stage_6 - - - - - -stage_1->stage_7 - - - - - + + + - + stage_3 - -universe-common-devel + +rosdep-universe-localization-mapping-depend - + stage_1->stage_3 - - + + - + stage_4 - -universe-sensing-perception-devel + +rosdep-universe-depend - + stage_1->stage_4 - - + + - - -stage_5 - -universe-devel + + +stage_6 + +universe-common-devel - - -stage_1->stage_5 - - - - - -stage_2->stage_3 - - - - - -stage_3->stage_4 - - - - - -stage_3->stage_5 - - - - + + +stage_1->stage_6 + + + + -stage_4->stage_6 - - +stage_5->stage_6 + + - - -stage_4->stage_5 - - + + +stage_2->stage_10 + + - + + +stage_7 + +universe-sensing-perception-devel + + + +stage_2->stage_7 + + + + + +stage_8 + +universe-localization-mapping-devel + + + +stage_3->stage_8 + + + + + +stage_4->stage_11 + + + + + +stage_9 + +universe-devel + + + +stage_4->stage_9 + + + + -stage_5->stage_7 - - +stage_6->stage_7 + + + + + +stage_6->stage_8 + + + + + +stage_6->stage_9 + + + + + +stage_7->stage_10 + + + + + +stage_7->stage_9 + + + + + +stage_8->stage_9 + + + + + +stage_9->stage_11 + + diff --git a/docker/README.md b/docker/README.md index af56cd4061a..91f959b6197 100644 --- a/docker/README.md +++ b/docker/README.md @@ -54,6 +54,13 @@ This stage installs the dependency packages based on `/rosdep-universe-sensing-p This stage is a Autoware Universe Sensing/Perception runtime container. It only includes the dependencies given by `/rosdep-universe-sensing-perception-exec-depend-packages.txt` and the binaries built in the `universe-sensing-perception-devel` stage. +### `universe-localization-mapping-devel` + +This stage installs the dependency packages based on `/rosdep-universe-localization-mapping-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. + +- `universe/autoware.universe/localization` +- `universe/autoware.universe/map` + ### `universe-devel` This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the remaining packages of `autoware.repos`: @@ -65,8 +72,6 @@ This stage installs the dependency packages based on `/rosdep-universe-depend-pa - `universe/autoware.universe/control` - `universe/autoware.universe/evaluator` - `universe/autoware.universe/launch` -- `universe/autoware.universe/localization` -- `universe/autoware.universe/map` - `universe/autoware.universe/planning` - `universe/autoware.universe/simulator` - `universe/autoware.universe/system` From 247b2989ce5fbfd98f338695a337a80e55d2f19e Mon Sep 17 00:00:00 2001 From: "K.Hoshi" Date: Mon, 9 Sep 2024 11:09:07 +0900 Subject: [PATCH 254/380] fix(webauto-ci): custom build spec (#5087) Signed-off-by: rxnew --- .webauto-ci.yaml | 74 +++++++++++++++++++++-- .webauto-ci/main/autoware-build/run.sh | 44 ++++++++++++++ .webauto-ci/main/autoware-setup/run.sh | 20 ++++++ .webauto-ci/main/environment-setup/run.sh | 14 +++++ 4 files changed, 148 insertions(+), 4 deletions(-) create mode 100755 .webauto-ci/main/autoware-build/run.sh create mode 100755 .webauto-ci/main/autoware-setup/run.sh create mode 100755 .webauto-ci/main/environment-setup/run.sh diff --git a/.webauto-ci.yaml b/.webauto-ci.yaml index 74a23b71d4e..2d6771107f5 100644 --- a/.webauto-ci.yaml +++ b/.webauto-ci.yaml @@ -1,9 +1,77 @@ +# The configuration file for Web.Auto CI/CD tool. +# https://docs.web.auto/user-manuals/evaluator/configuration/reference/introduction + version: 2 artifacts: - name: main + metadata: + play-ondemand.ci.web.auto/buildspec: Autoware-Humble_v0.29.0 build: - type: tier4/universe/main/amd64/v1 + type: custom + runtime: + type: standard1/amd64/large + source: + vcstool: + repositories_files: + - autoware.repos + - simulator.repos + import_path: src + environment_variables: + AUTOWARE_PATH: /opt/autoware + DEBIAN_FRONTEND: noninteractive + LANG: C.UTF-8 + phases: + - name: environment-setup + user: root + exec: ./.webauto-ci/main/environment-setup/run.sh + caches: + - name: apt-lists + mountpoint: /var/lib/apt/lists + - name: apt-archives + mountpoint: /var/cache/apt/archives + build_result_reuse: + key_files: + - .webauto-ci/main/environment-setup/**/* + - name: autoware-setup + user: autoware + exec: ./.webauto-ci/main/autoware-setup/run.sh + caches: + - name: apt-lists + mountpoint: /var/lib/apt/lists + - name: apt-archives + mountpoint: /var/cache/apt/archives + build_result_reuse: + key_files: + - .webauto-ci/main/autoware-setup/**/* + - ansible/**/* + - ansible-galaxy-requirements.yaml + - amd64.env + incremental_build: + enabled: true + - name: autoware-build + user: autoware + exec: ./.webauto-ci/main/autoware-build/run.sh + environment_variables: + PARALLEL_WORKERS: "32" + CCACHE_DIR: /tmp/build/cache/ccache + caches: + - name: apt-lists + mountpoint: /var/lib/apt/lists + - name: apt-archives + mountpoint: /var/cache/apt/archives + - name: ccache + mountpoint: /tmp/build/cache/ccache + build_result_reuse: + key_files: + - .webauto-ci/main/autoware-build/**/* + - src/**/* + base_container_image: + from: ubuntu:22.04 + output_container_image: + from: autoware-build + workdir: /opt/autoware + user: autoware simulations: - name: lexus_planning_sim @@ -13,9 +81,7 @@ simulations: type: container artifact: main runtime: - type: simulator/standard1/amd64/medium - cpu: 8 - memory: 16384 + type: standard1/amd64/medium parameters: launch_autoware: "true" autoware_launch_package: autoware_launch diff --git a/.webauto-ci/main/autoware-build/run.sh b/.webauto-ci/main/autoware-build/run.sh new file mode 100755 index 00000000000..f6d3751afad --- /dev/null +++ b/.webauto-ci/main/autoware-build/run.sh @@ -0,0 +1,44 @@ +#!/bin/bash -e + +: "${WEBAUTO_CI_SOURCE_PATH:?is not set}" +: "${WEBAUTO_CI_DEBUG_BUILD:?is not set}" + +: "${AUTOWARE_PATH:?is not set}" +: "${CCACHE_DIR:=}" +: "${CCACHE_SIZE:=1G}" +: "${PARALLEL_WORKERS:=4}" + +sudo mkdir "$AUTOWARE_PATH" +sudo chown "$(whoami)": "$AUTOWARE_PATH" +cd "$WEBAUTO_CI_SOURCE_PATH" +cp -r src .webauto-ci.* "$AUTOWARE_PATH" +cd "$AUTOWARE_PATH" + +if [ -n "$CCACHE_DIR" ]; then + mkdir -p "$CCACHE_DIR" + export USE_CCACHE=1 + export CCACHE_DIR="$CCACHE_DIR" + export CC="/usr/lib/ccache/gcc" + export CXX="/usr/lib/ccache/g++" + ccache -M "$CCACHE_SIZE" +fi + +sudo -E apt-get -y update + +# shellcheck disable=SC2012 +ROS_DISTRO=$(ls -1 /opt/ros | head -1) +# shellcheck disable=SC1090 +source "/opt/ros/$ROS_DISTRO/setup.bash" +rosdep update +rosdep install -y --from-paths src --ignore-src --rosdistro "$ROS_DISTRO" + +[[ $WEBAUTO_CI_DEBUG_BUILD == "true" ]] && build_type="RelWithDebInfo" || build_type="Release" + +colcon build \ + --cmake-args -DCMAKE_BUILD_TYPE="$build_type" -DBUILD_TESTING=off -Wno-dev --no-warn-unused-cli \ + --symlink-install \ + --catkin-skip-building-tests \ + --executor parallel \ + --parallel-workers "$PARALLEL_WORKERS" + +sudo -E apt-get -y autoremove diff --git a/.webauto-ci/main/autoware-setup/run.sh b/.webauto-ci/main/autoware-setup/run.sh new file mode 100755 index 00000000000..a4f840c9398 --- /dev/null +++ b/.webauto-ci/main/autoware-setup/run.sh @@ -0,0 +1,20 @@ +#!/bin/bash -e + +ansible_args=() +ansible_args+=("--extra-vars" "prompt_install_nvidia=y") +ansible_args+=("--extra-vars" "prompt_download_artifacts=y") +ansible_args+=("--extra-vars" "data_dir=$HOME/autoware_data") +ansible_args+=("--extra-vars" "ros2_installation_type=ros-base") +ansible_args+=("--extra-vars" "install_devel=false") + +# read amd64 env file and expand ansible arguments +source 'amd64.env' +while read -r env_name; do + ansible_args+=("--extra-vars" "${env_name}=${!env_name}") +done < <(sed "s/=.*//" >/etc/sudoers +gpasswd -a "$user" sudo From 2904e9f84b40d00ddd6daa3c913efb18f294fb44 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 9 Sep 2024 18:10:46 +0900 Subject: [PATCH 255/380] feat(docker): add `universe-localization-mapping` runtime image (#5189) --- .../actions/docker-build-and-push/action.yaml | 24 +++++++++++ docker/Dockerfile | 41 +++++++++++++++++++ docker/README.md | 4 ++ docker/docker-bake.hcl | 16 ++++++++ 4 files changed, 85 insertions(+) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index a4e158fbff9..4c9ab208345 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -133,6 +133,28 @@ runs: latest=false suffix=-universe-sensing-perception${{ inputs.tag-suffix }} + - name: Docker meta for autoware:universe-localization-mapping-devel + id: meta-universe-localization-mapping-devel + 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-universe-localization-mapping-devel + flavor: | + latest=false + suffix=-universe-localization-mapping-devel${{ inputs.tag-suffix }} + + - name: Docker meta for autoware:universe-localization-mapping + id: meta-universe-localization-mapping + 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-universe-localization-mapping + flavor: | + latest=false + suffix=-universe-localization-mapping${{ inputs.tag-suffix }} + - name: Docker meta for autoware:universe-devel id: meta-universe-devel uses: docker/metadata-action@v5 @@ -172,6 +194,8 @@ runs: ${{ steps.meta-core-devel.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception-devel.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception.outputs.bake-file }} + ${{ steps.meta-universe-localization-mapping-devel.outputs.bake-file }} + ${{ steps.meta-universe-localization-mapping.outputs.bake-file }} ${{ steps.meta-universe-devel.outputs.bake-file }} ${{ steps.meta-universe.outputs.bake-file }} provenance: false diff --git a/docker/Dockerfile b/docker/Dockerfile index edb8d78ba7c..be8fd88541d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -110,6 +110,13 @@ RUN rosdep keys --ignore-src --from-paths src \ | sort \ > /rosdep-universe-localization-mapping-depend-packages.txt \ && cat /rosdep-universe-localization-mapping-depend-packages.txt +RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-localization-mapping-exec-depend-packages.txt \ + && cat /rosdep-universe-localization-mapping-exec-depend-packages.txt FROM rosdep-depend AS rosdep-universe-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -352,6 +359,40 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM base AS universe-localization-mapping +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR +ARG SETUP_ARGS + +# Set up runtime environment and artifacts +COPY --from=rosdep-universe-localization-mapping-depend /rosdep-universe-localization-mapping-exec-depend-packages.txt /tmp/rosdep-universe-localization-mapping-exec-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 ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get update \ + && cat /tmp/rosdep-universe-localization-mapping-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ + && find / -name "*.o" -type f -delete \ + && find / -name "*.h" -type f -delete \ + && find / -name "*.hpp" -type f -delete \ + && rm -rf /autoware/ansible \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + /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 --from=universe-localization-mapping-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"] + FROM base AS universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO diff --git a/docker/README.md b/docker/README.md index 91f959b6197..f9e58ca22ee 100644 --- a/docker/README.md +++ b/docker/README.md @@ -61,6 +61,10 @@ This stage installs the dependency packages based on `/rosdep-universe-localizat - `universe/autoware.universe/localization` - `universe/autoware.universe/map` +### `universe-localization-mapping` + +This stage is a Autoware Universe Localization/Mapping runtime container. It only includes the dependencies given by `/rosdep-universe-localization-mapping-exec-depend-packages.txt` and the binaries built in the `universe-localization-mapping-devel` stage. + ### `universe-devel` This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the remaining packages of `autoware.repos`: diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 4360c907329..274f5725a41 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -4,6 +4,8 @@ group "default" { "core-devel", "universe-sensing-perception-devel", "universe-sensing-perception", + "universe-localization-mapping-devel", + "universe-localization-mapping", "universe-devel", "universe" ] @@ -14,6 +16,8 @@ target "docker-metadata-action-base" {} target "docker-metadata-action-core-devel" {} target "docker-metadata-action-universe-sensing-perception-devel" {} target "docker-metadata-action-universe-sensing-perception" {} +target "docker-metadata-action-universe-localization-mapping-devel" {} +target "docker-metadata-action-universe-localization-mapping" {} target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-universe" {} @@ -41,6 +45,18 @@ target "universe-sensing-perception" { target = "universe-sensing-perception" } +target "universe-localization-mapping-devel" { + inherits = ["docker-metadata-action-universe-localization-mapping-devel"] + dockerfile = "docker/Dockerfile" + target = "universe-localization-mapping-devel" +} + +target "universe-localization-mapping" { + inherits = ["docker-metadata-action-universe-localization-mapping"] + dockerfile = "docker/Dockerfile" + target = "universe-localization-mapping" +} + target "universe-devel" { inherits = ["docker-metadata-action-universe-devel"] dockerfile = "docker/Dockerfile" From de26d57ab3272843932985bb51cb71ba54597499 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 9 Sep 2024 20:23:57 +0900 Subject: [PATCH 256/380] feat(docker): separation from `universe-devel` stage to `universe-planning-control-devel` stage (#5194) --- docker/Dockerfile | 56 ++++++- docker/Dockerfile.svg | 376 ++++++++++++++++++++++++------------------ docker/README.md | 9 +- 3 files changed, 279 insertions(+), 162 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index be8fd88541d..785c8bc67c3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -118,6 +118,25 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ > /rosdep-universe-localization-mapping-exec-depend-packages.txt \ && cat /rosdep-universe-localization-mapping-exec-depend-packages.txt +FROM rosdep-depend AS rosdep-universe-planning-control-depend +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO + +COPY src/universe/autoware.universe/control /autoware/src/universe/autoware.universe/control +COPY src/universe/autoware.universe/planning /autoware/src/universe/autoware.universe/planning +# TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8805 is resolved +COPY src/universe/autoware.universe/map/map_loader /autoware/src/universe/autoware.universe/map/map_loader +COPY src/universe/autoware.universe/map/autoware_map_projection_loader /autoware/src/universe/autoware.universe/map/autoware_map_projection_loader +COPY src/universe/autoware.universe/sensing/autoware_pcl_extensions /autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions +COPY src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor /autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor +RUN rosdep keys --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-planning-control-depend-packages.txt \ + && cat /rosdep-universe-planning-control-depend-packages.txt + FROM rosdep-depend AS rosdep-universe-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -277,6 +296,40 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build +FROM universe-common-devel AS universe-planning-control-devel +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ENV CCACHE_DIR="/root/.ccache" + +# Install rosdep dependencies +COPY --from=rosdep-universe-planning-control-depend /rosdep-universe-planning-control-depend-packages.txt /tmp/rosdep-universe-planning-control-depend-packages.txt +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + apt-get update \ + && cat /tmp/rosdep-universe-planning-control-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 + +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \ + --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \ + # TODO(youtalk): Remove --mount options when https://github.com/autowarefoundation/autoware.universe/issues/8805 is resolved + --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/map/map_loader,target=/autoware/src/universe/autoware.universe/map/map_loader \ + --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/map/autoware_map_projection_loader,target=/autoware/src/universe/autoware.universe/map/autoware_map_projection_loader \ + --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions,target=/autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions \ + --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor,target=/autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && colcon build --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ + --mixin release compile-commands ccache \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build + ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -295,16 +348,15 @@ RUN --mount=type=ssh \ COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware COPY --from=universe-localization-mapping-devel /opt/autoware /opt/autoware +COPY --from=universe-planning-control-devel /opt/autoware /opt/autoware # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/param,target=/autoware/src/param \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/sensor_component,target=/autoware/src/sensor_component \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/sensor_kit,target=/autoware/src/sensor_kit \ - --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/evaluator,target=/autoware/src/universe/autoware.universe/evaluator \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \ - --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \ diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index 6975aaaf038..87eddd635b6 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -4,264 +4,324 @@ - - + + G - + cluster_legend - + key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  key2 -  -  -  +  +  +  key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + external_image_0 - -$BASE_IMAGE + +$BASE_IMAGE stage_0 - -base + +base external_image_0->stage_0 - - + + stage_1 - -rosdep-depend + +rosdep-depend external_image_0->stage_1 - - + + - + -stage_5 - -core-devel +stage_6 + +core-devel - + -stage_0->stage_5 - - +stage_0->stage_6 + + - + -stage_10 - -universe-sensing-perception +stage_12 + +universe-sensing-perception - + -stage_0->stage_10 - - +stage_0->stage_12 + + - + -stage_11 - -universe +stage_13 + +universe-localization-mapping - + -stage_0->stage_11 - - - +stage_0->stage_13 + + - - -stage_1->stage_5 - - + + +stage_14 + +universe + + + +stage_0->stage_14 + + + + + + +stage_1->stage_6 + + - + stage_2 - -rosdep-universe-sensing-perception-depend + +rosdep-universe-sensing-perception-depend - + stage_1->stage_2 - - - + + + - + stage_3 - -rosdep-universe-localization-mapping-depend + +rosdep-universe-localization-mapping-depend - + stage_1->stage_3 - - + + - + stage_4 - -rosdep-universe-depend + +rosdep-universe-planning-control-depend - + stage_1->stage_4 - - - - - -stage_6 - -universe-common-devel - - - -stage_1->stage_6 - - + + - - -stage_5->stage_6 - - + + +stage_5 + +rosdep-universe-depend - - -stage_2->stage_10 - - + + +stage_1->stage_5 + + - + stage_7 - -universe-sensing-perception-devel + +universe-common-devel + + + +stage_1->stage_7 + + - - -stage_2->stage_7 - - + + +stage_6->stage_7 + + + + + +stage_2->stage_12 + + - + stage_8 - -universe-localization-mapping-devel + +universe-sensing-perception-devel - - -stage_3->stage_8 - - + + +stage_2->stage_8 + + - - -stage_4->stage_11 - - + + +stage_3->stage_13 + + - + stage_9 - -universe-devel + +universe-localization-mapping-devel - - -stage_4->stage_9 - - + + +stage_3->stage_9 + + - - -stage_6->stage_7 - - + + +stage_10 + +universe-planning-control-devel - - -stage_6->stage_8 - - + + +stage_4->stage_10 + + - - -stage_6->stage_9 - - + + +stage_5->stage_14 + + - - -stage_7->stage_10 - - + + +stage_11 + +universe-devel + + + +stage_5->stage_11 + + + + + +stage_7->stage_8 + + - + stage_7->stage_9 - - + + - - -stage_8->stage_9 - - + + +stage_7->stage_10 + + + + + +stage_7->stage_11 + + + + + +stage_8->stage_12 + + + + + +stage_8->stage_11 + + + + + +stage_9->stage_13 + + - + stage_9->stage_11 - - + + + + + +stage_10->stage_11 + + + + + +stage_11->stage_14 + + diff --git a/docker/README.md b/docker/README.md index f9e58ca22ee..a1a114c739a 100644 --- a/docker/README.md +++ b/docker/README.md @@ -65,6 +65,13 @@ This stage installs the dependency packages based on `/rosdep-universe-localizat This stage is a Autoware Universe Localization/Mapping runtime container. It only includes the dependencies given by `/rosdep-universe-localization-mapping-exec-depend-packages.txt` and the binaries built in the `universe-localization-mapping-devel` stage. +### `universe-planning-control-devel` + +This stage installs the dependency packages based on `/rosdep-universe-planning-control-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. + +- `universe/autoware.universe/control` +- `universe/autoware.universe/planning` + ### `universe-devel` This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the remaining packages of `autoware.repos`: @@ -73,10 +80,8 @@ This stage installs the dependency packages based on `/rosdep-universe-depend-pa - `param` - `sensor_component` - `sensor_kit` -- `universe/autoware.universe/control` - `universe/autoware.universe/evaluator` - `universe/autoware.universe/launch` -- `universe/autoware.universe/planning` - `universe/autoware.universe/simulator` - `universe/autoware.universe/system` - `universe/autoware.universe/tools` From bd793d207ddd5ce51a4d729df9fd4137ac30d371 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 9 Sep 2024 21:33:40 +0900 Subject: [PATCH 257/380] feat(docker): add `universe-planning-control` runtime image (#5195) * update docker Signed-off-by: Yutaka Kondo * update action Signed-off-by: Yutaka Kondo * update readme Signed-off-by: Yutaka Kondo * fix images Signed-off-by: Yutaka Kondo * not download artifacts Signed-off-by: Yutaka Kondo * add universe-planning-control-devel Signed-off-by: Yutaka Kondo * fix copy Signed-off-by: Yutaka Kondo * add copy Signed-off-by: Yutaka Kondo * fix copy Signed-off-by: Yutaka Kondo * add linefeed Signed-off-by: Yutaka Kondo * add pcl Signed-off-by: Yutaka Kondo * update svg Signed-off-by: Yutaka Kondo * update readme Signed-off-by: Yutaka Kondo * add planning-control image Signed-off-by: Yutaka Kondo * update svg Signed-off-by: Yutaka Kondo * use ghcr.io Signed-off-by: Yutaka Kondo * update readme Signed-off-by: Yutaka Kondo * not download artifacts Signed-off-by: Yutaka Kondo * chore(docker): remove ansible config files from runtime images (#5192) * remove ansible files from runtime images Signed-off-by: Yutaka Kondo * update rm -rf Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 24 ++ docker/Dockerfile | 47 ++- docker/Dockerfile.svg | 323 ++++++++++-------- docker/README.md | 4 + docker/docker-bake.hcl | 16 + 5 files changed, 262 insertions(+), 152 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 4c9ab208345..1d4af106e13 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -155,6 +155,28 @@ runs: latest=false suffix=-universe-localization-mapping${{ inputs.tag-suffix }} + - name: Docker meta for autoware:universe-planning-control-devel + id: meta-universe-planning-control-devel + 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-universe-planning-control-devel + flavor: | + latest=false + suffix=-universe-planning-control-devel${{ inputs.tag-suffix }} + + - name: Docker meta for autoware:universe-planning-control + id: meta-universe-planning-control + 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-universe-planning-control + flavor: | + latest=false + suffix=-universe-planning-control${{ inputs.tag-suffix }} + - name: Docker meta for autoware:universe-devel id: meta-universe-devel uses: docker/metadata-action@v5 @@ -196,6 +218,8 @@ runs: ${{ steps.meta-universe-sensing-perception.outputs.bake-file }} ${{ steps.meta-universe-localization-mapping-devel.outputs.bake-file }} ${{ steps.meta-universe-localization-mapping.outputs.bake-file }} + ${{ steps.meta-universe-planning-control-devel.outputs.bake-file }} + ${{ steps.meta-universe-planning-control.outputs.bake-file }} ${{ steps.meta-universe-devel.outputs.bake-file }} ${{ steps.meta-universe.outputs.bake-file }} provenance: false diff --git a/docker/Dockerfile b/docker/Dockerfile index 785c8bc67c3..d53659d5c17 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -136,6 +136,13 @@ RUN rosdep keys --ignore-src --from-paths src \ | sort \ > /rosdep-universe-planning-control-depend-packages.txt \ && cat /rosdep-universe-planning-control-depend-packages.txt +RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-planning-control-exec-depend-packages.txt \ + && cat /rosdep-universe-planning-control-exec-depend-packages.txt FROM rosdep-depend AS rosdep-universe-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -397,7 +404,7 @@ RUN --mount=type=ssh \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* @@ -431,7 +438,7 @@ RUN --mount=type=ssh \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* @@ -445,6 +452,40 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM base AS universe-planning-control +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR +ARG SETUP_ARGS + +# Set up runtime environment and artifacts +COPY --from=rosdep-universe-planning-control-depend /rosdep-universe-planning-control-exec-depend-packages.txt /tmp/rosdep-universe-planning-control-exec-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 ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get update \ + && cat /tmp/rosdep-universe-planning-control-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ + && find / -name "*.o" -type f -delete \ + && find / -name "*.h" -type f -delete \ + && find / -name "*.hpp" -type f -delete \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + /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 --from=universe-planning-control-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"] + FROM base AS universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -465,7 +506,7 @@ RUN --mount=type=ssh \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index 87eddd635b6..a54e635be43 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -4,324 +4,349 @@ - - + + G - + cluster_legend - + key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  key2 -  -  -  +  +  +  key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + external_image_0 - -$BASE_IMAGE + +$BASE_IMAGE stage_0 - -base + +base external_image_0->stage_0 - - + + stage_1 - -rosdep-depend + +rosdep-depend external_image_0->stage_1 - - + + stage_6 - -core-devel + +core-devel stage_0->stage_6 - - + + stage_12 - -universe-sensing-perception + +universe-sensing-perception stage_0->stage_12 - - + + + stage_13 - -universe-localization-mapping + +universe-localization-mapping stage_0->stage_13 - - + stage_14 - -universe + +universe-planning-control stage_0->stage_14 - - - + + + + + + +stage_15 + +universe + + + +stage_0->stage_15 + + - + stage_1->stage_6 - - + + - + stage_2 - -rosdep-universe-sensing-perception-depend + +rosdep-universe-sensing-perception-depend - + stage_1->stage_2 - - - + + - + stage_3 - -rosdep-universe-localization-mapping-depend + +rosdep-universe-localization-mapping-depend - + stage_1->stage_3 - - + + - + stage_4 - -rosdep-universe-planning-control-depend + +rosdep-universe-planning-control-depend - + stage_1->stage_4 - - + + - + stage_5 - -rosdep-universe-depend + +rosdep-universe-depend - + stage_1->stage_5 - - + + + - + stage_7 - -universe-common-devel + +universe-common-devel - + stage_1->stage_7 - - + + - + stage_6->stage_7 - - + + - + stage_2->stage_12 - - + + - + stage_8 - -universe-sensing-perception-devel + +universe-sensing-perception-devel - + stage_2->stage_8 - - + + - + stage_3->stage_13 - - + + + - + stage_9 - -universe-localization-mapping-devel + +universe-localization-mapping-devel - + stage_3->stage_9 - - + + + + + +stage_4->stage_14 + + - + stage_10 - -universe-planning-control-devel + +universe-planning-control-devel - + stage_4->stage_10 - - + + - - -stage_5->stage_14 - - + + +stage_5->stage_15 + + - + stage_11 - -universe-devel + +universe-devel - + stage_5->stage_11 - - + + - + stage_7->stage_8 - - + + - + stage_7->stage_9 - - + + - + stage_7->stage_10 - - + + - + stage_7->stage_11 - - + + - + stage_8->stage_12 - - + + - + stage_8->stage_11 - - + + - + stage_9->stage_13 - - + + - + stage_9->stage_11 - - + + + + + +stage_10->stage_14 + + - + stage_10->stage_11 - - - - - -stage_11->stage_14 - - + + + + + +stage_11->stage_15 + + diff --git a/docker/README.md b/docker/README.md index a1a114c739a..3d600ccfe30 100644 --- a/docker/README.md +++ b/docker/README.md @@ -72,6 +72,10 @@ This stage installs the dependency packages based on `/rosdep-universe-planning- - `universe/autoware.universe/control` - `universe/autoware.universe/planning` +### `universe-planning-control` + +This stage is a Autoware Universe Planning/Control runtime container. It only includes the dependencies given by `/rosdep-universe-planning-control-exec-depend-packages.txt` and the binaries built in the `universe-planning-control-devel` stage. + ### `universe-devel` This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the remaining packages of `autoware.repos`: diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 274f5725a41..cc544f2409e 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -6,6 +6,8 @@ group "default" { "universe-sensing-perception", "universe-localization-mapping-devel", "universe-localization-mapping", + "universe-planning-control-devel", + "universe-planning-control", "universe-devel", "universe" ] @@ -18,6 +20,8 @@ target "docker-metadata-action-universe-sensing-perception-devel" {} target "docker-metadata-action-universe-sensing-perception" {} target "docker-metadata-action-universe-localization-mapping-devel" {} target "docker-metadata-action-universe-localization-mapping" {} +target "docker-metadata-action-universe-planning-control-devel" {} +target "docker-metadata-action-universe-planning-control" {} target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-universe" {} @@ -57,6 +61,18 @@ target "universe-localization-mapping" { target = "universe-localization-mapping" } +target "universe-planning-control-devel" { + inherits = ["docker-metadata-action-universe-planning-control-devel"] + dockerfile = "docker/Dockerfile" + target = "universe-planning-control-devel" +} + +target "universe-planning-control" { + inherits = ["docker-metadata-action-universe-planning-control"] + dockerfile = "docker/Dockerfile" + target = "universe-planning-control" +} + target "universe-devel" { inherits = ["docker-metadata-action-universe-devel"] dockerfile = "docker/Dockerfile" From dc6a0dc1aab1c1dcf35e4da44bee04cfbaabe6cf Mon Sep 17 00:00:00 2001 From: SHtokuda <165623782+shtokuda@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:22:13 +0900 Subject: [PATCH 258/380] feat(ansible): refactor PR #5053 (#5104) * add telegraf scripts Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * add conf Signed-off-by: Yutaka Kondo * mv Signed-off-by: Yutaka Kondo * add files Signed-off-by: Yutaka Kondo * add copy Signed-off-by: Yutaka Kondo * add playbook Signed-off-by: Yutaka Kondo * add handlers Signed-off-by: Yutaka Kondo * install influxdb2 Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * add readme Signed-off-by: Yutaka Kondo * update readme * style(pre-commit): autofix * add net and nvidia_smi Signed-off-by: Yutaka Kondo * update telegraf tasks Signed-off-by: shtokuda * modify for precommit ansible Signed-off-by: shtokuda * modify to use FQCN Signed-off-by: shtokuda * modify ansoble command condition Signed-off-by: shtokuda * modify other part for precommit ansible Signed-off-by: shtokuda * add service influxDB Signed-off-by: shtokuda * add telegraf binary directory Signed-off-by: shtokuda * add become true for running service Signed-off-by: shtokuda * fixed by yamlint Signed-off-by: shtokuda * add ansible chmod and changed_when Signed-off-by: shtokuda * fix(telegraf.conf): Update explanation of access tokens Signed-off-by: shtokuda Co-authored-by: Yutaka Kondo * fix for pre-commit.ci Signed-off-by: shtokuda --------- Signed-off-by: Yutaka Kondo Signed-off-by: shtokuda Co-authored-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- ansible/playbooks/telegraf.yaml | 4 + ansible/roles/telegraf/README.md | 27 ++++ ansible/roles/telegraf/defaults/main.yaml | 0 ansible/roles/telegraf/files/create-org.png | Bin 0 -> 48641 bytes .../telegraf/files/generate-api-token.png | Bin 0 -> 57407 bytes .../files/get_telegraf_proccpu_json.sh | 20 +++ .../files/get_telegraf_procmem_json.sh | 15 ++ ansible/roles/telegraf/files/load-data.png | Bin 0 -> 88984 bytes ansible/roles/telegraf/files/telegraf.conf | 60 ++++++++ ansible/roles/telegraf/handlers/main.yaml | 4 + ansible/roles/telegraf/meta/main.yaml | 0 ansible/roles/telegraf/tasks/main.yaml | 136 ++++++++++++++++++ 12 files changed, 266 insertions(+) create mode 100644 ansible/playbooks/telegraf.yaml create mode 100644 ansible/roles/telegraf/README.md create mode 100644 ansible/roles/telegraf/defaults/main.yaml create mode 100644 ansible/roles/telegraf/files/create-org.png create mode 100644 ansible/roles/telegraf/files/generate-api-token.png create mode 100755 ansible/roles/telegraf/files/get_telegraf_proccpu_json.sh create mode 100755 ansible/roles/telegraf/files/get_telegraf_procmem_json.sh create mode 100644 ansible/roles/telegraf/files/load-data.png create mode 100644 ansible/roles/telegraf/files/telegraf.conf create mode 100644 ansible/roles/telegraf/handlers/main.yaml create mode 100644 ansible/roles/telegraf/meta/main.yaml create mode 100644 ansible/roles/telegraf/tasks/main.yaml diff --git a/ansible/playbooks/telegraf.yaml b/ansible/playbooks/telegraf.yaml new file mode 100644 index 00000000000..a490821a23f --- /dev/null +++ b/ansible/playbooks/telegraf.yaml @@ -0,0 +1,4 @@ +- name: Set up Telegraf and InfluxDB v2 + hosts: localhost + roles: + - autoware.dev_env.telegraf diff --git a/ansible/roles/telegraf/README.md b/ansible/roles/telegraf/README.md new file mode 100644 index 00000000000..5355384e72a --- /dev/null +++ b/ansible/roles/telegraf/README.md @@ -0,0 +1,27 @@ +# telegraf + +This role install [InfluxDB v2](https://docs.influxdata.com/influxdb/v2/get-started/) and [Telegraf](https://docs.influxdata.com/telegraf/v1/) to collect system metrics. + +After installing telegraf and influxdb2, we need to manually make an API token and copy it to the `/etc/telegraf/telegraf.conf`. + +## Create Organization + +When accessing the InfluxDB UI for the first time, you need to create an organization and a backet. Enter as follows. + +![](./files/create-org.png) + +## Generate API token + +Next, move to the `Load Data` tab, click the `GENERATE API TOKEN button`, and generate the API token. + + + +![](./files/load-data.png) + +![](./files/generate-api-token.png) + +## Copy API token and restart Telegraf + +Paste the obtained API token into the empty string part of `token = ""` in `/etc/telegraf/telegraf.conf`. + + diff --git a/ansible/roles/telegraf/defaults/main.yaml b/ansible/roles/telegraf/defaults/main.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/telegraf/files/create-org.png b/ansible/roles/telegraf/files/create-org.png new file mode 100644 index 0000000000000000000000000000000000000000..a286a54883c04babfad09384eb93b3b65c4b3ec9 GIT binary patch literal 48641 zcmYIv1yogC+wB2CN*W}k8!71)>FyAaMx;wRC8fK&TclA^k#3OgF6r)nomanm8H_=k z&Dm?M{lt9coP;PTNTMPWB10e$RB0(O6$k`29|D0{MSKc=BUHI44!*!SzL8c#1RtJ= zCZEC21Ruqn zGBtB+Q;6CJCo)zxG7%>;vRACHILO%8_*lW`D>4yzG8t7hSOl+P2!sqGEheJon*Jxl z%oA4}FZeNy0*MppMLr^hd;!B}jvca=&%RQU7%{nIh=>e`&Az!(=<=x?JMR!%q+=-5 zLvyfY-pE3FTS*TVgys$w($>39k5JMUGK6ZHXw8PwSCCB@`#a#!AT0cEoNbt%nh|z1 zLWtWvk~8%<^kkCOc#c+;`y%6Lhfk~jxW@g7=r?O~YPOUN_UPb1KqGcNF8*%GH;ca$ zdSBV6z>{#ERQUMpX2Hp1ftv@JZs_fkE+Vb{o&JX!6=eNQOCfJ8H&e&{Tm8#)Ue;RN z6N@{<=@0nU)hb>yNHgvql6k2HKUamZZ?M}a9xfBC1@op`2|irxS}vvyUDTZBb&ul= zcC~C#uRoLBI6F0Z^s>=)^w_6wsjt1>U0Xjb&Pu%z(qz?nySR&xJmrb$Ic{k5{rOVI zq~4KpU)hjWMkHhSrJr95j44ikQWg;<%s6v1zj$6O(Nq*CUAhfYkxugY8;3%{{Vf}6 z;oC~7wYvd0X2bSG)Hp zvOB3$!+K$JEJa)AleZ_w)n}e#K2LoFsp~v*dgeldaE>&{PWBNim?E*34*xi+m%iUOuHbGa@V;TW6I+ZM>o=y_O`LATdCI~N_;isf zx8c5GYB^{^I#SbLNc#ShV+0W`oNERa<08V5g0Y25Gh$Kb_SkKAV1Z`sy*n+Y0`jw= zb+Z=>A-prA53b6j1eh6We^59a zZq9cj*^q=Ve^T=#34okz{oFzSI*O3;7JfJeoo%>V}_vY5O`y{t|1>OnTsW)D&M;{SMyoG^e47k(2#jd zJ<%|_T@B2q#rM5@e}_n@(q+98?;q0ThwH1X#3-2q`TnE}+w-wks<&YD)?ZSSfz$KB zaCT{NCi=VW^jCUQ;m7x|WqKPCQklob*HwmHM*_lmzne>1crHG+k%k)<5TZG^qQBqn zzL59ff4tL?|FN5V`NbqtFlusaf+Y+4-k3>n?%N(+P&0kPTZ^Aw1wp^PIDGQ7T*=dN z@GXa&lTAL6KYrz{a7coqv@GE6n=8SK-NF~VDR(|A6dVjs9NaUbN#VJNQP^Q|Jv>#- z-0M8z(4TCq(l@q75_lmzDQm;c!7p5tHIh%rd-IK8Yu6Sw={P)!lV8O&G!hw6Z*uPP zkVqd{cauhYw;`_OGR>u6ymcvEYC(_x<_}Xl@3~N2OhGnz-DwZ?3`$?E(#c2sRCXuU z8pq4g`5>H;sb+`py%RVSr!|uqlX>PG^BU&;%`2|A4d3+)dsa7s4u+uV)6@3 zvag<;lZIX&Upg(z;m-H66Gh*dVLrhn>);f9_$EymX8*LZD91jxRhsS1pUnfS>uEnf zZlBkuLHGL!s3l59>_jRZ?xj(!`?gyu4Y7W-Yl|hv9quFG}ShMNx;_9NVA7F1P0UuxPvoc6V~d6V<6O z?%v^@=f_ES&6Ovo3aqcZf9O<}cn|#{bUT3W*x4FQp?__SLN)Q3ZFu70bX(qAp^lax zVUTpB@Q`Sax`D9I-D9>JoFc7it-i|X4euQ6P(Pl;MlH#>GLL>;CPP}1z>(bwKC7;=ZX4A87nW|~j$ zo3NjLR_1q}<)b}mdh?SW0Xrg41k$u7N#~o#mCtux&+6?dGPc$2{-f#C6jd}2=F8mD zm{->ysgY`=dQPw z6p%H#n%UR7!3N)=IpgqkebZ*l%DXpPd9fw!{nP7!8ax9V zuu6yMHrs)@ad&f1Uhnv|o^hPOljCqg*VHfE$2bMc=|?L0aY?wSB{W#X?klGnMpq9k zRL6=soxD26rMh>WL_Q4#Bmu3+5*qRfZCtIl^Hk?3{pW47q$T&q#s=(G(fsVf!JG&6 z9A9CBwz@c_yw=1svgV^IYFIo=+D!N9KjPIc>^S+bN6s!g2oeg>mLs*WC;fX03gDRYX*M2Aea$C7ASekDb!BEa3aWkEvB zv}ks9@*$G@RK3@&(=({awAz0b>s_Yg0qeIA^@LG)xI4=J;18keqvv#(VWr^yPm53a zg!KPq{5y22mi7W%3^k zj)!?8=rzea-gc7ukl-S|M?FCMp%Y?Qz*_q8Wo7K68rJ8^&+jS4P6cmZN)K0FYI6R9tB#)QrOx;z8ZRq z2*^m!32v6T@3(Aj>`?veZTlQg{Yrs+2OgeW-)xt$?wdXG&H3*=&LW*(JBgE#N{_R1 zi>F1My34O5)A-8-TXvW{nBr?;lNLS3TqwJ4$2>Gz^F7+$dXThWhc^=lOORKrri~V7 zCB@NyZ>`Z7m!I8Iz8C!HozRjYKDxMBsE-_W?N$^2C{p<<)G|X| z|NL7!9r_5C6V=x3jRz?~d1Yk>K_V6ZyzcwK53DPkxk8%L(Qh6Q>Kd-Tcb9M3yfZj5 z^`697eEWX5jS00$=?!}&>Qneh76lc-oW3-|6q{Z2f=U*=bZt9oz*G#Slw51x2_ZhR7G8fm*!tp%J zMBTiHqMou#_d9rVaTd0YMq7*-d-XJbc*REG;@QuYuMrjNYx02irAf$7%vQ_58Dge) zG{vq)`hR|zNkjK4f#lbjFq_#H|X`4%b z+MB-7RZl^KpU?D35BnnCz*MjW558u%Udy0%SViw?lJ``{P;!H&zQTntzw_8!boFB8 z`<)pAVP_eJg!YcD81_d!q^%1pDbz6Qf_4prgtt$0JPay|wvZfPVB|jayEA9DypG+g ziz6;WJm2djR8?pQuhiClFgl?nQfVJT_}SWS8mWA+c$wIOGa$+@=p8Uy^zoBudyT_x zL#l0-tuePiCbGn0IH|{un+k)OWYjo)U)#2VC!V0&6KxNE3)Ry?)ckl?^-$^Sg)I}w z%9EOGCUwO8Or!P4@jyO%#Wc0URYQA%Nmn6?q(}v)t66n8 z=N!Ws@#}eO6*C$it-dP)Ex&tuWo8(iB1b;)*@hfa9$W>^f`sEMP3a~DPFVEQ9>$>v z=MP4j$x|AV_BQiQi!CF9q<+%e(dT=6DM4zqZtdq`+Ip|{eJ)=gyF0bK6s=LOAyH@D zXpWBM5>DglaldEDB)V+S^p<)tW8U3Ysz=0P<)0o4d$?$;u)bF-tg?OCu=w?r=Ut0O z?wRpzVOxgJLq(y1(*XbdyN~Y^S{55s3rio(65RGH5{7FY#)H0Udvx5*qX*hCBj+2{ zzlZhPLEuq#vcVfFM=mVpkGwaMIlJl19}sc)eQ^I|?>9=X&Oqyx!p63>yK~s#WT}TGg?#qk`c;!)!mBKarRBYK&SU3P2>v^3(NdDHB$NET5}%8{ z@v911Gc4K+v=d!4XmaJh3E^aac{9Ont5_sYSiZRz7XK&wHlEj8i`OocUBhy^w_k5~ z8pZl<;kfi8@z!%GQ?K&0j1_;AJ6~-NNQ6cHlG=dejmf(VV%pW|1fO zX4}_m*`ytz@?Q`2#mdvCSHoRcTs?9!@SgqI+BR{Qo{G|tSqr;+b{FHGoLjTM^Db<= zn@e`MX7;wV`^-@m`P0OyXGM_}hxMWGS~q*TttLNx@9euNs*#-wxz>!-fh<>r^CoQA z@0ZC5GAzP@uaVv0NN7}_IlzRoe>Tw2t+AjVXZMD$IV419rB(7Kd|Pm#yX;^{Wl;DG z<_AA&&4nUS6D(}mC(j8A5P;|K%=$)N^Z2cZ%{@~v+yXSb$q9>i$y-}$NCC67>VsfG z?_iU@Ni0bF+apL#C^6EF4K6aaaowDbo9iFL%mD2`7%5GhM1 zxF(IdWW&NUqQ-UowzWx?+8hIZ&XK;`wq2cdZjZ` zb?7D<4%KeR6Rr~+=0a0%DREchQ0f1BzktWQbJ0?vsZ&`C9EmAqx^8p4UdIFVGiPUu zRo>{J`2UW8LVfv~!6T1nK>Y%CR{g?n$`hZ2H&c=#dwMSO-x)D!EzRkns|x3z`1)oq zugl%XAWQyeR{O&C?{HL5EM6435UPrPQmZC+l5KqzQId&jp1V7bOFk+y_;2et!JHXI z++6uVsuy1-&eN;(RmfkmjE5u71v!j7rTTZu&qO|+d8-TVeV~gD&AgI#w!rdHzarnj z^_au{d&UouRPKDHqR99PGyPNs3U1;x;w|qd1QogR|Gr)V>6(&AQW~Rp%nqkw>g?yB3aVlq{RS?5*=0TL zzZKyXDD~0Te{Qf4EtTjFiq8m`BrPd72_-sE`%S1){VzO@bhKb;4JEk0UF zoo~GThDr}+KHV9enQ#AM?MQJwHhn%KPFKLGJ?OWV0gknV`c`vSONAId`w*XWBlEa^q4+V!(j2jko+QZ1I6DBs^Hw5 z`x0mTL1u7j(X#N*d4Te@?R!F%3Q`q+tiQzo z!`qjWiBd-ZhoczFp{2k`IWC43na zzT$s3UKzH_ja7clv}C>^4KC*?^??nbO6Vm-iAjw}{dgDawg?dyh1cXvQatpO<5`i{$G44HOVaRaOj)}K~oQZuXI`9v` z=6^%!QACrFQg+MtjqKlTZDDyT#AzUbN(@Uey;dCx8=QK8xS5H}ibXAHeINhU_3vB$ zWWlhOB1l#FCSS6rLE(B?m}AkFzss?q`9$mV*0;{wS%kdoGv!ox-(AeVM)DBsX;uJH z@Idz+2v<|Fbm+q%1O;XfW|J}dY*a^=1xFm97m?L};fL(2+2fguqLlGKyDk42 zYKi)K6KjaQX-Kb&Rj#`Hzxog+v1$CHU-amE%^|X_+<|el2|L53WZzln@J77Tqn zXmV1{li*C}zvQ0$@-E8fA;h^cAT#G!l!0G5z++C)&7c9bi0UcfE%gSB9g8WW@grjw z`|m1&cK9CTTt2<9+c{^h)?C#hwC%YDyz2LZ7WfArZ@nbgWV>9kZ- zaHFGJFp#||Td^kR7jfUjUSIr~Io@yR7%5hMVn-v<1>M+mm9Rlq_*-eU@9~PqtDRtz zZv`sf)-Xqs2quP8$4-AWM3qTm4!pf2UEW9v`*1LvDfr}kcLD}tHG9S{bd~*11uupS z@uzaBdRgehy|Cy+X+o9t9GYAP-;4gF%IXA(I2u$o*Q3`sEPBr%tPbn=p7-Z=TPS-l zf$S~x{HhgEQ;x^INJiOXL29;`UeSPCLMTgBW)7sY87q(t3&E!SOe*?mZ>n-_wNuvh z=8WE9qc8AHpx)DNdqgy}uA;1q*E7`xqu-r$1iXo} zu`_OlfsO4S9gVR*oQ3|)VFMOoGL%k0DTyX|eX?=1Q{;s~s(5dAe}gLEd4;$$Uep1e zu>F4Od~)z zinP2I%ws0&@hMMn(!*3;VxdPT>$y;nf3;ssHiImCpW-oBgyHAs$LhHGvH4U%{dhK& zbMN^6Qh51SNE?o!zUQ&{$DJ|EcTLU`1_opdYOW|TF{-15^89Tn&*e*+&s4ncZuUF_ zf`efo2a7FXRmMK;x#D5R%RfZLr;R#8S5Jq9MelE%U?35MoRHzu?b$jHtR%h-`^$rO zze`S;7u|{&>aFJ@larIznPW{QB5p{BG6fML*N*0F`{SB;KxXMVZVkQYye_MJ-kmM- z1d@zW@X`wpdPg<4#XqO5}|O@pb%4 z*jX6MO~}vf)2-pr23z5ef2QA3hQqceFlw@X+~)o;mJh$Wwsw4FFEEtO8#Xc$O~vfA zOF>2ksd+CR`g429CrffL)d`b;R~7nKy>Ue&RmNt|2+tB+E9}>Twnsh{y232~nQ=_! zbK)CHKW1TC12?KN=~a2D*9`agaBJ&;7Yv@0W#kL~Pb(dg^k0zPn1lFpTH8U&>j;ke zdAans9art{=Pus7M>p>CN^{}V<~qvELTo}fwdGHRh1`aM3N`wDwPm!%3~dAH*!(xg zwY(_4u&pKU+ZUUIItGNcORe`{8@zq-^ud*FBwv!Nm#T~zZ5FM ztvyqapVfQ}?!CKdf8q~C;d@_ygiCV18-bxLVgKUdLHt)H(MC7gQAzsDpL0YJjQ1wx zc|0ztzUZ|CVADn#JlyFg*Cz|Qf9$T%(G?TP#O4V>lFmtQIDw00YP z;^{p0a42{~;$<34nE3eH;}@W_eeIj6*j9tNlI34ku9|#qgSgT_;nF4OeakPqc#Fs}a!tx!>Hx~8- zS;7dsVC#@{AukDgVICg*JV~FT>#LxE#^*)Q8kfQE^7?Qw%kcUnA@$7P-=EED8Uv(( z-YMo#A`_9tWO-yNXW82QWkarU_ZPhxE$^!p1bm@8%c>T*lda+4yX(^&^|Hj|SEhum z5AHlz*x1$u3$0!{$Co9lMQeB0D2Z#JGCx0TnIZ=DM+CGpr8aM`m)f<-1YD|xa#~fZ z2=RV1YiZF8Wbo@WvnYKvfI0hf&9>;%20vSGZL5`8{m?gw1 z*NqhGP)?xy&4F4jONd})WhM2MTBRQ9M46^&gUvf=(1}UvbICDM*RhCTl;CAxkQ^g2}hN!PAtTA3M&ptcth5WT8*>h~qy*h0>qYDaBfajDth&8F{5;lUGn zp&4sw%ZXC*2O-BzD@lGn(V%dxW>=VMlU~zqE!+Qj0sNp%;_A4~?yhlcp(CCido=q; z6GWGb9Oe04Xc!*LN+6!z>kzEU91!F^AZ7~XQa%R+z?JK_DPy*Q$lM+)z=kZhe-i#` z+OGk!1$SqxKpb43=XP3%h=e2pn%+p;quFX{b8)dX=;flIMt6nV3sTW4+y$nvn>~Rr z>ow>16oIyk&pU>DIa_C$%xQ@hN&1KaDiaGbjw=#0ononFvpp`O+U<#3Z+0#F_i;!_ zf>a7*Lbo(Hemj8TSoLwoc6+jd5i%7jA^7Pd$o8HrVNwzy&w!3#^tB7?-g;VSy)+xf z2ps+OOU!D%ksuiD#Tz9h44DLmKtj$^!Gww+T54Z(k)S=WP`=F=RIWy^ zTP|>HehlgiIqv5c%RFdVK8pyFk;FehaZBC_2n;mb8S6wulJZBhgH^^~ArocL`$e4-m=GD!`J_2NW zqKx)rqd)BG%5`-9XXLVW&QBe!MmuIde}9<9hxWNfdv<6K!_yy#xH;b=2c8Q$?OH^D zhC+5H_Ljj725LP=TR}^5*TR&6F&N2)@dhnn_FY1}WCg>xllWJHy2b{t2P;$8dQz2? zfquJFs;nw@8~&-my~|-D_!D}~FS@@_SehXaI{j7(X5GeZr&NAtEAbeLKp03>l|4Sk zHsjsJoP&VRgD&P5>p3ob?gJl)Z%@OlU}Sw7nbLyea#`k=%gW+ z=gg*Crm(x%YOyTJ%TyML9_AaY1OO z$@-N8{03SHVlJ-qlUhO*AjS@<3GV57tj8?`alCvPM;8vu?82*Xvfhi$VKe_sHu2>I zV&11upRVp4rw|_3dsV^q@g2W*c6H@=Tq;HFn8d{4w2GP8mQztFVd0<>vl+CL*@xCjqVJV0z~kXV?AD&@ zq?raa9|8!TO9ajd2A|h~qXun%P8KEiDH`!FoMMoB!Oxkr2`tW;-`yZ&@Hv?x=lRM` zW7j(S8T?xP;UD~Avb^Ap7Obw1>El(NN!TChtkRv?x*EE0y+%9CCkSX`0n(vW@5S~e z55s-}K)1){euf{>PDDx?MIz`PO85X0K2I!UDrJY-^cGB9h={2wb@Jw*p5H0pI~iI% zmgo)rstQolWBIa2H`l*t;M9UIvBfvccM>{rQIgQ)a<~c(XuzXDCIM$(CW+}*p7LuS zug`;D<7%6BU1{nqXus`dS?66{5tjCMSB8HUny^9bd40MmkBNbiom>qne?|o#90Ed~ zMnx*b7hu;lQ24$ZW(j$P)>%%$KuXn0!n3oS%@&Nh%z^Ki9C_P1**9==0|DPYvct(Mg3y8c{GCJ+DJ~ z-Zxust#*bP_C&M5GYZC{Iytu(3YAJYMq|L&XE91iEI}7FdW;kZdUw z5h&%+#`hhg8~zTAL03Mv?PHw9Xx@#CL@hbi6_A~y$FHikmWnCo$_FI^OdBP|)Po6( zMHK)!k;z@dw)?`|kG4H-1+BoRee;7yVfcdgQVY_b$b|Kx^9dNPzU+Y}A<`YWZ@)7} zeVjQnBxwO^AmbP9O6@viW_>OjQo}0Q+1i{Q01pAyvq%k|k7PF+`cvOW+ZiW-iTE?~ z1&CtG#CrfYtXcYEPr;zb24G}hhB=trlxsg=)>=$p)tEg}T=*|MV7NZq@jl#N>UT`6 zYapVccK$Aji>8q$gtWUXMNBSC^iCNMJ`+j1J6fS6=6~OOzPQ*Ddl`@`URMb7o@e5} z+Il1q)%L&_qSIg$&6MWg(gVJ+J6V@*!;pAKN4qs4$(buh*Fe4jlNo2JUN8+43p`Gw z?TLEwVGI^xZV|#`>tY8*RYsi+aW9wTQeK6&As`@70-IfsFbvF>1q1f?@vHD~aA3SN z&-MN4WQnu;+YRsfq$Qj}Tn~)K88KYe+8nlv18WX_rzp>!aWEC>rcqVqVS)h`7rs56 z*O5Xo6VEzHbwmL6sOR$i_m8n$hY$BWbI0%wn*;R7c>=@6yT5l__bOz1;))1Xix!BF7KK3 zS*h1KkWy0x&Ya73(crDYB`zvqGb8hxCIA53&$bH~x2Zd|*w-HJZ=ujeON)mmk{w5e zl7cEpsj4dT@e|;cS5S0+ZbP7$cY(FCRh!r!0Ugf3D{XXLf@zGP;=4<)|4-Z>iSfn< z%Q)Eyc5c4h)l?I~8^IjZAEdShb$mhPgxJaNpKp&2I?O`>PUP7BYQXz?yA{n}OG!*R zL-R8$&IF}6ikjEJmc%AkJnsW z$FP+-k!hL8Hoo&@L)QN42<92V ztDX@S>M#)6VJHlx8WpQ`8asfO(d(RA>y4w$?P4?TdbU0PcJFx~62R>Y%n;c$E*vm% zPx3IDje<$f^Gq4<*mEHH&wa?p#a2Y?n*+gEA*whiVsyG!xZ~TK6MW&^1Ulr6M$s35T1r9Sj0q zTuuwMsX@gk0Bt{Rj}U+yfQ3Mza~gN0hWDFq$lv@;n_>I-c!IC=>5~ z$UN$2IsLT+pzJ5^#gUuCmm1}CiA*~Aw+NrVD{7haC!+E?xYoP&BLQ^E#P=v{zsmBA zRA`JN65ANnmxm~ZT+}@vc#b_n>+7=SJV+%77^?)&_NFvdBS%J*z#tn%r?gBBVHVDJ z532=?UMv=+p_-O_Wy6gSHA;a)n({Sg9wj4gAQOFMP2Xam37bW?v)T*(f|+Po=A3fl zZsuejd)VEHvM23zDmM!*d#eETHo6{TWr98lDqXHpPEsel1mvsZ7Bk?02J;f^#*2nu z7s%i$muaA`4`mR6g#QV~zbeZqoB6g!2#71ujlP7DT65!k>A0tP5)n!~%EAuoip2cR z#FcFigbW&_=u5ddc`?>8{wPu}lNSoXwiiQ_P8;9%3-`GTok ztuNnbo>nI=nj5Nev;_6Ru?P*}~pD%RM4G2h~W2kNC<&d1)^ zrK9UDFHAzh&{i)GXig;y-r@WtsWb%9b*C15GAzx zsX*38986U==eN(!_u3c_e#i5>FmqUG>3=M82Jq+X!1_-MAjK)@zfy!FZ|`qYAr`#u ztEQir@*}MHKGi@y!Dqa>;W1+wHK{y%c-w(Q9UCbHg z(lFD}eJ-hZs>_uJ7y?O?b-AdMxYN69$6D(-7?kG&;sEggMCj{&zWdoHAJQH{#69x; zJovlz7!kKkwoU^HpzN^Tym`ZF(nAIcB_e2$(42z<@Sr!g03bl6X;T_pP+wK2yDxU~ z+MbN+`()t2t88`6zG;4JwG2;S(O0NFFIO+4(I{v2`2h%TybA5Q&RX+03=)z^z=N_b z@MQ>jJ++>z=dKL{NKXn`Cf*elFhUc$+$Zc7H1R@SH_rfHbonmFnv8+Y>0oApzq+M`C@LNzr=&3DTUj4~)t)&Lw{wsxJ%(al~ZIjCj;WBs_ly|mvPcxyFR z{{ku;L=Y_={y77a2Z%Lv0L=WH_h)n81U5von<>D-*+C~lz(a?g?{Tj-EG4pAUjmLG zpj6#5+iX~I1n?6*8T@$A0tzZUaoc@8EcC8`*CR??DaxXOwL{9|buj4$>09NnVbO`~ z0f7d*)$~`S7kss%br$L|!am;l@sB<_o1`n(sv4tAQx=3y<2UC-Q1a=+Xf8o04!vJ= zG)E&yZqRjurQ>KQxwz0^V3>0vCupIH!uf99Xp@T~Aj07d4GmpSs9*rR|1tmVvl!wr^utL*k3*bN0+`o z9=Y%MmtLMh)zP~w0MZSozy2uJt^@OGIJZ1ppj$PFJmYshjBF z^qmE*>RKO|H^33zjs;J4umS$}B~w8VN4}Vh z;aGka20nhku<&6N09FLAQ`JGNJ&OM8umJDj;T2{s~AP8;AkowlB4- z128*~*LqyXTCGuE?~~Q-7uTvRvey-2$lJ)u5UNlVC>6??+wb)Qt^;JNDG#W)2Mb~1 zuCDmd=?=8n&q7jw!IA$-2XJEyRX&G^T6-wI*+J6p3h@MUVeynWJS!*I zOHm7x{IV7a@W#{_pk%;2xydsdjzV>@Sal--yb7C1&sVCM_W-;2k*P4eM5S+^m53i7 zjqVdgsn74To0okn%lJ$3M^rIySJ3z7zVGMm#7OyKeK`g{U_UH9h^iGIJqJ^i|1*Ly zN+BVb(b3WACKpn`Z@sS1gNlbR%eXH-sYP77Q>G-T=+)1XK$3(l&Gq(Oe%I}^s8E*1 zyD}l>oj4vf+CTb9lmAs)KgUbt$eAudyF6&jr}!u3%DU=}1khO2=Dw6KW_vZv=~t!%fpK?yjFtGks333j ziRYUj!{6JlMA`8P8xX@tlb2+raw$a5I;({=h7@~Dw2bN%Xv1~VDN_7%nCP#@u3;I{ zT$i*=5cP+}n)LcR&P4Ctl1#`{NpR&i?+(<>>g_9K{ng`-@N{(s9BtmRVZOvu(vJ6- z-vgdU=4{y7vb}<(calV9yAw0Vka@k^zxzUb6isF^t0-@<6)jbm3Vid+bPi5SN2g#i z^7|^H5DQ%lf&-(jKnPY-tF`KM%=6=)8V$3RB5>Mq2#$3CL^S$I3cX z)}@?~3YZPKgMV*F|Du4ZxQ-gk2{QKQ`L9g}$ZFoj|Cx!ksLR{52LTE`KgS~%J?P_{ z)@rNly~?Upjr$;KQTW4TCQ?R{(f;2SeZ*K=hmyy~HCtzw0>#tNmNCcZe=5jt~CroWFg%(eBFZ zoKR2d8cqHC-=*p1?~DHWMnv-E$}7_wipbTcqqQ~lWXR!x6G_J1;Y94eh>Q6?V&iQh zKgm8fx0s7sqOGPr7ubi#@$EkTWD-UCze_~&J>$a?OxQOCDw}3A6N2uFTaCAae@~Or z69oOUuQf^$ks3V`imgns{Y~Dos8=^6M z7?Y^<8{&0@W8*FR)^pLwk}dD{rK$eLx|HP)Zfb?uok6H2cI#5Ke^26= zRK$kAG!gHdBiq?p+Ilt`Ifsf;gG7KwuTkdB-wXgN<>emg<;bvcQ;Jtf7{8dbl6t4f z$(8@IyFdnbyQKAK4FB1uICFJXE939tGk0d#&W8ib2#Hh@BYa;y>u2x{`0Ka${5xdb zM~z37gqmMP5qPWr{LT*;zbiZ!6#sXu%+qCmHZI@VpB+{q!k!gq8PDIS31Je$Qu(O; z4Fj=Kk$wFTGXl3)RO*b#iZF9r`PycRR<{3p*}~UUw6vZYcZAuh8nz=yZ7)g98+Dbp zl5Z;bqUEpCC(-kBFrxa!*5a64h&Ctp};VynOPF0brDm%;fQ%I{0AW zqK^CT0mY8ikSBc1$kqLz3{mS3OSF>OsE7P~QAhnLGlOm>>TkqcvHPLY_mk3B#^AY8 zxq}WMF!5zH`pr(!zmg$kom^Qx6$e`}l+J!1ohn^rVO;_o0p_y*g8GWxibzFTlp(9R zq5icV6H6aQz8rT^X>Kug{9{)=_1|b9yCY!qmJ&>3YybwYpskAkxvelBp7jT*x#9S@ zO5R0l&*Vsdn_iM)rXf%GuU!3HGBlUsjhOG5t?C8w<58`*8T{LIih3Wn9+e*0od4VA z1A2cDj*YS6^}Dr=V|SVy8zL12kt>W1|}4jxZ?lfB8E`Ook;zbQr;xU zXfFPZ6A9$Q*29Kmoh`jJ{-f5rEP%4h_3nwDGpC1X*I6usF%4+2ltWovO%~hlq|Y3RHWq)Hd~-%fqm0 zQ(0OUHfXd^B((Qlm|$JLcUX$ipLm3ccgS5{L5iM>{y7^;N8;<*uS9+vZzW2IkNR7Rt@1y^^cFrPz0Fb@H6ATaKZ6a%_#mBqxX-^I%4fHjxx!kROismA4TIj~OW zbE0{BayVs6MnP$|3M9T*Y9CG!5s}Z~>3%00jFe!R-@-(pN#-4?O$ls34BUU#od%^M ztfZdAKhITx^R3wbo#d)|5GhaUa~DGwUT?efmK+!ifL1$_BdU3K(k~DXR2YC!Q{<@6 zBaOQisM5&p&vwRfpf-eXf*R#~DMR2}iC$+$hK55vRyLGE)hy zh4F@}g~BS4Ya>O9iUNSAZ}IS8G?`zY6mFfk+9j3rio2C4#ukI?yG-VdBI!%rx+g@j}el+8R>pv)12 z2uc0if({oW+g!c90a?^7`SsOpyKwGaZN9u8I!HU(^CzDU^K z?LaDGGnJvj!p_Qb-cJR3AP<;sU%cS^2m_Hz<-o0MRzU=#X(v?Y-5Po~U1KJE<_Z+= zukPoz(8Yt02uxs{B6HkC%C|)_d>Pz%O0Rj|PxN+T!b<>4fb5z&NZa?_2 zqs=taQK-3$IQW+s2}_$U5JxK787rH^L8KaYg_jhom89Yev$A49A94m?-B-I63ZNXk zNMV=E1|sZq9V2p`Wm^~^uHKhG6$-c&%XJ+uiw$v0%aAjUe34wS{v**++RoH(LrG0C z6PFSR960nU_>iNmtVOF?y8n3rB$)z*J+Bl2gNP;`ilc#;FCO+>Vy%k_q|dwN=b#Xo zkJGGNpNfI$^+|VR2F78_sRAw-l%(PwG6g-@>{oG!d5(fztp}3rd0g#S0I89KDFuYZ zPv}D1zF;o>Jaus>>`Us6?+?rzfL#gv?vx_nmbxkc_{Z(>B0Oky1@0hbJz=*K4x#IO zZa|DO=@GFRaRB1iSEFK4^zlKTf`;bl=_b=_FpNW!>CgN(6yvVD>@;r3GvaAdV43;_ z!jsMUkE{4Bzw=!r0efMtR#hxW@OoDk3JPLq9*G8f`~MP~a&H0tgSGZg3m;}{V@yBc zK%nlb9MQJU?NLfri{FT6e`dN_n*i23whAo_Z&(s& zCozC1hx*_kMncITYMdlq@e?3ms zn_itn$~TDETCMY(6~hck1fWA~FSal$WC{cxwmnMQ z9|E@KYPYNs$|2XF1-TP1XPfM+*6S~jH9YsP2L z)JT2*9~wUS@eQ8ei%8`MX-NX^W%NBs`=W=mTfF|%C1YnbnUpt)fGgxRqrq+rTOQ;5 z{Vh7qRF<&M7bKnBUwaTL80Ep!t&mhpUWfJ9ChI2uVTTrvC(wWZ+aVJY5;1IGAj7kO zgInQaW$nr5!Xov)f&oOcKX9zlakN38`TWBlVR^k*7?a2YTQch5llT42@{-Rxlzgp? zS9ww~KM{e~VWMn`ZSSi^f@Nuw=e0xVUinuD1|D8;cJ}MJ4JkP}v8|zn@0&cJn!ir7cAb@#&=A;AENvN$-r(TSlj!x>d#^q25$cv%46?1J+3>d&- zP+4hqXwE{se?yKMdst!uSd)ztq*Xy_q0Jv?am49D`wsqUrSY7>`#+6{$TKnhj@*GK zQ`WplHt9JyeF=~{M++`_RUVgmVqyVn9q7XCX|{<~@jgL#-VvD~2Rnh6#Yp1FB9X ztM{E2FhM**qv}16eyu+Vpv)k?`KG@c)SoHXwB`mK4g&;hYnEnTq{eSae96+< zdPSr{BG7#yiJalcv@4hqyA*UbU4`8UJRQ4JmBF7s+W{V1k=rWh+0JOAJtgR92!Nq^ zC9jjbI2=RC4-(dru+^{w{M#4{3$$PWq!ThVRWavFE&DuMuZ8cqg-KS4DlNsk@3q_W z-_nYIU_(0@bdQ~3N%U4PUH(i5mT6WR4kX8rY`9&1>2HG8m6XeIAlA6LCL8+j^!_f1 z0n`%tY^`}9NIT1e+tL?jjV{CLhtN~H_@n=^qx0ANWQ!y;Xr=wfnAOTy68fY3d_0Vi zlvLcmi)p2x(ib6_3@4qLXA(aY7m86vxi7LROL;Dm$ZaWS{I1m17*)I~irqWQQa>tL!~K zk3+Bb_aFFvZl53O7M*il&+9oJQMI5yZBx_Rb4o!N)X^*7y+)l*%aAw*|Pg7>|1R+DX^)pUWEZ|jd^Rn z4jIV2nwa#|akkG3=-D#BXHzY8x?EFc(Uk_?{j|R&;7SP3qMz74rGq!(#aB*qX(LHY z8?nctJ6nrq06DHY24f)?Zym`fY7}ZD=-pbHdEGP+ku544GSQk~+)f~JL5*r-X5J{e!;Fc(Ss8ra~}yYtq-<;xj&hl0(W zoZY+g1UhKFa$N|yM!M#$RgLFrnN2P|Y{qnE=rV(cu?0vP(yEgr4&?{UjG9cnPi~?MY*OvBXSE zG*9S}bxB2+b|b_OKTj>Wl2V6O4hcW4^{UXYumo^qsajbl;2`<(>%PBJJjZL+nJVdj znm^FG-{Gy^C*@R)59P$gXQ=+d*&9Jj%h?cDlBksl&)Uz@vWi#t+f;Z#=*R2b5Bx** z51JIfPW-}|@U$)lRq@VdQ04NIaTbWkeopd?bZP17^wXT}Bb{r1;MBPI4VBnW`ytV| zp*N0chBf{iYdf2}Ly!fXxjLh(6a!@;*$|ZzYzdy=yO=U{Jb*Dj)nntIRldR0n`=@7 zR32#vy|PVPC4qs?AEdTLc&}R&4-;;zU(`pVJU7!TBy8Px(rt4^7Gm)7t%aj7;neVK zFWk2elPIf_4SPZM3^HuY>0@;r@91s)iv3`VV>-_=1q)t*y~SK?3Yll7acs#HjFmRzlq`J4_Any^Anr%O8PF| z_%t6@(FflOk=i)|th_piQ?g-~BLobR`E?6PJoL-=tA9TbK<*8~TO_;8H@AmXdoh`;z`7ca=>Ggi~j>5O3cWyg%?uwP5vih^A0i8_D!?K zI6nl!8^(SmhhlNcqv}7so_&?R2Ei1~^Jnma;)iJh7boV@*)eDR9}?k?oRv+5r^szo zCb$y{wLW3~LqEvPKb9yw3OB#y>^Xrb){``+78$#yI!jk!%Zb5@i79gkTYNnb+@rfd zXo>W`111u%%g*Ny73OThKH@(KmF>aE zTdAgK3lPjBszBNH0=0N4ts5Vj{2xU2t|I=W7RK{2HBnOB>5$(~Y3FsmGVIbQeP|X+ z7wdfNr2IY{y2Vi7=)y10j5TMZqhgLQyFtyV6;nTBsEOBj_l9?*lFi7O zMMJ?mz7Ky82SD@WSz~7G5avG>8PWGb0TR`XkD*sBKTEf_riWhXWap}d*)wBrETJ1e z6y`F-y)F?b-cs!C_mayr;CQz`*h-IA0SR%>>|Z%m)#KDX{0+`w<~VE2=?H1t^5jT* zt01C_DQA*9Y8}Y10rx&Guv_;9Ht5jok4nX9YfTc&29!*zeQMf6{M0u$^o)G?;Tz zZa#mpHhymE!&sQ!$MIes*CZw4i4BtdC%h+Ewy+VmShe?6heHw;2k;$b0t_d`g2Nib zbjZ+yDHFR#7T#ZYSi*6O^^du0jmB+7=&4cfeiXljr=n39D9V>fimBf~62h@6TBKup z=v8TP$_r;Z?SQZLW8T@vyX_6E4O4^b$^}A9r6hJ`2XX3dTA>KB`6Df={OlzuGhNgV zg}H48aGj#``*SyK+o$)edb;l{XVPGS+C-_cOPrJ5n|Lfb?Q5NAStmj_UP$Nmg`Vif zkQwcz3)%lEFIl6mV!BN6q<>&h>$^wf;VwagqRQ&O)_WgK^8jCMITp_n!|H>#tYGh`L zkN4M2f81`rTB;Hc^`DiW@r6Rc8k8jLMqmPEO zlJ_PiAN2bNb1RP3@0*L4qq40s9pp^zR!-Cg#45hi&0qaPO#zGm2-czT?!1-1eO~x@!{`{%sikQD5P8e5}Qkg7=*` z&O~bBm5cj!Qw`77K3Y{mO*|(CU~bwq>G~I1a)sibr}J&5?%dfcoxBP?Cq-!RBK!?M zbZ7b4b-|;}0q$}`p=@G3uVGw1Y}iPMCPh=-HRAr0F)QD6$AnRQBu{-HK~2 z|HVuY&YFaQ131Pi4r-O520c1i;+-LWmTUP8IXNOAP0AV-2z~(+Kn&(3@M!3*Yb<}3 zQZfNmp%_Sc@_cva0>Wz8VF~#v7fXj_;}pBiu8qaqi9ewNTlLh`Qy1a^$mqKDZnCFI zN{gqNR3nJ*d=hhos&V0t-oy3X_%x3r3?zs9>kHX&*7%Y`?Y(&^BajfJ-g(C}-nxtW z7%+0AB?fgnQHGknM>#>#>&e89a`MR&hi-25oM@&RTZx^Ser%oeAUL)Aes257Gkmo0>O4A~xkCi1py?FcrD!;#2-TDg81wN;ip0?=5QxS?9e!B-rMRcG5&$Y=) z0G*QvkE$}+U*z$a;rY2E!%~4R8l@{G`6YUxx14+)1)0`9N#ZoP{3yTir+Aqn{gYoq zZP%T4e!Z@;#xG^3%h+3EYCc%V;mf?jZg}cccJP9%qc2tRghwx2hI`VPU^QNSedF=oAP%UkJk8EP*TJU_xZB9dwz1XIR|(l z0$7s#q`36QCr2`^%(%KZF(Ev!mcZp_AldLU2Tl!{$F3W;lmX-wB>Zfw$%Fms%0-92 zKXE1YmI14q%hO){MOgPoW7s7T~&&B^+} zar0xa#`O-G=stYoHTBce6%WxdfOnAKSx7Q&H$_?lWlRBbQCh&;JC3l*Z2k2ZOw{;L zi12*a@>8}WnZL%hV(ZGOGS}5=5Q{;sdK7YgGSZKN70n=f0?q2zH=E4%Q=KPAfR}bO zt4xyxevr9y2k%s-{6^`|L$-D-Qd7ylOjey z!RdL+gAS14-rf%A-mC97zkUuuU;X3QhV`irf+v`neIY0wTJC8YhLZ;qef}pc6;&l9 zGvBg}$O6w?rh@RF2}r8dFUX(JO-3)90_y~*gfBC6i;Msy7J4;0FJzK%LJ4{xz2 z4-HAezqa?N!^h6N@TVV?QSX%T_A$xTa0jwb9ga=?zP zNK0SZLbYYmTv}{g@AWK~jeW{RRz%$=`_xk5>w?!`jF?!y{}FjmoL2vi-qBrilOA>8 z7t!7!U?{8W>H>O56cODbfkbJa$51GWNO}q(2QJT4Z^bu7B>~WK1_T1wl4uY(wq+X$ zk@UC-!=^~CIMI0q%?uqJB;SS|$%8o#vo4*PdZz}T2_4*HHIhCEFh03W#rA2ag!lnF zUp;GwrhM)GafD%AupX=v9jsvWV*n`_R8^t4aN;>6%l}!+AO3w(-m#G!*JY z?AZ{uPgCwozwN|bR|El&3Ig5GIlwicf*CnWqQBHO&< zFNv#$qupg9Nl6_4{>yiULsCEu3GM2`+z2 zz0(141O5W>_EBI(9`DF$PXJz>?7bgu7cN}*^}B7Pc>zSSL;W_sMl;{%&xkvvI=PM1 zwussdUy|G{%^EJzUMIz&#-aVR+zg+Q=w3djIoV?!wB}AN46n-UZ&uHiK4;GRdZWka zQv!1G3P;px*Nyvo&22O z!TNc&zbD&u^(yFZNcr9k0Io`vKRp`gBdKh-0;xy~02aj;Kq&;GJ9EGj$js+~Uxx4m zg<}n9f=NpzY&Iu=cneruJxCq9vmDKrKst5V*3e^XdsU899wHSF3av8NwDWkH+~t&sddp#ea12>{VY@I@=fN4EUjZ$& zJy~h5z;P0ewJx0uIpC#~DCH$nV3*p0%96qiuB$8WXN151T8h;>xt9sExbUtBPaU;QQbm`9&P{xq}!0?z4 z-Rr@r_ZL6BO4#{%7DiLs{JH~(nBt=?y2q7b3xQeo_uTpOm9LhdbmIT}cT=-#TU*ra z15f|{bRz)+vwbKMf~%gkbQSnho+!%;&-20V04eFxBkA{neJa6yo-r)N{cavOw>BG6xx74jZ z2&|M(m6UAgt#0b-k*jJscF`a8KmRh9?!e6hCuXSXb?&^1|90{m@_7CBwq3vZ>en|7 z7sC7!M6zth<6Zmsg%+EiNKJ^1akLMnX@EYfugHc$r^tRf5_$zhL>k<^`x2^Yn|0yJ zR8&;JTXsp{nJkG1He>alflu2{_;W3~cm{zTaXgguV2f#Iy5l)TbeiSOunxi_-Fx2r zLfvo2de62^{ZMvydwHEjj7)tK*{nEDiTru(Sawj-3%-A8EKWShDhWe9Qkye*bCpL0 z0Z0@}O-+T;p}X((zoner#Z*T{h9^^Yq1X`1y!)^<{*-nRFywXIf!|M(uI@&+H^A;P zb{6fhmk98``X10}nX`5P<=(j)y<>dA8*d;~fTS^RW0tzVxYYIC(N;EJJcWIQ@f)kP zz~qdJOofl0_UbUcaYr%Fw^JRxtv12mz>4jk$MqFXGiVIs({d8u7a+bAZbZ$_e9zHq z>i^`Jm9M9%nMPh})6HklxAN%sk01A>02^ZzUHXQ$ZRFlg$|a+S_y78awziYlv0Vy~ z-+0o*vXvu9o=+-DE(`p1&bM|Rv zaGYr0_!P#MB0nyjOiD5-*DT1-?>rNRl9DoLQUK4x27XcC_m6c$?h5U^hdRBYJspMC zlh=sN2^EOz4&lQa)3WmG;E`&-y_+za>SRQsD3RU-T*DLduUTJ339&!7C}UHyq?_`t zzn^{ib;sC6R!E0o1m9QAab_G@5W$ozr6!IIIYLd0y|@$|BSApqGxaut;Okpr-Td!< zk-L+oYja11ji>Wk%Rkd=-SbD&N*n?sRw*`dtoC=CM^vK~%nHJ`*CfjDd-me1*w}#8 z!31Au$}qCrQ#aJDYf}k|DBFH(k&%KP{n~23u*;@jH{G|j^M0b;-PNEHin-#Hto$ap zNs#S1%CZ}<_;Z2nx;AA&C)h!Y;_!83xwKULp6e_sCm5W|?dEwC35N(lcx7*e{XEqeRn`1?oqwYOEp?rOoPJCxAv3Pq$cdkzAr*DRCzySm_ zQQ%luj2(utNrP;{?$`4-b5JySs}RM0KS*_SwrJN26eB}HBDF)sBf$`U2Z3aft#qOB zDE4D<&y&UR7Lv0%eC)TcewmBKHa$bsub-}e>)ts2^lwYt4en6BPENYHaM*(>B!}U_wA!7LZ8lx z1=FvV1Z;;HwYi?*mlw2l%UwOg4V<#?^7D_~zI}VG)g#%cBUuUi@%o=)=H0CcwY&Ld zlJW|Uzuq_|4@2qBTjb}Ni70L;??+!&F&eG6%m#A-8|F9^_Um8~gFgK!A!C=-4}$Q) zXrN^IjKl_|_|{w^maV3S10=X7t~tzj+LTjXoNkU;W`#1B*JQ_FM5EL~Jr^jukC5gc zN6makJ)bhqv?(m5l8d_+2iV{67mB}C(U(Ksy?u)SUsVH(J-;@hav{CHVs~-3(ZWoLVld zs_OH+uh%F-#22&_-)vk3593QKb?@b;KO3iDk|PZS{wzNme{E{F(7-uN+H`HQvPNz1 zYjhHJH+mMi1O#fWiw0f{ZvS}-}Z1O)FV>hPUy}H}xsxv{Zca zbR<@a;-cy;*WTcXQw8^qUXHdD)bVnm&ck(@Q@ShAXr^?__NppXT2^+iei%0orz|n* zZ+*9!7M7`ZwzWIgq~!9=Be2?5Rr$H0VYG*EgyLN6Th#K@?E;FIrk>RpUFi}goSiC&KrCH!ISU(wCvjaQY1>vghTIqTag zPV?oqMXDARvgngBh!h;wM2;YKfC{kW3>0S3^noB37<41{cJCnsimi!*bVsnaV$Mw7h~kN zj>*y$Et*^jU)^Y&@NZ6u*)Hm+xQYJ2c6@D5sJ|;&qHt@Gjow*Y&+RqtPHV$9ZT?3+ zK~1D9;QKs(w;ei2ZH{L%6CrCc{Y6hbMVxJ5YBzl7W-*(ji;gkpYZw=Dy|sLAKs_kt z82x)>0eJ{fl!51r@>~a!Yv^Vx7mP!?T_svZXdp(#0&^SNhSzzdbcD##AS_31ZpMOb zu~w$$CVeO^EX`c9gV9&`<4SJqk{PB<_!UlFzDk&IpQ00g5+;B!o@#A}87YjKjg}yE zB_Wp!5+CyzGa94}I?n&c1yDoFlg2$&o4%fIPR)I?P%8>WxLA-HeOTB08@^EotJ@Y@ zLj4_&BH%;`OM#@zUeLQlWBxFkK0rY9e%G(?g#3xm4qg(JOjzb@a@RH?hae{GV$6#E zl;ox<%icP4o(n|BF!GJDl352uF|0;K21bQ!U%gb?E%u?{I0@H9u@JUJ$Q@wwo4kRW@ND}#jls~kx@|~rie7PJ+ybj-hd?S$HOd% z4^V{M$WHdULOs`>MSNf8052gorSlYmw>#tP-Ll-4X6=>z&--U=d95^VDeC>m^}g5D zM1^q91|u;y`JLf4TxgCj_jVJF@MWJ+OJ2Dy|*ox+JBw!F#OhNC-+7MJ&ea$ z$VCJ{1B#`u`l*QaGkYIvaJWUyeSG|{V!JU@HF8;);2){(k7ml`(CA9`QzzTM)n+ya zvx?@ci|u$BOSzHeTt|_mg4rsjZsxZk`%iIQ?qQ@`w5%}S@o--Vq_)+U!W)H%2d)Fr=oCU`EZ;pHY%%-;;X8)ueAquHy;plRG z=^l-gN2)h_JsQH@7Wg+`gg4V%qD(yF+Zmak7Wi*=TcS|}J3Mu(p~6d9i|fc+?81b` zbk_nhDH$Nz#kXP;8jRxem$pv8D=XXJ@~aBICM;d+jZv zc#wb4+`hx^c01?Uy4LrPd1tma-q7h>6cnT#8{>$+Y%EV597tNt0?L8+dD1%#kw}92 zBZYy-D1xo{`*%#(EGOvrb~pdDIYvRD>5@sKI(OFFx8xg3Vh23do5)0ed6L<7C>5EQ zJ=K8F)#%Li740~uVeYljFcssj9KNHi60668#gZw29I4;JPBIpltM7SbKfvkCC;XJW ziS{SCk>@>Es3*r;V(n_^wJg^uSie)Uxe3#1>DiO-tQ5)SKwBdwHrOaF-xxIb>M)@hDG zQK!UT`#d<9Z+K4_aR_doSX_L(VrxMHRFf!DT1UJWB~WqG*_kr4d_#U|s_PWU*=ojHrb&wmh3037 z8$FqNq|hAN&z$Dfo`c}wAfOFK#(HI;=kn-+4pNga%#%} zh5X^Zsb>b%nRuuB>Xi#Eu_9HKK5W0nV{NKA6Q223>@3@m8Z>PzUuRq#FY^Uh&dmO+ zr0emED)FB5yzbTCa|DeB-Bv+0);bhp>Fx^%B((U-aN1dCz{kdVQLq-%LW0TDB{fMX zU;CZtEV@vi=>+MG-Nc(!LufnXG?U{y|Ko{D-8JRCS;J|gEp&+77S^sGse5gvEHDQ! z$sf`=P&FN^R~140CaK0>DfHr&PX2caw~aW@1P^^bqbh+FiKGVXoo@#P%h$xIjt1B+ zG^EH~>l~^Qgh_ElPqR81asu^|vZkg6THf3X54R#ikd~TOVhK?j>_*w6?;2*XLrjVP zlGnOJmMAOr0;nnXm#0u`n}f2(q{DY@>0ar^)N~Ff${E-)Okc%JFMXBTWhq_!N;g=H zQpM&{lj89(6-h5@=BsP##&zZ1K1ZcKqk6WKV_6)a6~a5&5J}JrYal$=7p1DbDYJ&l zH~)O$PKkSNQ*P&eB#>?Qu;ls!q_X7tt>!o}W=~^8#l}qpOV=5u_%el z51Wmnr96<3GoqUyp-dS&8iU`5Lf0)en5K0Z!U+x$5E=mGt02^QGqPZsLW4)R)sMD3gDS8zEbYA%8tp9Rsyg{ z9xY6W?1_kqQRqHwOlNy>4pO^&8dtjxL|l-%7qI`duCAF}nyECS)s;Il;opvPZNnvdb) z^6JLPvE#h(`3xpke^+1VLH_-GQp6((9?C>5UW_(_I=Rc@W<$*BbH zI^=TuXS9WDyc(s}T?^to#;agv%%Y%*OM@FSRV{sIdWy48&;9v0p&aKt&Iqz&m-bmY zy8O>z@7-oi&o3-2084qqZmDfRRYwO07^s;ENHCtmHa!6iqG+rqz;r0Mq^m;uN{PnB z1wCn%V2;vvq11Pswa;i)l|AbRbo2YbOe|jRzCK??%lqx);!R+JT+X){WcBg6ZGN_+ zeDm~MQb!{Jn$_9JaVuUEcom&J|!`|XRZB7?(n*T6j zYo(|z`2qeBh#ofod=g~3YV{Jv>OFRpiputfT}4fV)()$R_+_fBvXzsdRPfEsedGQb zFpv2T6{(T&*eb8(sHi$2&#<9dW}DlCD5ZS8VPaBzx(KAivu>pGb0Mzp9nvTLY{o28JC{z;BWgrD z`zD}Y@69`&89Ohx?Z~q6SCWvLZf#S;;pzs;&Hg-7T9Duee|#e4Y28oq&4G-I(R6Wu zPKQ9rl`Z}5e45^V$KsSQAQNYE^T>Si1-5HZ2R1AVU zXMi;<4LoLI!aT?OOR}lDEF9gL<0a@3o=~)^lUTa*(|JM) zS|1)%7S9POwCPIg;^N}^Y~u|QqVT#+RoQh z8P_=PWnwOE_U|9x!#cAO)N7XU(mMCl7w|59Sgy8Z@>4x8_*+VR|6ZoX#hEJ_CB&eb zWV7@oz<+x>FP>g|heJR&hg~lylOFh6Ds%#vYkX$7Y)L22d&0CO1>SpJ@t`U7{ zNaNZ1SRJ&>X}DWae!Pz537xXkws7h8ipM3RO2W6CfyYf}MR(Rl=BiI6LZ1bLU$AdZ z13~?>7pl*Q=5#k)Tp2iZun zaA;&8FTOcbp(bfiG~mDqp7I0;^CK1#oX55AJ)5^BIUWe;cB`Of=S{j61YcrI!e-Hr zJ&b^kNDr&<91tUF1Gi<$+8|eIsjcjT{JMVvkm#?q?|dCFB+6BOKzrr%DBTx6*CyePpN|*GH+vH7ZRE_YFUdSVHxstzSj$MJs;?i+8NWvH z6Zie=Y5=`#CzBXPN*8g^vFNqvB;mmKLM0DxQqw_D_p?2jaQDn>W%UO0 zzzB`Jss|i*DFF&}9{mnL`tWdops&dRpxK>=-FFDF=CS+tFUf>2#b0Q1ZxsQB!g+r(tN(nK&>El-?I*O33f{@WUOg7AWWIb^Kbbk zYod(A3+QzLJ@AC=W(!0}*s{iyP~hs%*npp9Dz(rK_0qF7a=_G1+_Uf6^I*YJ<+MR0 zWQlP2&e#e!pRK)eW2i8~T$Fw7H$!mM2_N`b7hNh zbQ|g1W#-O>Zr1zIj5mJCs2hK{8+7!91I}|2@9wml`KI^1GCS3?b3FjbI)s>w8L!E$NW&V8@sqDuY}jMXjd~EQX(0DX-wg8bo@_CL0QGBsfO_sCh5W6 zuZzNOfBGwUPH|JePR=sJY;Tm~gztXzBjpy}4}|hwohYuW2m zzqudq6K6H&t&NMyS^an#EiUejqc^C**y1SB44sxEe>P3B>F2|;#$^xDx!iuxo3h|#xGaC-J+%;E=EUNJ@j;$QxUb$nUmp0ZPV z?^uf9=4}(QE3Gp_-gsQP`CsQd$Ok%KaCyW`a~0BnrE^27ProUNbjz<(UnyoX?Ul{w z98G+5_a?>Tboc#78h}SKWYdwEZnYwdp-+~fHQx{>IMkvD5X;GIuDtnHY?s$e{em># z7j8E;76Q~9!6hiz^!-dTU`ht~!>sLZ!?n>olB2DZ;skvQbD~v~OP?xd!H=~2OlGoP z!fN04_7di52lRpjo6MbP{PF`5mGU!TmDXLSimAQ12Du#A24rhft7D|Ol4H1P)q}|4 z>)L!ssp@WZH?o*kx-4}C(RN%usqAh1cm1iSvweA|MSIc|&`ejG;{U-~^6F&Ys9G3; zZZ+i|qI_rC)%n2H{y7&g^$?Pb)Wopy@0p)E3Wo$LMrFFS)SN5@KAu>$7PMdVrfV;x z&g{Ge(}hnP(K#RNeDalGKWpXr@Jzjv8m)1H-3sMpR-D=7WA{)6KJCL&ZMg8ovOeeM z-D=L7SuTo3O*Gy0qJ+wDp@(v)MU?jrLDCLtW>`p-rVwS7F>9zQnmVHRpt1qr`b zauY`5onisgkP>l}AUr=O%%{sVynHoPpJ^diFQsL6D*;33k|JfP|?9FXcIo0JGb zxe8mqi=UblE->XZqm?Vt5_##tV#I{)HRjQclA-4Q!6z7jI_U39C-0mUScFxZ8QRP8 zy-)q24EnI%DG{S#*~+^)4OuCNA}`7hWzt#@&4ePvn+nh2{ZD5OBbUV!rRDblqV}La zAD33S)*n(68#=TLR@`Afhb5~o2liF&{sUuajys8txLkYF6OZdGlu$8^9v9lfmgzU^ zma4CBeSa@ZDABk(09c0An{}T(G+FVTrHIfwq*8fV$xRnw!ou#CpHm%pneUaP1xGfh zso9~4$Syezv_;BIv_)MTKF$1F{A_`)sr%Wzo%cjtX^~Otky*H}aKuXP8(3EUh$|^Z z02EytbJi?PD!GoDH8tE0V8x0Rz&rAKZs~3OyYXj$KhMjfnPe51bkRIp?U&3jCPxic z@M*bf6^!PeGPk79krpl4kfmMGXaQgQVT>^BP|xSu>NVM#+tYr*wAa<7Q+so7oEn~X z7@^yx#S6KdB!v2_kQwHUbsPHM%w3@dwAa6wsr_w!96(NemxT%LlKaSP0}J5B+!i;` zJYVUa=ojzSbm4h4s>LlZ_CVh7k=mYQg~+vj4|~9;zaZUY*%I^QMMO*-osPx2L(XbN zUX$Fm6t5GtltHGPC)81gR6I(U`E|aXBZU^BRRscksukv68OkEQTG~`F9aXb#O~b)N zeSRMxKp!5d)+Ru=OJ49;d^R;)J_Z|x6RsDr#7Kx)`~%&HOd1`}YD1Wr#*jfh`iqj* zuVM|d{OfeDAK!j`KX{d=-X}aN5GP!RT0kbn*L6N|P3xmE~NzE?--o)g#}4Gk-A>BBgAxn;0?< zbPv;{QU$@XLm->D0d$B12nKyoI%rQ+)1ASb{jep(X)?(p5u#1^bttv3TURW#S3v*5 z#~ua&r#F8=5e``0^iWi)CZ+psb|UxILU6b6u|L&y(&C zo4#G7b;;Hv|I^f^{4>X&^*j`MFQwKzukX{-(NBqOQaQjIjO%P&I*MV!azscF?9u4H zbZtpcuY>@!!&HUS3w+Xg76-)i`;FmpfHx@3IIucDpu^F!L4WPPrAO`le5~4XgU=p( z^l?l^eD%jsQb-Z+wlY{e7Rfvht(<^4`yoey*3vLntC0f}o!j4B*1mAXR~(4_ zsqJS~^qgh5CAY_NGUE{OHxdPo#ZuP#kPbGd7tRbt&_jL@pVkfeI@UoO@a0#kuWOUIc>Fa@`$35yWTil%+aSMf%s538U`xRRrS6cxi}9Q~8&0 z?l9Xv^Atn)T)PPwax^K91yKVfvmujvd z+10>pn(Vy(9m>>6?Ui=H14kGS4|wt?A6dnBpP-(E913*(3Bc8|zgs*<7UwdB0BX}& z*cR!J`$<6GpvSJ4O`r>@Tw4xU)>i9o91SA+>Z~5ilV(*Q6Vf9{vEgO=sbeInp4Z_w zl!)KJ+<;`E4peamM6sT(f7Zz~)9(gXR(3%Ee^95$VXDZ2BV>CbK})_L`Wsb34>>pE zPLP`z$kqj)wS}BXYyCTE>lZ(`Mq|D+pYd&{WYBOB`6m3T=joI`zE>Hp*Z$sMDEHEv z>}qm{s7GlzPW?x4JO2DF^pq=R1YrMs&W1aA(WJCmuyl@3-^ConUZQ6v;;$bgJG_Jj zai&fmq)YUGsaXFgvgooHMCj$4UG@)9fKKp4vu-{%x6OD@C{06K)8{u`HYQVsfTeK5 z$Owt}_2<*y>gAr0>Vlr1FX8nGM^=A4VaxnD?wC{CRcLMb16sd9B=TxUGh^cb;#;}f zr!>}U;DJxZ-dJQrO`ko|fsc9E#F;2JP*{9K_hI@?5`CiUH3_d9q-;@G*UqSZ#F7#K$OayRw*#;;&l$xLM63g+AC9Dp&gj>wbMP z9h%OHy1(?B6M-->xo)>P3tIT2zR5}3@86$ivG06U>qg2OAYMlxKqmDC8gyQUM};={ z48RccudI{?wgu(-`Z@^?JR>@%Ub@`t6@*G+H7%xu&yorA@sP_fqt^CNwc}RSpHvbc@Njy3s;ltTUwSEla*qhlZYfK zaqR{?*Wn3C1Q&Q8$UrMJ;XJG?mL!EcCf46N_{mWaxUoL3*t2ee$s!$K;v0ZtZUtWl z-R5A;`b2{9(xIL#11U{rk|*A{=V+XIJ!>66w+zKrhia>mH+pOoSb7?#nBWN0XvD*%0^oMneP8$PD7>xUIn(H%n z0NgxDf|8}ShE}3YL-s;njShUW5Y1#QrIhhveiv8#U&ch$SrZXEVM1l^D|tULRS3Ex zC7R8%lZxN?yg2=f!%Gipj9g*Z)5#Ca!xu;{tFDC0Grm zE3_ZTdVg1iRjsWsq9NhA@V5d>6~yOU6F*cKDV!tDrpBnW)#o2_t;I2obEh(Nv7TcR zCgw*yqBc*qe(e=wPjQYpAwF675}$;6hkE|Z^5UI(g6H>}bj1Fmso;@@AG7H;- zzvh}>Fk?Lsr*Rlrg0-h5-sQ`71$x^SR{ zX>{RV>}N~r6h=%fPc0>hNP6OB$dNefkmL_Gdk9Es@uYuIzDsJ%xX>FrOqiwMCsh>T z{f-dE%k8EZD(D?jBPX0+;TrKhg~n1i_8&pvU11F}s9(P@5ttsdDQQzdd4+CRCaktX zn$Ftu3H1*A#`3LCQKVp=U=fXqL1iFO=GuwUp{AQQG#h{*|aTZMb;@C8Pmy=03X;`U}dv~!elSmfKh#e_A9 z6#o}W3-S63QAmh3-}kkl2wz#faGjAC-oIkP zUJu5FtL`P~p)|m$2xJoxZbZk(1Ho$wsichNu~bnqe~Ifnxuf;Ohu?#oGslyEt9VZH z>HCzuy0V5Zgz)G!mQ7KncC!%Tsyt)^;EmF*mZu}BvG3mgx}3pWK}$-|L*+%K96H9-5|@6{%Ayy~ z_U+Rnm8P!P5{d6ORf2sxbKkC&TE^w(T7v+bvBY8abBtdxHh0oM2x{}E7YH!te z!XvD!O6+-sx+@H6O8QTiYDB&e{?5>OQ2i+Ok=8ukC0MZ)AHfp)$UWS*)9i>VEB1k= z1cdFl1b3bIFDLfK@j!4RJX@5tU3B(vL7KsSHCsA2GSD2;Wx5m3&oX*Vs9v1Cs|UX! z(b(6n_zx$+OnIAQOm5Md<2jk)!2o^}C8Qy`jt-ePztQm@vLLdmw>=?oe*o?{(JKY0 zy9Pz_AEeUg>)?H{z`SOyFrNlw**<`}mO z&IbV^Tr)0;)(Z6+#sje<_%y*iGk|e;2gXIB!3@))X%u{c%zgy#uY=Vlj1h*-NO(%odM=~n%)@>g>88P&^2ED zZyZN@@c!ocxK6qdVHCCbFJ}ApOTa}#`YeR*uQkKuH@r*@JGnYFx7EM7c&P%(e_Quk zAd5X^;MzZ@$O@hIL}XXS%^b~_ICVZ?b5J+8-9THAW%Jqee@M2#oMPeLTQy=tbr;?x z>vmpiN4QJ-w;LinALM}f@Hj8>zD6UBx{bA~hhTL?oLR^o_v!&BJiQXf11a-#Q9>@R zvtd;jf$#8U!d9sM8%%EaC@{?YF4?37XCdwL<6m@5{h5=#YHqiJn&tjCHv6Eb&AC1N za*T55w9PBPNSi|?{=+>x^%PmL>lzkJ*jI4X31Yd@zFDcy!UOj}14UGnrY2f9F(Lll z&RwDtp0C?wiV17id*_@OHFtOvX)_`(e0up8*|nXJ1Agp@(2poaGt2-=&KR)HlKg$3 zFgNt`^yFRl=kn@Z_-p<1@XUs8N@xrJPlA>hJryDW=~Gx(X5vTo59SP*A*a?&X$Uv& z#y1jyt}2}HXle{7;=+n*7F7lvd-m1)fy70P)N~GNt=Bk-ppb9)!-B(R7=9&m<9~c8 zYpmGUJZ6|#pyNd2)B|Pzow8scxZWpVb+4#-T}m_uUYL_&*}X6S9p~3i%`wX> zo?wgXnXszV|8`n^R!B2YGDHcH9K8|$O`%&F0a{G7Hr-Byp z+b;j#vrB>xlQ&Kr*c%HoZviOUj-u|mK^wj#HU`%jA{+Aqxp!3X zeJ`}pX&cup?*PnGsU=K^PwCtq?7{2&_aqDo3sy1WghC^g1t#q0bR_w|O?E*Cz+Per zu9FHFlK-Y=tAx1Bgk3*T5xv3R#Ar6m?@#I#MGbO$Y0drHW=sraVp|9q^CM zL@E5XBt?BSTAKTWEINiWHfv$gZC9*f%v`}fC(Zh3-i(j>)#v}%N)5^nXo;rEF`aKC z)fEI@#cQv`^Qq@p8(YflTaeS|A-yxlgvFY$y+>*!Y%>cJvfsSElWnAZ+DiA*0|`Ik zZ==0oA+<5U&H8;^sSllYQUN{H`gT=3$$!jJb$>sEZddo<8w)xmlEqe}S+Jk^|L*i= z_ILUzOqrC}$-Pn(#|kF-{u}>%;H?|^la<4-4sVjhwguN82(-iKwWc1I7XF6kVa4uq zA&+B=hy_eo!G7@z5;WWrq~*a}#rI5I5|-HZP_@||K_DVO`6rru+PJZ*nriaN;IDLf zLJ1AZoVgIoid_HdaHqDrc4$>_IVG6g>Y23eyOF|z`GD;->lz{(OG>uX_?mx_V3mlJ zl;7-itz;*7-C>4RQZiEGL`EIUpc(xRUsEXd?rB4@>1g@gA6Fhv6(IBF_Q-dk^ul5z zg7p%=L{%Fo`XBF}lZw|^EV!23gETqUEJ4XjTO<|Tce#rwUEbsSG`(@U-mY3=2XFUs z!Z=|o^Y`OlL3RQLsCP^O%JCdYfWFelG>XZyV14IA36Hrateo>^i~?n+_`!qn?92}1lOI%y_e8sh4V)SAXgGYq_U#m_JF z-;UJ2#c|Gk^HXs!4{tV+&%WZ}xv6E7(d~=IGQu9`${i?9SQ}k6D%?hG*_FUiPT zNX6f49X%l&${O-EJf(oXjY7QY()~cqlg7vEGGZ#**TT2^*1W~TQpBtj@4LNIe#p=L zJbcbut=%ktCu^O-~F}uGa-ZO7w@yYM(6B$|EOlgqUc$o zrAg%RoUEE0aczndRjC(a)XH7_AsPq?~(Z?3DAJ+bRU&n+s)$ zR5E`*==Km_*Gt9Ldj%e+63iH2qQtN8A3=jkm~xY9$HQ zJ%48*QP>tf_xJ_Yh0&zqq4(5sSA3UhbW6fp!2*v0EA`E`ZRQmnhhHbCdA-zylW=zC zwPwj|y#cK4=ag#DOp)y77>P<00bl5KY(28gT>@Zgn284zkzc}3vLyuUd_EqMWUW1( zwWBT`DO1(`OG$0jH}pka`=!Ionsc}AG8c9DiX-Kg+0s~5=S!o5kzs}5A8kNo(t1#M zH~m%riPbYbxgreq!h}!`E24>4xFo3#d0}&o4Y$EebNXCMZq%K|&1Bi=i&!3S+YxMi z7Jm#@&_F2fSY0BuT7k$2ONBWLDj0yn*(cbpgPjs77RtXaLjXlKdR-yb=kL!Gekg(; z&7NT>IM~o1ULSj=irKs`p`MvXA~Uk=-NLE61*LatAB_5hhp?!{8Mm|M$hzXyg5~j- zE0qaWzlo+7oxTd_cITF!uLM^qJ5@cha2Od_m*=~00CQR8;yKTlKU_p-)`%uq9PMIB z$;V~mjhpRp5ys*&y}D`4*^%E4BSv4l4@8f=@_#a8&E3X2yHBFNz}qHFkaIc|r2d6H z)rAi&5qHAvv(Pd2+UN*7dCQZFevl+k@oR_^R4I6wqW4X@{n&i)n9eK1? zNU8MF!d6Xv*>KX-j5yD)^j5B8Y{hFwvQQUt>EEaqAnaR-F<}IpdXNGW;Va`+OAP;A zzhQQg-y%35GdnMQKN4&-<}xdNjHi}6V%nv=(!x(oC(&DvMXws!#M9aLiWRH2coBM? zUh4{|72UIxZ@$o=Bp(<{Yaa67tZL-iM6s)9+5C|@lf-vs3sueCLO0%axV3HB_;GUu z%Wp^dm%hSlDE7mZS`zQRD4n@?|IF7{eeYzgMPHMgq8x@0E|^YpCPiIBMjaj39%%GO zciA%rMNl=r5&yS$DY=#r-<@A{;;AX0V2MnXhbf62Ls&t&*>JuiF6GBHm??coC(ZHd4;wiq4$@KwPpYA@ORyvL`vpupdDDEn5}1sN{m~gSK*P_Z)ivA`k#GGW!P<$#2FAH`I9^ zNP*XhC4S2_v4odmF#sAjH(z%&$M6dU$dR*h1WzR;UAL_}E3(l~D?YdTEm=wT*+Rp4 zc)5d>Sy}%13=_d;e#}AdZEfzCi5sq|Qrjx`92PBA5||o8SSs*bUaa^u_cz4h{$j9v z#kS_U*xK5kNF8QZ-sc*ztG~v4lAP>~h@*CHw!bCMbbpZhZPdJzcC2XIHEjIdtn)4Q zt;OWRot21?^r{}-#w6osv#k`r@MKKhh17`M_)^B*_U>R*YFh(+8LYAIxG#E$2pE8j=vLOjHSfdh4Sw(IcI zkpqXL-hVQ13KWRpu#O%7m2@YRA1uE< zYdWtj;>W+I*wO4H7<)X{luD}<7xCdw|wtQ1C@oQWH*12Lv_=&#?2AvHb>!HECU(^*GF{e5klkdhLS zZs`UA1u5wUX{5Wm8x$D25s_{fq@)Fg4gu*Nq@0Z}v1@I|^r87*JC zN(2L24M2acH?`OE!Ve`refnfR570-e&3lew0Otf`W#FsM8RZ}&D4IB`d18XHF9Bcxba zk7gzem=-Mxv`c)60~ICe>{3I54ClzLgdhYhEG+ccD?C&wrXxXKh}GkjJ{%9;mLgET z(O&p1UvD&~ysEAt^Ld+v41J}WaNd$4@epd1*FFK%qcu*6Y{R%iHBQ@Oe$ZeC3Px1E zb-)+8yJ3hJIc<+!2rb6WYG!n|`(jeUi-sU{w2%7A$*pocy=yV*9m$oq9P@*)O93y= zT*poR;#dI@Q?Y9e5EN6IKrXqj3GKpwvmOZ>oPVE^K?JbDY#Yx?xX!GnU(fgN{u57>M3KY?+8BCTtp$jJ5_a6rOD(D`-32q4iEv-)nx zKtdJ0&RR7XP*F-=Eapog0-Vq1pJtB)pB%?>-GKfEW(XaaoOk#+0T+?&PRDCufJ9aZ z=qiQO?o{c-fiG^3~!;pVKPp&7`PsYjTdlSZx~2bb-fh_%jW*XjXmwKm5~u0f{Pkj&`5 zMvzO^q5s8M@pMG`#OHR07}RsN{Ux*YcuvQjg-dum1GXF2N*Y62n|Ju~)~x8)+k?7= z#_XKO`9?w2x}q*V-t+G_y$hG7^HEuy{J~>2)d~JUxW!YEfH|O9f{Uh-j3WJB_Rx4# z2WUffxa(1nm(^dkp#G>S7XEiXPRcXuM-IT<1_ao2X0H%fSXhp#f`l!~7fMwn+~I+| z2rH8+L}mbW`V=Dp7xhqJD?fE{&ASH-_mF^^9Z^5kGQPsMKxUHfuLT5t1yTXXHg{^q z8w<4!Zc675Xa}l~02~b{b<%(PPRH?^eVXKNHiDrZ6qw=6@t-=&DE#s$iG9qfRX=Hh zHpB{uY8a2;5>)H^iNPn68rWAo!mz=@2&Lcb^889rYs8)#n+;HwFV_&|Bk~oNoHjjl zJ9(~s%NM@dXvx|E!XDOPR{U;G3MsaO&9tJ6eG=NdNzR?VyFlSjUYw4;vicU)W{IP~ z77yWj^Fd(c#hCLJu2QObD60W)_3pVS0)~Rtkx<=HpG3VeAgNXBRKC%c{o~+)Bw&gJjRGL4mqVPa$Bpg6X=;AEuN}!Js_)SV_zC}R+g%!OXLl$t&teJ{5F#AY z_=gkz;)fx~_(9uzI1Y(-h!X`_?eBCn@`U}^tpJV?obir@}oadX>46KAb*;Q@>6Vl+gvJ$ zzv%mGfPg7VE6JZ`@|9%=YsEPTTJ9?b1~=}9>obh+3# z*H8g;+ubdpLUzVl1i(PLI!6l&dPDzXfqj7G1yJfvi*E+(K0AtYeIB&6#G{y{51XMI zKY}55VA4N~am>b}r^`CWYbiDJe zfqySXT_C`F&ECJ-o-x5}6;kD8dPzwpKWFEG(W)+Ix2vgT#s*(yVDWMc~ zsF3UraCP1f^eO#@xxYlqyE>00uUE`}MY%BOAjIn+$PlQ-Fi&Eb)s+OK+GB z3K^<^axF_B2m=P)1OWX|(NLvD>m!lpCr1yb-Uvty121bLAUr4i)D-lAb~t0M-7O%d zy^utizqCz%d9%{1plxMbCG;JXjAsgvZrIjHz%9u zZ;lSYuU&K{MOOb6h3;&(Y8F|up?(nsZbd+^-|i>fL__oLhf+6NQkgz3A1NhDbx7SW z&lT=r_4V-d7ZxRP(^P-bCt}Sn!*c11lz`U~P-9?a1!}K*O|Y^(pw*=MUys@Qw0BM% zPZt8q;q(HPoWMCiJOnW2{ieXd4yco)s@X7web40QJpZN@R<*t%1f1xJ0N=@}rXWC2 z0Qfx%K84pGmCZO*L9H)<)*cd$j+Ai%Tm0lc8>(u0EEIyC;}TQ5%bl zcgtu7&F;x30KE`{O*SJ%DZ%31_r-#X>nw@mi-ODD#A4H0+RYC1J(2c(10s&o*XT$E zuRQyAW3>{L(&Uo}=dQsG*8=?azn4yhsGBP0FuqxK+X z7A=SnX20ii%Pzm{i3-7swe8pa!hR#iv1SyvE7?lNn^CUIv36<{uq~|)k!wK9GA2D( z$Y6W`dTzg@OVenEn9ANSrwJBLpQu*V>C=vT_qVPuAfdol7TZPk9KXDuroKoY5+xL> zYcd6-%LZ5gt${kP-32KiB@qWY1kD+F$e9BHw$0=^W7)k|0#joVU3rvvk(Cc#eZpXPZ$5?_*lwxAtPm zQUNm)(TMeNoyzr`ONMvy)~^c67XtJp~apBS}t{m;67jg zVz7Q7L;{VN9f5wa_<)Ed^myH<4_`$HWYBW9DR0M<{Z`$N+AgeBYe=V~nc^*KTPw2H z=u)K0>|y7H!P~*hIh~(AoPBI;{WgzFAgZ_U^C5+MLUwy}HOM&wEb&jdD z=M>vI58G+d)(PA0Cl@6aVg{=ihk{gs+(09nKb^q^WC|9NCAq$t12Ns+Bjv{AeF31K zmV`%Dc^}(KV6IImkpxz8yALFC>ibO`GjS0zK29%)RYLKX(Xyf+&W<6La zyQ~flRfJyA!W8bqW8ek50ZEWdo7EM|MTv{j_=B`)mwDSw7g=im9=|JssR$0gq%d7y z`GG0bf-3igjZx@syPedzg&c-XgrjbV?TOcATo&@%`*Y=J zpA(y);AV%FOnn!-|C!j)l0J$axHcN*x)L(3LTbmB=aps2CqJL2D2ZMtUo)j+ zl4#4}Y!Cf5R@yLM#MGNs={A`nhwCjEG%m51%1xmnd;OccSD;vTeF0xMqcaytAnZ~> znoumX!olex0bELYfq+0kDJLnWA?+jiRpvU*$)K`;{fy2=&aU?p9q`Y{BC*g29!UyQ zr`#D2h3-6P7(^WgcFIl)TQ}$v)}Yll^A?%L!NyOGT0$b;vg6N-l(lHj+tHY0PNd5S z(V7%IZ!H1)$zn6F7!*@~b?RMV3=0&o`PWt8lT=)%*=}H#Uwqy49qb&vuQccP5UI90 zsjm=T07BBRd5^p))>@N?I)69a4PJh#a<4>sC}`?9;eBo47rujT4%FDE>7~m!;)@=f z^(qCau~QYzhnnQ9T*t7$ZztJ03xg^}MT?ZQr0we%CVJsIN z`@9(`P-_wFYl*5{mB)KZCniyNV{Q;D1;0=+C`(t$!|fk)7mlPswJ@%w+vQZ8c}KXF z$LISI1r8ps%`EiNpvk+emsSnPv}MW224>Cce(DAl8yq+$cIrxd{J;7-DvJrLrBv?j z*)u@76{b+J2V6e#6pEI zx%$FnlE1GzS%;Ph6{p7BqzaxgeFM)6>-P(UQ)AR^N$p>UC>@o8VxLA_G4HW-EN<%g zMTT&pC8qjVLYHX!NCV30^s9b?xi(v&iNeL*r}a6&pY5ySp(Q7ssMCkEo+8c^Vmp;$ zNuCTB`m@G!D*>@Ou{{tPeLf3Z)aH3rcY$Ve3lItW_GY{4|1CWVolaz5qbeKT4pZ-& zuGZK<3X>rDfSx1i^b1Bo5fghg?1FH@)or#y|BW-mdFXa{*%ibpy$v6<@*at&8#2wEqUzxJRxcDg!={3}5wGzXijV|a$Z z@OelofFWi=?!J!TANhT!E9P9C4xg+EeKTg5AyjNgT0x`ajjB=7>ed&4&HNwWGA}jf z)!>9D?ftRaKAcM>XUjzcN_69lr8N5+otr5r)Rk&DRydD9zCkZ6z|79POZ(#@3T5Kl=io2sp2Py;P zKT}+nL=>24Q+ZP2VVtUM%i1v~vQvR?)=!}taq}9KsjL1y{38?@ZC$WYDrNs;+nA1% zkkqXY+{E{!s-qhfz`>KUA3#mHKr>OYNq?G~&?yw8A0t{k8~!$= z>PWcY?O_eUNQhdpF$vnSES>}1f7MMk8kkG#fP^gv*)B~zEnlHY?IGl(2Gl|52B!U2 z2n5rn^`vcG6(G9SF?iUZjH{*?dICpZS8aAn$U`@$|(n z)P}fF9ADCB5xU2N^|b@p{p3%{or)LI4n%?*mFyO1yU=m$4SX6P8UK$uxJ=xvzQqCxv%hQqG9Nb_JbR7JTL9<+x?kme@tnG_T+nXTRr_DnzJ@G>uSEEH ze66c`8fXgjF8rdcajKAp067|T#yQ-ez4r8OewsV+D||Oxg&~Dp8a_Y|m40kFjeKYy z;NmI#PoNc=P|om2mp58?xE?61Ax`IG8%-LjWSyA)E}<3yQu_$$1&3ywl+zi|0*z*eEsRSs3eHJOh8v^_~*f8)t^yXTuwP8>y?<@aku zOTY>pJ*KPcdUH!wcWMuIU;kG&He6%#pyObKJ4A!!Bw#{rqsS}1Tp_!cViLtoh3`9Q z{Y^X}f(zNBd;bc*H58pVb?&U($NM+bMi(W%lxhQpSd&TVyoFz*KpJPEQ0U{op`_D0 zR{SlGAOH$LyxI5lsVb-UfDYGE+e$|BVnd#%}nNz)3^% za!|!c!MnyC;jGbG#JR88s%1iZ?`&nw($Xrgrljd5+5eTl&z(OX~ab*cz&y1^z5NQe4cifFDc=e=l|} zIe}gb4l0VnTGu4}{`<>b&&SpQn2Y5?Ms?wvH8uG|Hot9~0Oh#buBeuVfHh^||Nr%^ zAFhH$^5obE8eG+zmZm%%dW5XHhuovVB+}S6}Olu>+_bN7ltxrAl@yk zGVe-*r;mQ2CdggU@roecFrcTZk-p#7^(**c-}~Jmll|rA7KiBXhjgrbVFmQ(M$tjp zBU93lzaTk^Ct4afHQBJ;GFSwfXL;wfXBWhYIC1*Nu( zDj;GGlM;;m4@P)Ny7g9SPx`h+&jmR5Ebgt2ANG9#*=`~=16W(rXhCF0D_-XL#^#iS zSn^wWrhqE(I`kO~1%h(#GN0hs14My_Xm0fC1wB~L z{H1xV$P9b;d6@@X%J|k2P5nT74hv$SO%S`A+UAW9d}yt$%s9Qw+X+y!ELNxpHBxp{uUOvjJ*?9t$$E-`e0JE z>ZTX?Si*h&wrGL=>MoJBaNXPP;X%&7z3?*bx$WL^^s$~ZSJlhipm8+0=a%qOem!o^3-R=+QSm>g z=`bSaa?TCtIZ8QxKy1>ZcLfy9b(jR*Fz5z%!2G5b^4POi5%4AYe)rPKBYQNRmSRJtsJ=1`pamkDek zlDPF=3xNWs9@a*Wxi^{E(c(vFb)PR-y~o$8R#*;6uq3Y%i2}Fu)y02xA1$H{{h?Zv1bY= zx%dW7R4;mpn>~hGUVYi#P7#omeCbT`+*+meh3^;J8-Fd_NEtmyKZ(U($@2_Jc>W^( zu}_{TVwh)cr}zh3w69QfS~UDm&9H3MDuQ~e)9b0Bfe6N4HTfuQI$M9d&vQWb@4u|;ABQQBO#Dk0Z&^OQUtUu7vKV5yoQQh2Ft%bp9P z;+sAn*UX~2UPaYD4>GZu_#nH9mlkt`@wvJxW@laDEL--H1f0#I?}wc%nd)6rQMCOq z?x%eIASbkDZcBH_NukYuLss@4o|(SKo|RL=tnV;%*TZ-XH$Em4>Ph=@E#Tnor@Dam zOY6=fK3KBPM8}Cig8vV(Qn6^V#g=I^T`J06u$Ig`)No;$N{goxO=Ak%81s=8`K_&- zMaa;vWAj+6u2G`_^)jy?*ea!PC+G{)I$vb@i?xjRO7|6ZGFe;C3gp^mb*-JBf0Jlm zY6yfBO~r}enH+%Mf#x#vT41?1?Zz9an(;*Y8n^h%-jR9{&EzNBnO9;jG`Sr~w;xnN zMq!vAYq#W-UN4L8>WS+LNDSV8q>s0$$@X+oFSGQe!}dvFrg9oyraAUg8NE8w!V(Qm zvW60hR@AXbNNef_^RHsdnw|!HUMR!z> zzJ4XD%d4b?ZJ!ynTzKxd!8wc=x46E%zOwhPVT}s!&+n%2dBTB#kBX!Q|iVo?V*d!;iQM6z;QS zr~H~at;+Cp8M@{zMC^`-$9n_}EmOou+hu;KjwWb~B>1&j;xeyT2_$Ar4UzOyzpyRM z3F%_9vVyjws79~;QHwFNjy#CC20fo>_^WK%GJGaxNPx_GMX#Z`&Kviw4(LuZC9Uyw zMvYHr-CvB(%vuwU<~N)dI5oWwPfu?*`Y~%9>nCCtkEll>T-*Zr0|`=lr=uP)Yrf^Z zo^#G(NTje>j*1p~9GP|$c(#vaBRGEkhQjNtB*^=KYt%ZkAew`5DaZE5D$u|ZWBi%& zp|9Vz){qCb@ehf;0&`6E3SBi~$8u^>Yc63U7embBCE27ftldN-S#Wh`S&+W2;}COZ zNOc@7+6F`{j6zQCMbE?6(=-q#)+AcMv`9jiFZv#5QR63hKD#exK^-#fdUoHgbK{r- z4yNm@G!BJfcML3vINeP5+qD-YX{z*UG{2lm-4lJCz_FaL$fhO7>Bv)&vo^hT0p|Sp z1%Hub>^gJ)hX|QFlLGle9(_?9NVt5*Nh<1aq&2g0I|wgB#J2|>DK7jKS884F$rkQU z>kyi8v>f(3PEw2-lk!FD?E4L>Fzh*TC#cU0EDjIC1jnF^TKvTlFsXYVX9FGOUOy9| z7M(DaMm^p=a>w0gg3D-uUpxfu?g!lS`HB4{tp;jz4=%Hik8l$AYm)n$gjLkxr$Q$#P1ukz4_zW#9PX_*;@!@@ z)o&BNg;Vu&p}U?9m`uw}x4(S7P%*(~qc^0|s+P>}zj}cyoVl|OoPPceJ?6&rc-n8o z{L)Pd9d!pSupxomOUsdJ@sbOgUG5@3;06RUEjGNA({At5;Z&tLRVK(-i*apBn$Zd{ zH6F%NUD=#Eu&-?YRgzP;G}nS*ThMFxw_IOibQ0-x0@=G{L+)<&$y@Fle40-oAK4uo zHHB8H&3GxrtfNhZNBbtc^wd7>1<%L`c>dU<@#wRB+f*i@@EpDGD|TssbbV=%+AiIr z80S<3y1MB@@GSC}wx}|vrGVsCUhpD+HU#f{Lr zyWqHh(I2z)Xpx6G-q)!oZ?4^}=`C>j1`yrNc*}at``7^ADmLoeIr1;zQxrPCy+fLd zd%3&UDoIE&q*^Upb4Qzr9JxjVpEqk)#vC|>`^kqG$+`yUaTZf(Iu9vO+&>;x(kZyU z0*No>rFwvTJsw*KAl2N|0ZPG<-W5_W8^n-FKfZi3o|8y`a1j1Xi0fgSyK$#yr5gjA z?}Mi>%g1HzbGnnLdySpBhlghtu}IL}bOqw1XfyRTlkmk8Cl#^?A_9H!AH%E@l zyfwhkoXz&DdLhCM(7WScsDbv zCop#rTbzUtk}042-juG2Hk#Q6^?uL6DXNm2t4EMPynM#6QR=tctb!Z{|AFWqzGe$J z&SV{AAbwYizv@3E@xfodmRzm7-_I?P*~43Z51EU&#OLto<TKrwiD&7&6Zx`Iu zbme?Hv>0>J?vc(OCoTQ~j;p{|*cv;XV3-73+c_Bt{r1)8uJ{?9saH+c#L8<0zF<{9 zFqb|&TUGI@j&f8YhdALGVsDVI@WCVEE%;dlshYYxsY<;QmV~ky`klxX7`{@~;q$j1 zQ8kU41cb{ha;1gftgn{pcUt-(TxyG_RwZqzUPK&~K>to)&5nH5KkJ!K=+EhdV%|Gm zOM2cbWs@eM%3g-o0~p_&N~Y9y(->p~+{Hv2jZ+*&#)CJEWelpn&h&F3{-9-im8gSx z=4niYSnuomHJ|h{x@_OEWYlOzSl4T%R+VDFX|y?_tVzp3hY^oYlhW zo)2X$Vz?)XFWFP~57fSr?`EkvuqH(<~=0NQ;DR0I6diVH>91yCQ zzuq)nz;J98axfA$>xXkLOEJ{U`*|DG!*;S1BJ6R_Uc0*ROQ5|%MPcU<4EAPq-xt|J z{e8U=KYVw4lZ^b(UL!wBb%gis9Q7>d&x0he{59CTE9_vW4^3pj_bC)FF?b};Mwd`> zkNu>U*L=l5ljJLQ)NRgJ2X673uJ4zeUUd5YB@rh)tI(;J2I7h|?bJw2y|RC*~+#V>*$ z9cKqQHz*~>+_mYIvzcIN3(?AAwco%9I4Bb5*A{ubz=JX)-48+kq6Zgf_cngzyZvxF zeazEqkv}q}f$sL58`N$uaz=H8E{}IHzCEH@*ZQ+8?f;~TBTxt2B@l-)YD1}(ly--0 zas^%Hi=I)K4qC>qwzVQb*RL2pDT!~8yyh#sq(+8;CR8Z#htg=6Nyxn+5XwvyJNW<% zt>p$u1z%=X!eH6>51Ca4GVdYCy&WwI&6LLP!r6+0R-yB8e1&GLRn}6UR+n^>W{$G- zm}LH>7_vlPs3SiQ(C4(_FP+`#n^-uf!2KD+NX^OU{eD$INu`jkmz9T-I-qLDpi^7y zJGF&Ruj`L4J7;Ax!fAm^omeL_BTLPF86H}ukmgC+fxevH{SvCp%=y2h*Hj6LEeq(8 z&-|_GM2h3Enq&A1F{*X&*&V;QZ)?VJ)}fBUm2Z^6mDQeJMa8e&EaEuQTE26=$~*AG zpu;=v2xedA{)9s?+jr4%_R*T2#_#BwDCQI+(j!J5t2|lX;kx|K#y%2x7)1%epYd~O zECKpbL2H~B+Wtj9#a&*^ZA{i^p$h9w-2CqQxj^Fj>$cGHZhkuNrFk*6(Laoo^rpYp zP+B=<95X%)2YC~Pqa2Y=r073yktx!bL0f7riIChuwp3z2Rt6hLlr`QRw9GWy%2B#} z{_A+_6xkqZV*T4{PgVu3l$i0e2~zr%-oobwq)7F>(`zNJlm0fOj5@)MWi8GTrIOJS zi7IPeYUpcZ`TPfLmuKQPlkY0l)X&uBB~{)Rg$Onm5|pL;G_CjEQ_q?ap#)A}rCOUVin@FtcQ<}_d^f9ac{bF_(`|x{|mVm3qd}J%WijokX=<{bKxyQiZ%wmvG8H0y3M?L9X zFDO*wn8{E=7j1wmm-(IGFO=6jzdO(;7pX~Hg;kOskklO9{w$0t^Q)+E*brX`FojTp@*edr#P!Bj&q*hu+)5ZAp63BL)ImmfhtJx%$G4BtuD@ua^@f*2GdpHZVYj6FF8>{ZG zSo1!|6^S`7euPn(bh>qGWn^a(U!XRv7c;T!AR+$+EJWC8(awFhCkB$y`T6HZxIter zBw(uE7n}JvLcd$B_z5mz`wpUL)IEvJ-EqrAGBu-n`uuq*{~4xoU5}WPQV8)}pQEbmvnPG80vkSSIx^&-0Q!T3TxN9)ZkH z0j~mHd2ZX9h_fvCKiuy*<)MXa>zODa-fL%PS^A;X!qPrwkIC`(`e5 zN%xo(@|+R~n9KXuk#22}ymZXKtZqOmcW%5b*@TrJD8DeJ75z@FIEy5W{AQ2xIJ(iw zoIqqK$EkA(pP9qn?xKKA1w*cSmdXqga7r>RnDk)(j9pKm_1NPD)v_Qr!5< F{{ePaa_ay9 literal 0 HcmV?d00001 diff --git a/ansible/roles/telegraf/files/generate-api-token.png b/ansible/roles/telegraf/files/generate-api-token.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2bb26596d0befa278eada5c5f0b085637c2251 GIT binary patch literal 57407 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 literal 0 HcmV?d00001 diff --git a/ansible/roles/telegraf/files/get_telegraf_proccpu_json.sh b/ansible/roles/telegraf/files/get_telegraf_proccpu_json.sh new file mode 100755 index 00000000000..bd70eef20c7 --- /dev/null +++ b/ansible/roles/telegraf/files/get_telegraf_proccpu_json.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +SAMPLING_SEC=5 + +echo "{" +pidstat -u -h -l "${SAMPLING_SEC}" 1 | + tail -n +4 | + awk '{ cpu=$8; $1=$2=$3=$4=$5=$6=$7=$8=$9=""; print cpu,$0 }' | + sort -n | + while read -r cpu cmd; do + if [[ ${cpu%%.*} -le 0 ]]; then + continue + fi + cmd="${cmd// /_}" + cmd="${cmd//=/_}" + cmd="${cmd:0:50}" + echo "\"${cmd}\":${cpu}," + done +echo '"z":0' +echo "}" diff --git a/ansible/roles/telegraf/files/get_telegraf_procmem_json.sh b/ansible/roles/telegraf/files/get_telegraf_procmem_json.sh new file mode 100755 index 00000000000..dd513aa3781 --- /dev/null +++ b/ansible/roles/telegraf/files/get_telegraf_procmem_json.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +echo "{" +ps -ax --format "rss command" | + while read -r rss cmd; do + if [[ $rss -lt 30000 ]]; then + continue + fi + cmd="${cmd// /_}" + cmd="${cmd//=/_}" + cmd="${cmd:0:50}" + echo "\"${cmd}\":${rss}," + done +echo '"z":0' +echo "}" diff --git a/ansible/roles/telegraf/files/load-data.png b/ansible/roles/telegraf/files/load-data.png new file mode 100644 index 0000000000000000000000000000000000000000..7094a0378ce58c16c4f534354c6ebc0cf182f8a7 GIT binary patch literal 88984 zcmZ5{2|U!@_rFRdC6AD@R!9hCr-nAm*!O)b*|M)=AEKfZGP3VWb~DPpi;$4r*vGyN z#x^GV|N1`PZ~Fb`^?3F0S?1nz&v~Esx#xY~sVK=%kkgZskdRP7WuK{$kev4?AvtYF zb`JbSG~nDB@DHiW6Q~9m`1p{Sy#>Etca_p{Rd=v(bvJP~C$Y45urudzF?BXKw|9Br z;EF#}CjoBaIlk$sv$=_@m4p2a4J$iy5{(z|8~5(tcnr6^!GDim@W%c7;`jK$e>Wa0 z-jGw*h@WN1AtAXz0)6&a!y{pN%+pnaaB#GaNmO{r_UH!NYlOP0@X+H&k5wP57OzhA z=tWmfKG8q0wkb>2D$t28)p}pm2OBk4)ul=Ok^43HC)b@lSjn+dFF9R}*8| zsDDgsI{ivemT*64zmx%~^&Be;$1HlNTXCLk6K22O8se?RhdMj}qyO(GC9wUsSzx8x zO6H@G@g`W7kRsmmv$Oy|JuRjzEVFYIH!C4BPWHdMNl2`2yf~mytljO%YjEtO0Qbre zcMORFrg+Medx9#0Z#gPhi=5RClTaFhlt~L1{3!T!O_N&6_T(m6fkWto##`v=s+Qc_ z{xH+DJyPNkUaNnxaLyUb{SY~ci5{d^O!hRF?iCBGH4~rDgkHIJa_jJgpKl*t z6&t1=bQer)>Uui-bP$4GUJ%FP5C7am^3me-)nzJ?7Lcq_A{B5W!s~47uNN;Ae zyCZ-4a~XEA^Cyq8(R_fmG|xs{Q*!$-qOLOzogD5nJ()WR81a5XwvqanwT6jJWtJnC z_oXWAv2*|T)8~8vS?{X|r)EdMT=H)F{NqiYb^5IF|1JZ6xP61uH*TOzve1UPEU3`i zFt&TEJk;(}C*#RIz5xNqD`i`n$jxh!3RgImZzg1C6|yyE1l{{{&&%X|N2+ozsctS> zXkM4;plc`WVzwgW^~s7({F67yR;X{caDQ2jd?fnG-zyk*QPjfMYA}wG(kpCoVFwi; z2>ok_LH;SGS{+wwHLv3aTKj6h9*h&i!gJ3`du(6ZUgSKnB=GG7Qi*F&qcH8FeIG@i z$@`Gq=n>727#+X8u>$d<59*(=<*GB+df}nEZ@RZ)Wq9cYh@O0Z=0NiCTmUlshNz8} zfB{0-J$(DqC#^4{`jJZx9-~D|c|XVhn(pPe>&fjZ z7}VIUuvek+*&&VA?E150=m@xOslDwLOe@_1*G9~OnWpnMHvf~Q&v^IZil|yh z!4q{O^q7+u`O*G<`0gee9TEO4x74VUw{o3Gv{HuVpvu>5VP50ct#u?h=E_-zOM1#| z1~{q>+35`KOM8=X?EdAGDN$tKu`5bLahmik1}?FO8}YaZE|SiKDisICq|9kAc&}I% zWq;RW1mt2pvaie=vvimHVVr~uQTWeHNo3FX|2ENSv|LsC;T7ipC~&m`QEXqkfy}rn z;54jIBLo(84~O4+fALpObemQ)q}GA>Yu!G1^u_P?vA^8r_%&9#0_zKYU%gz#>f+Ts7C3Q5gzFzN$<#{dwDfS9UtKWq)9)lqrBrI1P=~T&k4X2$ zKd&L_c@)6rNN^SZT4U(zjT}$nA0x(`KRie{eQI%=0rhqW13W>m+{|;-drPd;rHM_5 z=Y!2m(aG~KU)}sigePw)n$DnCFp#GPKm7}*Ut25LGMF4 zWX9KnJ;F#8%Rovk#I;+u(T5IGCPT;bo9i)Ec~AkF!e8J}ubkk1Mbtb!)zgSqGjC3j zFf%B*xLqfaTXtKyx5Lll(R_%gZdRh`oz70*R5jQP!X>=KL)QFy<>4Cx9Aq@HnfdRQNl7Q0jD z|L9RorCV^(+l4&xNP{c&CvWNbAaKE8Ec*HUW}Tk>SiYx;KUfpY8uj^w+Lom5kDI6- zmS%}e<+;0Ewfy*EhdO4M5WbDw3HuDY3d^5yYP$9CYJ}rDFWbw%Lgl*UmGVlyreE49 zy}Y!kE6^SQ2CjtclaQgS>IS!{jAQdfs?~s3u2}UkR#e8Xb3U-P8_SF`{RT zWrhi2v-s9(5$3x--B&u|j-+OM*OB$ie7z-ujVT;!_5Npy-SMaxOa>Isy!82VA{bXxyomlV%2*a=is-OC;dTGk%HlNblRWnRIjYw zwG@q;P$#%bYKn=62?Vx(yvhSZeLL{Rr7It0)g7#A;kM2Zii9@$Zqj=${lj#J4>KzD zp3vRiN$9jR)Ozfjq{Qr+;01pmy;)~~Ix{;vtge>3W5m$}-(*_dqPkl`9VBC$^6(QUhYeb|tD3`Ps&-#{adzaXZHK>v#0XKsAwLpf;(03olU_K%n%Vax67c zVznb~D_$l5{{7#N%EjMo{s`o^NHtZ_G5u0)Y`$UEc#9iqOEdG=u0i8D%ECG2+O5ph zJ&XWKsMi#5ayR4<58_?*B@B zu=qJT3GA}Jz)TG&i+j=G9 z^Std@c%WVr*v`fEb@T&DS(-UG%e=_>%c+svb=}|JMIeY_OnZfKf>voG_6+Iq4z=Ay zlxrVva=h4Dz!4VGk8)c-|H0*ysEc&|h*yQu*3wW05xZ_(?NHUCfZO7P*VC>`6Nlm` z%$J{+&LQZ^T-?J;S4KZyw$oqywRe=NJ)Wpm;b>nRvy!B3{yOU_k6yOlkp$PBJ1W!7 zA;mTrd%Lkp&5Kv>_AK?=v)BL3?C=-UtSBCR6uMR~zs8%W zwKEK>a#Ias9@Eqr)cE}QvtF5fjYa$KXH8Asxg~RP#dagYV@@rwI5C%~!#%8JWF&1o z`QZT`-{sO-lL8(EDfHeo4YVPoKlSN@+4=cA-vh>#aaaZggRu2vgOpy~;a;2vgH_q> z|C#xv>$Kcy8S3g)&*}`cQAuBw*Y5OO0lnlTA|!dO7NF|DyED7igA>!PQ!gcQlOt9{ z-FBBf#cLgu$9`As3C>0gX?h3wUYN*`?%k2Kk|n2G;;q|P8*}X?ER9w~;GOcc3I@uZ zlyUDkk`yY9M+!~Oz`R%b>4lck$}zmW|&I?q{Juiuk?zmp`5>zyiR zqq@a+W+M7h9wV^RwfoLrl02rMkfVK%H&0Sy4sZjA^i0M0-6U*<3&+Y>Ra+c>xJ3WW zn*tkG#s67^jRBm=*D@JmLL)zrObl$~~Dp zBW%zJi}oIQ@XIGS5Br3dA+?16Fg(CGr6FJtBw-Zh6%X&g^f18{xqp%+)|!j?AkCKH_*?G-q-GwJSw(4rGxxh zROGr+qHS}yf0P5f-~!t7P6*3UTBh>RcNgr=d@`=0MlpUMPH+*Xm@FYBxi|Eqyh#hX zG+qnCt3W<3-pSby3dI zFXO$xr_kF6oWZAatSIZ*`OA!Ny${YamxBTIZ;raR@ub6tts1#X#xFAs=b1E~ixi(X zjt5~UCnslGdj9k&_{wnq7ZBa>T=lHbdHBz^HtOvstHUMlQB|vPxqJgp?F{~~kow6K zYv@Eq3mdZDBF(cpT5S*6$>_EGMMgtMXQ9HOCxa9CEp}n*Jzp<{$Y{RExQG1g?CkxP z*%>n&SX!+c|LnD_hWYKkuRZd8#dZw$UK9R7u07Dk{%qA$fN-clii>?;OtlYY`G_xC zLKE-L(_Ou~^qu;Ai>j+@4Xd&^!?(ugIz-ZVislCkfEAdu4+0j<`XB2SgGV@`{vR}89)h~5P-7> z+wj#<=<&B6XO@=jw6x~{YOYZ*`&6&i?v2O1wz)&o1DpWZXPFW7ihXycXYr)SRGUEd?=tK!!p*rcP2-w)P8KP zVhjh7+#aM}8Y-$v^4ZWm!27v8-=?FbwOQ(0Jbu*BWAZx8(Z8t75kC&m%u-^CjEsaL zeRtZ7boW;4j+n>1aEhVR7_<@E8ybu&*4;)FhdD-xmQ!uJ&Mk|}{Lk||_wo>Xr9w1K=YShYEv zmsIvN?1lBAQN!hb2K3UEPBvz)0GcCrg=679W0H0edQEvSCo74uXl2Bqt{32NGX&qO zEcxD(w2+PBT9=WS*ih2^rR&ZCNeH)uD83`L2k!PgrFN1pW`DBB-J7I^xsM4Ac#f3e z--?NFa0nj^*ZI}O*uB4s$N{S6zgx9`5SNR2vQCF`q(ZJ0mh?8jdL7kbMhsqjue zp&=IK_ZS4i1f=_F3Ok0fK{Ks*^11Jp05JI3VYg7R-S}8b zD++kqRD}azp{AuUk4aCjt?r<{awpc7?fre9;{@zYw5NycdL6T%-4@BiSx*@HwG+Ir zS?CXC&8RZA?JuQQ8#vy~vQ;*zJFD5GT=g*_8T;L34+Ioa+^;{kKWXG5IT!O-LS*FU z)(C9xmliigj~W19O90$@!X)kGJZ#gYLmrl)VO6}76^q7Tc7O-e#H?gmSugf{4z&X@ zpJAD_qpWte_ad*THezpEX-NFw?}0F04xp9#B`DjgDQ=bU3@N&3c7GYEXms0U6zzv7 zayaGD6pSu;(H+gj!=ss}#RK18fAuLb@v~Nep4QHID_e}sgT{NVElg#et9wg%?4d2@ zBG#Ysf|$MPH#hI_@btIG78To%dCktuWV_>&mIl}Fl-OWOn+FW_PZrU!oJ^dh&X!G8 zBcu%LHXG+b@A5gKS#z0vIsWe9;?P&~y!q|zl@WHhZ_woxNSVWUb<^%nkGxFNGPcSc zjjB7er~!T+nr8Rv90886amU5kpcFjti4WYp>>Wl*6&qY^svfNVF7Vo3Uai0rFj&WS znGd3nIj1({)_P0tR-VyVb_j!rcq!$vV|!X8=#|=rSDvlbbyNxWq^A!%A zNmn2M5JT+@o2JI9-n%Y-u6xT_D%Zo2+}_9M>jdYDTFMhf{lVJ_M=G))L)Ht%*Tc8+ zFr${AyqUv;|FKKES|=1vDm?1)RFd#)O@>7=WXNqMTxQ{G8}B>s@riFOxIT5|&>;z% zfg=qyH7+PfZJQ6>n?EQ|8;%^7n@R$Q8n52DKjKYTN-gSSzD^tkZpiiE0mmfdawc$w zrJO8gjAu}duKTSwMGu$Ql;LaKmSy*MZX?6PC#&!(1t$Z} zy0M_p88<2Oq@{iOgL7v(Chy(+<1C#9=Em;v`k?1dIsF;X2sw6ROulZOd0Uh`GRe=k zdVV^Z1+j%6uJ$a-RM@#=VU#RUv(+Qt>7Dr|8C)h5X{%`?$;so`Y6d(ql@d{@PnACm zN!X9pmAK3+bv|=1}C)_vFieIcDN_2rNYc*18XFZS~ z3-X9&V_@PHktRKA>5xiU02msxn{_*L`Y_k-SpeUD?X{ofqnm7TfY~1pp=M|9!Tr5} zZz=XQaM#bPb?*4u7&}0pdKnz5^PQ%XwCwFs&Mpkr%Y#9b!zYx@H#gu{gY^~7p%_xf zEe+yBsdS&YR@s;>MM3F^`k==&<#Ezs%;^#cubjfddluNYR9Wni{NsS5)$Pv;k-vE| zAlxfRn2X0RRN_!hj3Z?Z4m<|GE0_^mMta2y@+)KdxxfjnzQ65t-Ig?6YqEuzz74T^BG@vWGE&^=+D!pgn@tr#f|#sfkNK{ug;a@f;Q#x8Fr}T{@N=|uq|!# zr>y*)<9ypcLTOj)_D;Or-LGH*T&#jLkb z%6ZiQN~jGOZhy+-gN#nGK@hTpwZ@~qj)k|VMY&f(YbGi)O+ zT{!N6d(t^d30-b2A6U+&u>EMZN#n0RZ#-h6!Vefzd~bQP1OQOCadXpUBX2_O*FQ`R1kS>HhDa< zlacd_^Q_2HuVspT`J@Gpe(A&2FUO^6qWj@vSmjpFXvO9f^8<%*AHpg`1zjWjtt`93 zy5AZUmnDEW877#%E07r?51ZN?yxYLLU7nEg7*g7;hIeA~UD#{Jd+cQw0Ut;_%O^%jxh5X`0_|!X& zY&cGfi;vQ3bB;%^+%Y_g&nWyWoVehW9}3yl5weQ|TZ1)vRc?uy%E_q^Z)?k4kw|`i z{ytFu5x`CK!nP?)58SMei-qMPT`t~n^%dOw?5x#~kJJ62#O=?C$XOY2e*uWq?*3*) zsBhPKmy;S>@~nVFY$^&?)%pV$_w!cadm}|aetun>jfv+(-&7|(_orr1iI;j`e+mlS zJ|bK{*uB8vqR=h`+D_}>G zRz7+B1`jD?lal+GK!48gGsx=$FLDk@W^R^avD{xRn?-gVgRdg*8ZSp^9(lLz$wrTSufny>lh66EA%-K9vVj!S$N9yZY3S*AXk62CP#A znv*qoIn1XE%QK8Qe^e7UFsDOX}{Q2MqYb_+_I zZlr92{X%Y&!ErLHmx9Q04o7&)9pdQlf)Lt5d6J967qr9w8gU%i?TA3T(ZW}|@LDNF z2FCQ4oY!x1-r)R)pH{`pUhY)yCA8Zsdeu}55 zk6f93-`qkkj0!%K-fP3fyyW^t`9n+uFk+@aGkWI&`BHdm1@A~rXsf86$eaO(%$b=O z=7#ORd**e<n>3H*=SG-}}E|U>M z@up#M=Fv=L>PH*cDOMkQGZ^`^0V-HDf+;XVWsB+d(EshGr)0=Z^{+9T-v7+-RbG{*{`Qr_C()%bsXD~4#g}EIw)~wj&db@bb9ZR#VRB~uANL^Xft8clmLm&M z-Agq#%2Pk1$f9mRN7pD%C7YpdT`=&zBC?xpDd2pwx0vH~hb$8FmhA(~#rxKv4Qw^T z*%j9P`b#9KR>lBMd;B)}32@wikT&*fTW(-tUxu*xE4IF6dr^?ZA%ngGT^sf$^}g+^ zKEOKoiL-HtbMvne$9#cT)W+jJPc%Ah8-N`FC@E z@m3GD&fzJYr&?D;Z=brGTv0`bwtCRj&8l<%0`}#!_$u?aUr9B`d%+kfJGwu1syDga zLoLd`d0jCt+MaFQ2H(W3e`~P&J?8BS)w0}%R;^4S5>K@Z(8yWLa6LZj@n4e=X=V3k zJoed@$BA{az zt8*8qY@f}^-SUhtlqoFQUQ#02Ba#W50#mXFq}K$eLjum6`+Jr_k;eSzBlB*Vb60q+ zH_MM#&Tlh+3&icexTW)p`P;UqZJ03z!BxeJ{L2$A3qWc874t+KZ287NR>?RDz5`R# z31)MeT?SL!KAvK%PnaK2UG-iHLtCO#}hO|Mcd`}n%3;rL;+hF*Vrn(1Tg_dLiA8x1xmrWy|z@TltBQG*NsE&JLuP~()%SAhU z6Rw+e@NJSAp2~LmZdqI?F#16bp6YH3fe~)ReWBeY`DCFp>Qbh4TY>K7uysThZJ0-g z<^ulUeXfm<$`*G$0j&5YXU8i1_rEJHL;Wo@*pWZS_{93zHMb!CtP~zAoo`Azo(3v^ z9gv&S%CKeE<}(cA;N9E4q}1gy_(3;_`yFF1>mZz^4n9QP8aT-aB|BLMS=R8R`oO7> zn~f^<;opT=p$4q>VaC0J4HrygHiY@3d8qQ&;HF-{2sOY6%S#uQLCB~{(TeNQx`na* zrJKokXI$=OEr00s;btA1eE{>f%=WcT;CTaEs9 z!5$SgsBteD@vKrpHJmV2LL?2{CX1r6qRM~S(1abY;fFWWE0oy8r&hu#RtBkhFm0C? z(kZvCFr_L9$58Ol<^&4TYu>ZsdvoQgkahn@+Yy^W>l`8wcx%z1F|j(*CMhM$LE*Gc zPXWdv$FeNNR8=wlTwk#j6Ja$v=Zia?%}7{kFg4SE+$R*ox~=}}YOm8R*H2dO1_kMK zpaH8?mrA`On>SO9r(IC<))bsTb~&~ir?EvgUfiT%m6H>DG=dhgd6FB?nRxGxI+M8B zod+XbU6XLa@b8)===e_}nU+GBF%$&Cg})d~_H4ifb(BTZbUbj%ye`(kj|B_#i&Xo~ z8HiouC5e@BtDkRaJm%YZdY@7Xs%S-}YS{_Ud}ZEcgsA}=NBqS=9m{38F4(eL0WgVF z9GCVY=+$_b6Ugin=(?IL`?|YjEba*0DbQ!>@uqGowkgZWzxx!9yG9G0kxd({lPNUf z7gGu|e#iC~QD~Hwx-!VOZY_UWduv;W+iO$$vh(&_B=5CmUkRjc9KLx&tmP)Jf^#>6ineX)thkKjE=DnSm9E?r;=Ag(2pYh7YvzOj{_<;yn8~qac62XLmUw6*uFw0ozJm9KJ9Zt zph-ST2TcCR-;b!zl|3DAVf(eT5)vSS=O;|O-=n$L*gE?1`uNeTkv!KNYS(sa6=1;j zK_tL%F$_6rmCVVK%d&oRBo_v`wc}BS7X7`3H^u@68j*`}LAMYdPbX(kPbT$p30<>4 z;9MxW*m$)&YWqTpoHXRv2me$k-MK=3`B`vT>W_xg{%Z(8vRsnStis>4{}8vu1y>6R zY}A@vyD#N{t5N@t{Py23{bm!%ryIL(+-8+a={@_Wc_hjgfc zK-~8NS;9}(+n#4a*-+P^Q}p4_3a>-SWah%3p{?jAUpumOGmu{oe_hB;#aNs8B%I}R z`0Fo1Vfpgmgu#fPlk(44JHs`KG5<#fYd{*x=36793pIA{DZLGV7)|%l_MM^r(eokd z`b>dS%T7#y4t28?J~*|^{5L$keqY}`&$IU-JOu!q=nep6g+|#*nL=&k;1X57<4X~r zN@adA<7Yi}@4QIk5C4BezIV9l_(V99!|}Dr#ja+M!de9jhMg6ji;63E^@{w5LSZYP zdy(ednu&k$SIsB*F@=m#@pRC|Z})3F>{>^DZjreG1CMf!vWmu$ZLd<Ot%x^I;Jgap{VGiG0PdQ@cF9#WUvD$@ z+8gev5O;+HD8^1EuRsDI-gL*r=|DUKak7$((pNbAHN)!*7Mg4_%Vi2Vd+#B^cSo|7 zdXdTp7n5x(-#-6AmMb=?{=|fr`QAm;2h(VVaDkLW8+qVOD$lQo^Sb|Ta$z(p3q37v zhdg{bwUy17@oM0*x84~GnBAG_e~*c(E&y3dsyUeXTexds zR;c&Y z=y5*tU;tTlI)64UTn}9kcJFT%YsI_Zky&JUWiWr?0^>)4Zw&m_*)oNIiF}6yq+3k| z!*kMP9E&XrtEs<@0}1HgMP3DvEnoE%f>G(HlS@(8T4bDZD0b5u0s+EuWt&VGhH)X1 zMFDyTfh<=mIpa1$NMx{ls>UZau)1~Q>Ex3v{EHvIO=1-q$v6T4$);dU_(Ab(?$pSr zZ~jeCliq9;rhGORKK=C6)0;SY>86Lyi67xL3-VuZ_Z|+Iz&M;)8ihqNI+~1RB+ex- zpeM)wHnRQ=#=MZNCIX}4b-d&aJA<^34LK9ev0NhUYX;#Jwk}V(!WeNLtzuE!&Ix$< zEf?@A1)NtX{2KFoo5l|}-yhjA4xDZERK9{;JTK+%YF!|AD-=chO4xeF(E@J+~ zxSGd}&AQVPYJqI={Gckdt6`zNfpPdNVD)%MEkyJTgzWe@A3qUwe$vpb(GKAf_-Xmq zpx;t`qG2Ej4PJbw-+!M27nbAp`eVj6m$qmm*dT!?-agUwcI84s&;4U@ygT7?=z}l` zu3_1ZxEX;zdOnhujW6AmCq9LsW*j2DFSS|P&#U$;nunR3j79d$=-*vsEp8YqZnv+BtxD{-7O zurb1*Ag~Cx0#}E3ym|D)x(t-{_c3Rrl zaG^;JQ0$~rFbp&$P~*qlT;|&Q`f?%|M{@UKG18Vvo~TN9{B%`aaj}LC2Gvt+6;Wc^ zBHU7|v9DX0_mgO4bmWa!?9w*kDclyajmgVH*Xn`~GJ~%+CW}(SgL{$447xRZ3-JzG zvdBaH(P47Hw;A6=iM?f0Ai#WOsz3j0tS?Ypo@=)PZQXZOrQxid zpt-zVIwxSE(4DWF{F~V*5$jX}dv&fte6^g~btastzt9BrhNAa>LJ zH4Hbf(pO~3QexG6+$hlml9I#+Wj2dF=&jl4%@PN!1m-}E2yw#=$Xh1DYlVzTmKbXG zH;SCbZTN|XnXv*{&7)Pheya}UlV#SUqI`3ry@Dm~4mkt)x}U*C>$WIG2^-WnQGEn_ zgPxIJjgEB2Y%AD7?k`wgeH00SL2VAAnV^H;Z3xX(QGi64hnk7Ln#|0&=MDNU%d#TpiQni-K^MGVnf-HbdY1wF5BUqy=s|+0-oyHejf(3Rr-*fnYxD;4Rby& z;RXI7Td{HUYNH%zat(ChE*`(5WqWyf*LtM1cDQsU#s5su!b+JD zkP~5<(li@*ueJ9rW+l(wsh3l;u*d|O2vkGE9O&k}9QWPREYKq;_FyPTPg@V(1G0w8 zeN-}x1@lRJWk4nj3F~NY@9UOvhuh+YODsoktxba7h*sr7nvtGgR(je|Rey~)3y<+6r~>haZVxhgy^6UQo7md_yH=btV- zZvOYh0y_bj7xypS@#CIKC7gTAv9W|+c$o%hnZA}fNERPqQ=bNHdrgN#_XDkB%XUD( zX&{FC=lJJXS5!F>AYbgd_%#C^A0D1cXXr5ujzq+Z7@0PYM)j1)_e_T!J%xC0V^FZx zqeODj)1a-!A!ywv6}ke%r}X?8kDdl5q>MNmmG~ZR<_X#jf1pACORsLgr|A3-g40$# zxmxbXTqze9aW%NNI#Oa!Z-OFAwyM={>_lU3lS=x8+1zsMougltmhI`o@q z*n%#JX|}NVA%#Q~)vMfAK3c_D_uT>O{Nvswifi|D0QB}|Kpij(-kiMS1s(C+hw0wF zzUlxlxuN27F}zDXpR1zo?ld?lRk<;N@kWN;a)Uy@Y_E>xjgB_|{PE)>8wI1N&g|@Y zpNRXb-XnG+rTzEOzbun@efQVT1EuR1;6{uk*8Rd8E(ii%GFuw?DrZ+>1#~H;3iQj0 zP=sa%z9pcHuWfM{+DH!$4t_|C{6wQK37m2~oRs&jtx17HZzc<9nmUCc_PBb~fDz#| zDQ?SynMfoA=zcPG2@G=Ne&e9`1&zPus5>NK2Of>HG$Ym2xuz5q869oYn;9}t>mikF zCb_qi+l~M+20DPwB@TWWB|J3bR`b7@z(iE+?OCB}z*Bh3C-`gD8blA)UI`GG;1l(} zV4%%$^D}}fCMLh#p@xRkpywaQnre^vV#RjrZ@gkiRNut0`MgN z`_L2*!|ql^MPr_EB)Z1kR@$m{*E~8N`0#F`E>OY=IgHC)zkWSeokN{fCMoM^f1V1* zGNUoS2j%E~VzTw%gS~tvSv6>PcO;0l#fjJrYXGc`U}N%}p{m?lmBckO0Oa2de*Yf4 z$j8PoO9_T!2HJ&P&?C)9u(SX26YNTpx_GQ~ee>qcKxT&q8vj5cPR0 z8?IBfFiA}j*JM0vNJM>XZ0xZ|5A5&EADOZ{11}JFTh543W=<8dsqNpGm1mp>Dnq4L z=MrCZMDrfVvG_ggmb+zciNUmTP?jMbz`FFhV-W?B+%+tgG30sLetF>6#yFro1&rs- zQqQaobW$dM_Ptps%c*~X}^*)NT&XTLHGkbd_tgGICQYh%jO~sfs z5F}F^ujblgX*b7fKCm2Rm`ZqUt!O=70|y}TU{%#er(V{OJVfl$bR@yTXKcIEA_Ff& zV1WBr5j@6u^o19PELqCtDk?&Ryj(@cGz|=92I-W)CL`dQa}sCHUv{E-DG8Lm9dSZq za{9v7pR&}InNmZU9)K`n`4p>*A?kT=FTe9#b^yfC>i1d^8#GazDGwSkzV5SCbI{q* z@W!RT%H7Y#n_p_e%&(;%obf0tI&@M|?Y0MEK1ofrE4~kHfKInRUB-ywx^wPrW#0#x z^`gf0#xkdV11g|VWZ7BBJUIf~JkfK`6NGp^fDj-EHA?ms7qXz}-(#-QmudvODOVfq z3qlW8wXKj#mas6M_<$v^HKGO&>#sAy*X{*Q6Lmo^ov@i~lxKX;V9>5R?X$4$Z$mXg zZL({3mAf(%!c_(eh@(Is3Z~EG^z1wZgIny zaIq89A#$WQJ9{Yg>)G)^0cs`Dp|~=;5$R(Fgxs1Ai)Y*$P4ZfD$|I>p?76}G4m!N> zHIy{uZ)iZA0|oQe@984|B&k4%v-E~8sk`3)=@p4s(}gZ-_=ue;+nW)DfpaVEaN*5E zJSq=WsbquETIrsYJlZh_Y{9Ox<%xI23^Mri8q49DWe7M=A%ySEie9ZD+5?_5z~nxv z`I+!9Az{25zM#hs9j15ufo!rUuV3zW8AP`@@zqhPh=}-=;5h85uhG8j;7~gr26)HNk}pdY;o&fTeZ-XXQFQKP%+4 zjPIQnH8+35a=qG8Io#00Bw>3wM^+5f5=-e}5FqTqHMFFwyx-K68uqje#Wt zokHv7-5P$$fSAHTU7+XpD@!Rc14PMZpD`fXjkG&h<{h^i{as_|v(9-Og8pX~cVhY) zp@40KKCmwoI@; zC;${zbWXt4FIvD-DTH$krCTJ&SA9<@E7`Xc1Yk~yjW$OO%B)tVb?44Pg^Oj5Zc&u= z(AP+ie^LAUnZuQEmmXsNa*g_I5R34OvC4j}$2CsVK6zvY{dkTIpIZ6h^?6%|>1Ig5-fERTh+XThlv>?9uTW&6s15K6@PBs-7GDrzhh4-^&d{R6aLlpH zM!@p+p$uieW^Buo`B}}a`opRBXvV#{PNVEzC5D`UfB@^GBiaAB(#yE3WOODJJE7gt zCZh8>j`xsF+q3lHL|VmbBlGW?^-viZgL028%*+;ka?9A%zx>8^C)?w-k(HHI`?NL= z2zpEH9_VaZ^=AGaH(ly$)v8RFdapGwZA}^FMOf06jE;;H+lDU>4(;v~by|p$2f8Ku zY=j?|0iX7Rs&akj7J0e3WdJR-?9fITgl~9f?Cw3>TfP_>(fbHFbzbAy|Fi(bX06dc z0;M%NO&JA1M@KT*<=34=pN&Nzib*7dT~z4ZLf}Qqhl{NoAORKS9%Za0c9wA#k>vGi z<)YUQR@tqN4hLn@-4>nmH6QAJc^(T0Yl(&8Z`DaLF^WFa7?ozFyZG0m1FNC0A>dSv zHIuikgV2kQHg-g=d!<&rwL5@+)!YSz)3fQUNxE+_mFn{0$;nY~n<(cY1;HenA+_sv)ZFvz5gwfX&D5Ae8^ zGH$Q-k=~5R@JLN%P>Oz;3tBpQn&3G{hMNbZwM~_zRKL1*NgVH-ZM>Nn{HAw)XcGSQDh}q9TlkB+~FSuyOV<3u&)1DPj7CGiDpb*|1CH8AyEH-;b z^t*-%)$mO|*rRl&(Fdi1z@p1^4Ur?sLkEZ_*GHrCkAu;)MF}u%kR_5rAFPrBY`k!+ zdDlW8YRO04Jw`oh3B656joxI0Io|ZBg$bl|+#M7+nx&=~H`9_}r1n(?U%jcPhWpWK zl>(G>#pKnX#)cd@J;k7Co4(OXqy3_=$C zo@M**LNz~PQ4tOZe>)3TVH(9FWpxf*hraze>M|g#wcDZ!^6j=co@*RCOI8BE2B;yB z8J!aG1;Fh=&1MHSPtrk=n(BM7n+vKIy%Me+zh~gMQOXxne9@ubP#^_EiMhPBFGf=< znl~{&8K5sSaWG6WDbog3p@!_s>Fus<0Vg>qmIio6rA>im?6`PF8Y*v54cNzvIB3NS z%XqE|D5_&%B6=6EwyP>Bl^&ln1MI|YG~+AV!DjN&z;R6ls#b9FNXVkSgI-|HBJ$HG z>*3->ubo+K!hk;h&@8F)-(1zBJ>%3B{yk5(mATTXX%SS=kk@0I8blh@m__H|vs4vX zP#k|{l|lkyJXS?iC9Wd2n&>te4=w=Zp)6*YrGFtSBO`6zy2eY_DKtOHLy8<4CxX7! z3dl7h9)p+k!o1G)nG1RkGW&~GB%j)0t=a)X8k|qp&??2JuuUV6cTQ?{mo~v!1IE0d zLK>wjpu~WJqM|2|0=G46a|FruLs7LIRylVv&*Oh;6%1#4ZVrwQuB(LtCbhMP#p0^` zR!4{Kj~tioX;OJV=!1*FJE1*4Bimee7cFJH!rfI9#bdd+A5qVZ3MOuK`+2cU>XZ)Qgy z*!2O&5m|^|2=7)C6^tf-25%F$H$a(gv*%_>IhyMux%j*eL+)%V#zI(IBPyIQ}>zy6g1ok4cX62d1m-2?DcGGv}@xAS7855-MCe z0YF^2*@>8Iwf65(BPLS=#k0>R3xx;iYZ_e?#BiiU=VoUant z3%Lk5b+W4E4xmPlJChCqYUf*6=uCj*+T(D?@?&Iw!(ehu%uA=~Urpss^UoK1%*#RH zt*rks>FvLtJB$+3+z?h#>)0Zpk5F$e{`a2?;Pt}}t;jbzCDxo^GvjSSLg|Yk{_}*T z*f6`*?sSn*md+MR$rrjz=H?cGYR{jm{Wxr*_xt?$IggG@qV>k&kZ&D}kssttMTPfg z1lYNgp161ae(QGmf^34Q>dRN>6LEMZ$s~sny2Ut*(D}>DGLQXZb7&bD!t(QNGqOa! zvqu|*EcO~T{z`nFlIBHxQjE?5z7uurp$F+)hl}5G#lpn5Gonrnz8$A{QWz;l%8mj6 z`ZEG$>SHA(Z!^oXCyjv?6P3C}cNG#m?vHy~T5B}taVs?q%kYQ(F5>6p-0J+fq*LYg z#*{?a=h@m^2Sdo+?y0F;%VSm4y1E5a3=FT_R>VQ+*pE7p*%d$ubMx`Fw8yfT9_~AI zr9QPZvz))domaBHV4uu)4s0h;d3pwgr0nEWMu7^~yltTQh;?J*GPJ}GoDeehar~@b z#;l2g)tWqAYZ;f>+r!oS8?-0vgg-S3H%hL&AtrWVK2hZA%k87P>-W2o5yFjRr;WU< z)^0f71Db8s5D6}^Py0RsqKQdK%v*yWE^QK~TN=H;yVv<5oQ@8N6F^6OePA8yS4YCm z&R%-3vyIqXW??b)rG@!|E`!JFs6%&-I^`t>VbXM&u$gtolj=m(wG48NYE73{QVM5IkBzpJ z5ZBB1jQRMH6pg{fIB^b~zO?;*uA$*Hqqyro63LXn_9P_WM6k!stfk}fpz6rFr|0?b z*c@}4Vyj-}wrD=5l?R`|p6v7HOM84puilw;;NpNz*komxwx<@X*ks!K%=+nd;~yWx zJ*GqGLNIAge9tz$qCS0^z@a5uey>MNu6sBR=)NlSCSC@|H`!;rLEYNzwkq@uPc$7V zt>r;r@$0Pyk#D8(tYEd`Njb zk-PsPZ-tyZ)O4{&N~hA53Ruh8dDwL3$Cqp)Ns55wiFr6dGIU`U0by9T8} zX6PCL$)N`r;@^Dl^Q`yge%C*1v4+JA*R`*`_nG@Vj#Cl>U^#**vOa|1eoApyA^zu& zXy`Iq2IQUE5GAelFyIW?V>Vd}ii;nBv~NOsF~JYu0Y;5i$Wt8uU42-pZsdG+MEyRc zK=!KT_QEYqzcKaz!x#X{c=hVlb?$ue1X;ajc8w{RE!7fL0kx^dzzML-Bd+0sFg}Fu!k6T1lO>VZ>mo<`Q4TJ;4 zgSuYL7Ey2N?$hq0DKAvt7_7){QCv&AGge|Ic(I3`Lqr6p89Ti=R^#%b8w0ZL=KbkT zF-IV6LiT3LZshr8(Ov4cYiW1I?TOf=myC&=;c+D?a;F{*`v|`7zGu@{of!zp80=o%(AL#PoFGlHo??L$UmuC(65gWB@VSwO+zn@M>I}PT|J`}M zx+}dazPUihkh%;RohgeQJD{gwfu~D}C1g33MyD7(%b(etmX4Vy{rQvU?`*(B*fAe3 zZ`yd@Pda54cP zYIL@?uCi9mv+*YW-WsenB& ziaBTrYX7?Cb-EvL#~5sE)yXQ>HYOi%@9i_}$kt+VRu~yX7YOx7RwvDd%vSPwlImKB!WOgnAIcxjg~V@fwd;FU=G^w$ zfF%zCJ#f2kV)|f1+IiNGf??xX#(Kb;kfLG0;^o@GmG&aCJRl|cqq-c) z2xYzJ-u3PZ{Ue3yckdp=uu5w{hp?#l*++f_P+kH;)mWx@tG*vGo|>AXT+bTDh!G$O zJKqxIXO=N}a^x0MMnuLC2L5qUgiq(>-G^%>#xAa|B&9VA-nJ(-HIihEq9h=17SbA` zI=A%sd|^zT6I!w4VdUw_jItMjkUdy7j#%2~7a08!LobjP-{=D~nd0K&x-jciwOMv} zgkT32u3kq63+#>ydYbxS<$iT^&0vmdv zsVU+(ML>mVv>C$v_{kOna8s-a8PgM{18n{d@)!yYdR^S-6#h$0vH<+udSBy_~ySk zk0K%?3tJgSV>+XgP0vn3A(d+&VZqHH?HRLec3)XT*u2BJH*LRm+s%0tDh`xjoPE|Y zM+!jBJ>oYm_OrRk!GSmOt&yY*X^@zY2k`>yT5dD6@E$(xhcP-t2V`|EX9c`tll?>C zPR4Wx(wAn5J9swR@TP1xcmKaO&koPzcZKbZsv?7r)nT=x3{_QY_qm+Gxn?Y!3$rr9 z-sqDRYXOhT`TCWZho?|8&=rtl4Euo4HBLEt3AJ7UGg$z^Fd;ZQiL-!L!WAWK-U|}+ zfK$sT0fY7UA%jXAxqI$^ae)H(_)!bYFIq!OD`IB{U{bQIP8KL3{wFT}WAU?7O{eth zGmUt_AX2ik$AiNpv;K6UuNEM@-d@Q^&x3Uj2FvB`t#ok>mxT_OkDor>5Qhcrsf_`H z$gH3Opg|LJAlK~S>wxNl>A@cR6kB*88U$CSv9BwgoUD2~y1E{vx&RMt4uj3ZXkjk) z+izPBX89J76s2-;aq0eL7mI@zX4Z;}fj`gmK-^y$D#>}fyL4URjryQS$fKtv@f8CI zQA#)0i5uMctk2RVbPF^5Til}A6FmNf?Nk0RuxYT3YfB}LUK@RWcp zfse9TZ!ZwojQQ_ilL*z*IvyULw&6T^rl2mje#Yp+ z7w7ge#>ln(91D19*ETrmN?e^-{gAlEhGg0&ZZ)lJOFX(R5Z8hekTJv_d3 zDEBR}h4=OKl{(;Xyg^*?HDr%`2)%%QV3L5_`-}`cWsSk+bIQGqNp^S~tFo_e@W)hr zuq3p6{v=Xa&yiGvXXntK0eN0a?3%9}JIFv^fq>XH{@pu#xPHMXRcw|6IFxS%yB}w; zi5{T#!l=1>O&vW-)g3%n@|K7q;#hm&tE2t#r{I*_A54ytxA#4jI2mr6u-6VA8!!p; z?S&(NQ+c(cLE-`0XjP8sh*wo__8ZU)j}TJ?H74iQF!u+DMD>AIc9O z6^4U@fH{zdXlp*(FJJSS@j}s}l#Fz!xu4zrfeqQlp4Ncq^ZV=Z_+cWi2QOa=I0LdI zJcvpxQ;q11QuS#1SbH14kmEzyP!W>oM1`D;PYGFUth{@bLq^;nAXGWtQ~AGi>dJ@_<0V zaaHHeVzdJ+8ia090O!t1&24OcvQTT>sP(&u8?)a|u^Wt7e){a0i=Wn35S~?+st2;6 z)Mof=p@5q9G6u_v4!4;i9jeRBLBZqA4%P=m%-UW-S^{yDz5};!eX15%(U=$&O<|pn zA3xF{Qa0Uw!s$(XgEeyd#YFL7yK0}}q&?S(n@)Db@&)}zp+63c%a8@P1T<+dG3bY2 z=bZwxR4r`P>*c=Y$psNuLmbyk{`&R!F^9sIbsh zWy1rwP%5!$58(ySC=d)VT|`u;6R`9!aFE9MazxG~Mhn9>*mOP<5THM{UlU>k@95wJ z4gf;ZbE#Jyc%+^N>`^&$Nd{+8K;d{b8UrUnp!m8wXU=wo1G01j7)s_J6>gN&)FIhQ zst;k`iroC{D%6C;+0iE_yXWmn6sPd*8l*`8L9+3^aW8cvGFSVDJQM&2$9;CJ z6IgfoubO^FWCE)&)K*ghLA$y1hmx63w^o^jw%O( z_lYCq#%1&u`UiM_4$_YBI0q1n!(EnAPX|klR6&RvJh0puNzGmEG%Lt&(!_v0P+m^% z8`9gYgXZMm0@cWN0m2lk+B>|W`|@Q_s+fEiNUu0| zF*btK0MpN(`#}9`Jbxb#(mbY%zw){gY1)7b9(GG@iP>WuNNf-wkjTl&QT#PFRcTvd z0bzi|vB{dth~o^h-8wl1^I=u81`av5HtSyuLA9CPSB6=EU&+B!$kt#i1U@LYjz17H zAIQvzLze-c#5$|d$xv4|TQx2g?>}f#5D?^_or{gaJl5{+ZBDbl_+}VJDwH0vIbDBKT$~mp0QIUJ@j%kt ztpV&h?c?*`dn;&*y}t=HhYO@2PTX4hT$b|&jU(x`WqLI|as?brw|sp>Jy`9;4oA-V zV~u?GM_(Jhnbu|yx5EduNzou3^`)i;zxm_`tr)Pcq(TkvsJTh(-7_Ej=QWzwQN=vR zmJww|DX!%V>k2LzTG1MB6y!an{EwIVpYY}#dO09o(5S8rkJkAVFWK`>wX-d<`}%*c z^FQy+j-y3aSPCP=qI30LNdEo$AKm?*H-A>B3ALoABV$Y4B=k2;)$9L?&i{PwujKo@ zc>IS3S$du2nf~NZFFs+VM0my(mi|Zo8p~BSNFWojJCgzAc^hBtnvT3=x`pDt(IxZ@xt<*qV+{;}<{I&40e2%)a`khBi1R z+A#T~m%0XO>x54aET5YF^E)?>9kvrI0I?lKQ_L@qgYQ@G^mj;q^uZ8;f{X@Os*Bk{R>-*kYODN2O z5Yi;Bb|h1|eXp|HjwIYpx4P@{s5Dqj34?M!Y_EQJ#FEohKCs+g$-N0zUM44kxW7(} z1^=s%8)jQ>c`bUpcK+3oidgjJ@fIYBg|uk@^wKsG4d56%ZZK{*I&7?Q?tNZZ6zA|m zWVz3J@OGoZoR{__6zcQM>FL>xOM`~uK{1kl?GTg)N4{RWkyz*X+V(F{Uc~ET0!X2lCWf7MV*$7@m0!)uK{MsU- zpgGmEW1^{pmKXCG87_{Gw>-NYyxK2G3sr`roR~Bs)PT^Lw#t7rehux-`NIXj2kFoi zF+0u0&OvCStxY<`)N0+x`cnt3tI!Sm*A}q!bsem{XE6GBMs8p(ZFZ5iz*cDlp zKiaa;COy&Uvme3@WW@t|)MtxZfRtdAxPngUI%b|L~-w=0iLU|gzQ9@p)xkBG< z*ZRvX`ZX5yEou&|agm?YSugH8YSfF*C4DBF{vYYL<6sYrxaQ|joZ11+!xKN*C`Qv; zATZGx*s?_Nu#1KNi@Yf(x9_eV^k02(n_r(&viC!CRaLBy>d(k4f2XRnN3B*&F=ruT z0m4E%`MTlEe@YY5+AmL{cu(;a!@MunheL>d2LrQK?0IxoIt~OQvwe-t=P0Awo;>{X z%U;N3K^s+YeL5GRHXCN5bog~PKIg-5xAotgh98=1CQ;%=y?eL*Db+c%m4o6zxqCH> zi}n&6CGgulTgO2NPkaN83SE(U%4*_@r5(iy_s|GiO{8}y#WVsZ^~#e=&*kxO>&e{vNEo!|jJP_xtLPX%#K}SYUC95D zMm${cpd$TB3B~-JuyPNBPfTr4rILR={JoZZ%Q`|)Q|%is5EJBeS5=6=WI~zR=B=1i zWiAU;&P1QJRfE3WqWwW>@YiT%NIsGAps5cIZ)2W?S##hN5V%P*^r{mX1AJEioArL=iRq2kW#Jxc6noH2rLKTG6Ybr=v-M%t84miEkL7k zL6wK|TGsWpUw2BE?#9?&?D_wFjnc6hRM|f;5Z|NAo=`X|NTQjtxy4p*c^qctOyg`;mpLNj7;qIvUyopZ<5Tz;6XfJIWt7 zpwHgi%-mLbI5Z(mS0{mErY|G{jMH8kW$yDW}Vprua#61JrGqrQ$4%5aHG3_)~ zlAKCw8=AV=Ta^nXSGly0wWR-_A4cv&TI=8zWly5ZohbR64)P-Sl07OY9Sm-PLJ8d4 z$5)FtM)LH5CS&~TQ6%#ELF}b3M%Xn&EpgYNTIzbbp)Gd5?aBDE#X@j||1GT~>Vvw| ztLsdY5ACiPR41ji-QPMWgo^Zvwp<=v_)&0^-P1rASC@*RnxvN1_p#^payUqVim?f+ z`#J{|Pznq^MtsL1!K-?+E73C`}ya zh{W%t%X^BP*ckZ4W=P7aDvojJ{3s21et$WN#i;7i=pK07-%4vqAgK>4hq108cKoZi z8C(CQEmQsy266aLxiW}{wwH)p-jNUT?@^D{m6&st8^q2>h(uiev{`VdQ}!9G{UtN*00ytG{l;;#J0C&$Du4111~h=&a@&#+gR z1mMP>ZE(3YTR69UHO7@dXs!i$u?cZ#=f`n&R6+j>XVX)c=ZQXR(G#azj%hxx>#zv zCoV2Hu5NE~Dk~+6QAck$Z$e9Mp1!@1`91q(d&Cul8MDS5TgiKP5c-eY=2 zNd@WtDWUybXj0W#9WPu&YnSxaV1|V}!X*?EEi-!^rRd^2{q}4D`>twLv{cx{B~xY7 z*wnCswcj^mY4HaeREA3VuZdhgOShjxAikuf!lsDQ?kYyM}U^({X;d z)Z(z`DUkbPfrn3?C|Fr}j=`<1supGwA_{bd{WD?rrbn)WkD=n4f<7$YOMHkH@DyWO zu6N+#mhq{`C}4AMM;(zjI!MjfC`Ir@Y!kcqW(Vy09Xs~aD9T4|ncUv_9(SrFN#Tb- z|J)WjEE$#O^l;h!fXKi)%CZ?u*K)pIS0yMh@jv!8TY+yMx6FIrGYoL4J}sw2!hcvr zm0LwE-g~%wW1soYS%ne%GFIJX!=yoeeQm?bpAtd4Q&W0sP;10)QEmR#s3!b1hP_w8 zu$ic1m&En_B|^KQnRQ^m@OBSVSk3u6Y_IpMlEz@UzxCd#dwqM`=(B?-rWr6JBf+dM zB1FSga%B|Nh9Xx6n)i8ldHKHf&TX=~3a{;Rzc-dAIBz^BCu`cXn#}jl(Roo5Hxy7? z>wo%TM1~s7O-|ZKo?3H6a9w2NzMb>k2MvTl^m@tSLpiua(I ziKNP~cZ`38daDjQGz`dEdhh%;(S*QzAB+};Tu)6qU{$1mS{ll_je7fbGlbb;HG`6F zK+94VhV!RBy$F0bhE6Kv>D4olKpo%r|9pDVai&;Y)Y3pPm-2IUEDsjoa(#5s{w*im zrLR4tB+F++kGrr0A2IY*vN+tI{Sm5enjJCO;eC!1=OEtgQH~KJH~(4g!Hi7f;osx& zYnIB?or@~isaZI+mS)E)wrrnyN>ZH4ddsgAvS!S_AhlI6z0ob`f+dHNbgtOHHO+#D zS7$a5C905jwaiSr{A53mj7t0z2>qg(UzM^yfqJM`5?)e&u<${Cn&R{Y4*B;#lm=^W zc>ZDVGwuqy;1Mf4wP?;ElI;8vZ{7i^{POket}-!hWDrhcK%?!|$dx_Qk2i1KeT;gH zz7wB3FpwQEI#u=;&X?rRV)eB^xPn!CLv7U4ILfP>L7KF|F||3`>lPQON0w0w`R(ZGQBtigh1lrZ~B?><%~0S=oDNIGL} zD*J;rz??$;Hz< z$z~G-;+ReiR&39Roj-^{hO@CQLbjxIr{YeD;_si&Q;j1QiT>$mX3#+w?Q0!+5@CyE zQK`|#+X%`~H+fel=ppnL^K+S*S|?h&IR|t3gI$H|(L=U|m@0-%XF2(5mlB1vIh5YO z0L!HR%!0S{K1V;&yWx(L_UPGIKm7Dq4}R6(|DdVQn1Ahy;_A3ZhE_E)1F7C1{|6(L zo@Li;k}+dhe;&M^>=Q9}_Tt9Axit5Rqzi3ZO<5;(*a_@TT)Ur8+#m1r@whk5CfX}T z3J9LDr@B3dUz5Z+B=rsWde-F17$G{^v}nI00YOG-7F1Y9Y--sF(X@1xI9`kHOx$UB zJVVypm3!sTZaAYuw*zfbiQTOFKYR%Bn_Axr82Lmo(agKVnBIrV_j)sblF~lsPt6&Q zZrffehsp$?#4FgPP&%}`wgRWo)^>d{mCIbeMk=g$*Wi+`?mz=m9`XBSTff&wKGLID zIWZJf*6uVjTxn?QA@*#_Y?GVZf5X<#BrhuZDfTV?0F8F&+80*(le72BeCb)jCMzc_ z2#$^`1fE2-=eWr6m8Lg+?jBL$JZ&eTE{h%`Yu7#_Rh#@L{5x+|Oo*nm`>`+85ds$X zP3&__mbj8hJUfC)4%N;TlqC?Q>KHz?st7Y`I(XaYwdNuQIe`br#wO2xjzlLHw?$K& z5h!8z@gc7#8!0$SX+#6tGrrh480g%;>ZbP38EH$}y-mPP8v)a#-S(P9pG^O#@9+xR z#r}DdDz5J^E$Lx;_1lCw>B03#-Wbx;bglW54!LP_=4aA-lFWN^dE<92*rEH**^58? zy)%^RK{1Mm|k-OGL_eN*bYfw;yE^!KqDu2gQX?FG>D&<~9%C#!x z*hN>;v`2|lp3#^ryO-Q%{6O*FgSKV2_V?U4vp#xz!+(}{;R%a>zhsv2G#TA-@0R$V zUFxbXZj(P0kH?yGgJG;qRaTJM?N?x-7M0$BQb#C{+T5Lo(Vr%so}#$)fAsacix63&(8V2%!U{Lo2KMiTgJM65C- zyaZvi^ZGjCDNJJl%lpYpICBPUUL<8r=b?K|5^|ZLISZO6HLk3#6pKw4T&vIY%eLHd??Z?1sd%pjKYSm;Vzypb zSoG-q*?v?V3))N0S*Cv`e$qPy-edo_Jh;k(8t(ErylTb~u4W2%poVCf&2mm9{5+Qeij$qSdo@738gqZi*u8OgsjoV-`KfSp47U}e_*dUiDo zODjhFUcc0(RqWY#(&t}-iSr6O7$A@=F7j%qWILcLS<|A&4{lNXI_1JAQ8K=BLoBp} z@0yMLZdW+NL^b!!`KrN_(=9bP#!u2GbHh)2S(K`}M7-jkUU1H{Ct4pBm7%xXG|6s6 z#=k*eK2sT}bw8poXDke?qD=HKEGbkCqfslk&!$U8!Bl% zSZS0P5#q7r9nsDt=2`@}Gjz?GG@S*5pJ*wwb)O#pRl9zGc0SFM%-H~*2={|;1z^RM zSa|-PhEt~g>H1N-@6;&2HyspcB`F?E>o!$xkI%P6zf&Eu-$buezmWP;FhZPqqHCjx zqNx;m*7pVaoF;tNtqvU<>LMxMNHpq@345WJ+LG2nfwz6KC%)I?B<5(C@AwWwoBYvi z4;B!1{&iI{eU0b}wDL2kL$@A%E;WW*qF9Kqk1qwxBLs|Qn^D5y$ zHLE{7B~)Z$#E!BvJevzuO5G^2;ABeN#w59oqj&{eSp~ZlePkban*a44ObI_Jd93KK zjk;1lLOte?isK_{okk2a+7eoKRt0|%5AH0>G2|GV&3Iht0P}NX4SWJ#QRH4 z&oQQ0AE$iqkMLrZrgMk+qy@d$SN=|%)AA=}r90>7mr+b~th1tJ!glz4 zNvK=%zlravQ<(4d&>cO;vF|hTiPce-(Tm9-FfMx>YkDJJDwwHtf+h4wAEC6FlO`Ul zy>>(JA4Yy`!8!p!e0QWqAp6%tJN#%Ng8}vPU!o?+-HI6uLO4s9{RmsNDjsZ!`2V%% zWr^`2o)*~B@FOMRDF;)BblgJ6X{i-y2bW&ce}y!r2>^G(*2#;mKflaZn6 z3LNZx;>*AD*fC6%{Xf$Wm|8U{dzns@zKRD=PeT6i+mNoEZ~(njoq>G*-KvlYRfFLW z%pKVmLHr1_$2TYoVYCv(({(kJdJtHji7`Fm}zK>?NebUG$LGF-0R7Plshvwg)iZS1mSt z2cCl^PiV2)W@SA5ag4DgF!}1c|4_Rbt_Nu?h^qI6L@jANcKBAoqY<#Z(g=7oOcU=E zEKZ)63ch$SY*PT$wyx@}I>^+zkh;1ypP7AIT}Ug|)Qp9;9L#-_GZ4YzaPd35100kO zqpf01w=Z@wTZAIAvEoX2T`3K~E2i$=p5Z zX^a_?`0hQj1gc`*AfXZk50T%{`z|Fn1P0`WnOe;|Cic&OuosqbTBTzbr+2%6L zvw0hppX`Y3S@Su$bDXN<6lMu&pUbqG%vSnwlRTsOY<=_e;~SfQB;GViUd4)s`6^75 zb#kzXu{)f;3@KEUZ?(fOLh#?OP$??;{C?NtugS!Xz3Z0vMJmG2#fh#Fd2IIADRuWy zuYG&mdS4sHCRk~R7;up_jHA%x7;|Vsy!}}=jvVl2mn7USR?DBjUU_3E-d(da--;M0 z30OucA&BXmV7HOPp3R1iK~lD&ZI0V#F9g;&V{Yv^8LMhb-Whwl;_}p`8fFDMGRlt- zb2*fHk(>fHWP{z~{VGjPBW#^2yh`uzETBlnY&yjr-SH+`S5h5W^3R|g7BB8{O}OVP zZaGrslcMC(UCQ-q)H1AMFEZ>ZNf=|Z?eW`pLdCo3>Qu@R!@2576%_x+h+d;NTF>VN zy5Xz@sh(M))&7!TJ+(S%%{pC8+#X-Lw}XMc+=$2?GK@%2S}J+#-*%$(n^?yI=D&!Y zTsf;4C9ay$M4&pqSTUrIANz*JzI_KI@2to>*7U8)!NiRB`2wayva~_hgd!O`NxVZC zr^CO-+1n%-%GP(?ITpXH&uL;O>M_lyk18e0zY@6@vkJvww<6)Fpjov1|HQ2Sqb+kx z7Oo;6+J;7Fp$S%S+%cn$Z?Q17$gJVq0bl=qR6_7ytq6yV^D3=5O zDMY)Bv9VG(ZDq-4$+$@wEgrKG;4yn%MG})6E9vSvsSy_X8TvIHU>{Q4uA2=YKW%A{ zJ9wgV)Ra8C=zjXg#bNDh6q>X`rF?a&T86!I5o}s`l85$<%BlX}>qu{Ogtg7NVPJb* z6kKghL*iWlXe3v{Xcn;FF0{2uWb)wcv7(mo33=4PfkdflykpJEH)c?CD166um;n_3 zkNvRZv+7NW1Qq&MKyh#u;z-;vJ(BS1FsPI#BrLelto|X_t}TEn9h+j~Mm7MJiG7@v zn)+1O-6o(n^OQA?MT+i|T>GcQ#8^PZom*MC{xQyg)u_(B<#_+II_Azrf~4Tt3x4L& z!VFcV ziu0VL_Fo~rSW^*4I^Z#~6^kL2SP&@*2C=4VbtJo=g59WIGXUlZ!2 zatIHtk-H(P>>wV@iu+6fE&r~YQzEIaBw+0{8%>UX2Y746DX1_bz%1JQzL~Wc)5tJE zJJ9Q@P@Fn=*Ae5l<)OXrM5rB_BblBx;^)NwWST06%h{v4E#nr9V|*1?{&mONbr!1) zIjyJj5#i@ocf1?D{v;5&td&S)|M+n&nogi~ecTPy28Pcx`pg3aK+tEWGrZEe)q59( z*1zFdcWg;CUoh7+HNE=j3o6|ib5))OBG*E4yvl7ym_S=EMgRo6D8Senw?^YaK=FCD zaU-Fm`)ztqVU#1M3%S6104javor~fh!9OCP+7aLh_#hAf6XpfQPEc9-i&RTm5FT~` zw0*k2hIsk#*)veTqyg$#2tnJOC{TJ#1#fWh$l$znYhfjy{ehVo zl|QE506-RO8xYk_>N4ji94goedvr^hIJ4br!58^*k)Z6FNcNjW>yOhX(}%Pi+qY4IszmkV(D?;{+^pe^z9O@nVD{3dE^-5b+fMZ6_A`$lyqoNq5z+NsxDdyq z2IAc+-TS@7{xj99acbZuB3o?v~8v3U<_=qCK+ z4|`utc{or*TEsCMZ9z(lkig<^-@T5}0+j4)txX||HK()n8hQ(=`cQf&`6Oz0Y4FZw!cLIdT?WIQqQqD*3GB@KI{3tY7sJ zjE20*s*M!+@@y{n#3UbWfI0>lB!qJ{gK@II+-UY#HeB+vjl+#9);B6O+Pzgd-B=n- z36%G_nPaZViBsSC8HOM9cKf`&m|QXV-QrCQlQ=nGa$+uRJiz=#l+bs@$+CBLb{_7H zP=H$Htr1c9uV0C``9|2pjP>>ZcpDb!Y`AnW`hg;LL}3~ea8*u8rhIoty;chYvUSTg zAFA00j*aQPvbx)PxShMzFMZw)-gE9E{tmS}w_kk$Dvt&V_8A3!{(J=P#^Km}O4x9E zuxo=TURlZfz$t{j4VmjsIElb*38cesnh)avHK06O-i=*npb`!LSca)FGHf1Dz$gKB z59h-zDjo1M_1 zm9zRI3$oTj2a2u>bcW-|e%KnzN}CTO73+`~?^kFJN18luKw+j$N6yLYGjq2G> z(AVeBVGn4-nh~xL(%;$^I=j#(k)QJ-f3tf)o^8K&eX^RlNays`WWd4$oRhP}!}SWx z`;Q+Z0IKVO-}*xqnHqM${v|vSLKLrPXvhK@4#i$&*2(Hhy;xN33k?de&I}Mx18LQ8 zv_w=;P;kHAQz}Jr+wkjGPK*83{rtB{;@0CoM!nWbC~zSAYx(AY)`daDobpG7!CdV! zTbpI_w3fYSu>7GZA)<6T0Pg?sv% znl}Nj1~a7GtbO3`RIRK^3_}c@4a@%Pm)+7mnf>2A4<9{BI*4WUAqR!ZBoMuFQxV8q zID3*gX0s7gqsMKdROdm*m!gEDi@iBimX-3>+MynJXEN%)51Oj3$}kL0ahx8{`WkgJ z-Vs$Ya{G|i+pkgLcZi(RyA2`f(S9=fJP1Z~`Y=vg_**P}$PZtJnP1^dvF>xmEuwUOu*0qI&*__*6$JplCMQE1BK+26@B? zmp$U)#rt_G&GrX6bBH&)+17e;cX()dw%Pc{b>ddkqGA{&`_B79L-lILchIcboin+# zN&HW--hcfveXOoQOh+W#m<1pH{zC<1zkR)OqikxonNO9*Os# zj_fz}Ug<+zY(-T`6Pr{kXCzb47x3b<&i)dApq2?F*;`2oj0~xa**b6VV}O&wxT}&< zW&c|Xpt&JmJj>1NnEo*?yRkALeq+KUPRRfE{h95@cX}dP4;2b+J}$L?&E9t@p5v5D zck5+PO;2X3v2gl4Oe~Pr(S{~sduu6wz{W2YNAD-RcH3Xy$fojB%g=Rr!%Z*0)%-)} zHSMR{a}_@CJlt!@6<14T|8Q9?k)YZ@==U4sa27f8TnzpF|8hvh=ju-^40(i<>Ax%; ziXN(aEs(`PX-76WLFEvdMbtJbnw7D6Ts0fxvw0+au+h_5QawX;=krZa;SL~1s=jAO zsu%9)Hab9_X}|VkQqtVkJYH#8R>0XUaE8-vm;Z2|z0pm^B!AAXcahM#a*epeqLTDZ_Fnq{T7Hn!Es&{uJS0+MmhLlv|jN%)}24v>wK&Zg`-CC9)Kt|j`xeCHv2>^uDp zE-pg(^9HtPy1rTG!p{f{_vv-rx= zV=jIGZ3s1=PO(QuR?h93&AJ|!`A`(7hQ5X<9*^M8@ n=PUAaqXaUUKFT(6|wt$ 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

LLa&%Hpc$KMd;?RkwZjd#yzAdb~A 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�Xwk3LNgzhK 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 Date: Wed, 11 Sep 2024 11:51:21 +0300 Subject: [PATCH 259/380] fix(docker): remove latest tag (#5201) remove latest tag Signed-off-by: Oguz Ozturk --- .github/actions/docker-build-and-push/action.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 1d4af106e13..3eea64f185f 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -79,8 +79,7 @@ runs: fi tags+=("{{date 'YYYYMMDD'}}") - tags+=("latest") - tags+=("latest-${{ inputs.tag-prefix }}") + tags+=("${{ inputs.tag-prefix }}") # Output multiline strings: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) From ae25cc4c1400b49debf483841ec41864dc703581 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Wed, 11 Sep 2024 19:23:51 +0300 Subject: [PATCH 260/380] fix(docker): fix docker image tagging on build/run scripts (#5199) * fix docker image naming Signed-off-by: Oguz Ozturk * . Signed-off-by: Oguz Ozturk --------- Signed-off-by: Oguz Ozturk --- docker/build.sh | 8 ++++---- docker/run.sh | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index 4824a88e11b..b962137b79c 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -59,7 +59,7 @@ set_cuda_options() { # Set build options set_build_options() { if [ "$option_devel_only" = "true" ]; then - targets=("devel") + targets=("universe-devel") else targets=() fi @@ -132,9 +132,9 @@ build_images() { --set "*.args.BASE_IMAGE=$base_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "*.args.LIB_DIR=$lib_dir" \ - --set "base.tags=ghcr.io/autowarefoundation/autoware:latest-base" \ - --set "devel.tags=ghcr.io/autowarefoundation/autoware:latest-devel$image_name_suffix" \ - --set "runtime.tags=ghcr.io/autowarefoundation/autoware:latest-runtime$image_name_suffix" \ + --set "base.tags=ghcr.io/autowarefoundation/autoware:base" \ + --set "universe-devel.tags=ghcr.io/autowarefoundation/autoware:universe-devel$image_name_suffix" \ + --set "universe.tags=ghcr.io/autowarefoundation/autoware:universe$image_name_suffix" \ "${targets[@]}" set +x } diff --git a/docker/run.sh b/docker/run.sh index 17be654d8cc..a1c920906b6 100755 --- a/docker/run.sh +++ b/docker/run.sh @@ -91,7 +91,7 @@ parse_arguments() { set_variables() { if [ "$option_devel" = "true" ]; then # Set image based on option - IMAGE="ghcr.io/autowarefoundation/autoware:latest-devel" + IMAGE="ghcr.io/autowarefoundation/autoware:universe-devel" # Set workspace path, if not provided use the current directory if [ "$WORKSPACE_PATH" = "" ]; then @@ -113,12 +113,12 @@ set_variables() { fi else # Set image based on option - IMAGE="ghcr.io/autowarefoundation/autoware:latest-runtime" + IMAGE="ghcr.io/autowarefoundation/autoware:universe" # Set map path if [ "$MAP_PATH" = "" ]; then echo -e "\n------------------------------------------------------------" - echo -e "${RED}Note:${NC} The --map-path option is mandatory for the runtime. For development environment with shell access, use --devel option." + echo -e "${RED}Note:${NC} The --map-path option is mandatory for the universe(runtime image). For development environment with shell access, use --devel option." echo -e "------------------------------------------------------------" exit 1 else From 291786b53f427723a5191251c1a83c59476c5427 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Wed, 11 Sep 2024 19:25:20 +0300 Subject: [PATCH 261/380] fix(docker): devcontainer naming (#5200) * fix devcontainer naming Signed-off-by: Oguz Ozturk * Update .devcontainer/cuda/devcontainer.json Co-authored-by: Yutaka Kondo * Update .devcontainer/base/devcontainer.json Co-authored-by: Yutaka Kondo --------- Signed-off-by: Oguz Ozturk Co-authored-by: Yutaka Kondo --- .devcontainer/base/devcontainer.json | 4 ++-- .devcontainer/cuda/devcontainer.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.devcontainer/base/devcontainer.json b/.devcontainer/base/devcontainer.json index f3b5ffe9984..fdef3562af1 100644 --- a/.devcontainer/base/devcontainer.json +++ b/.devcontainer/base/devcontainer.json @@ -1,8 +1,8 @@ { - "name": "Autoware", + "name": "autoware:universe-devel", "build": { "dockerfile": "../Dockerfile", - "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:latest-devel" } + "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:universe-devel" } }, "remoteUser": "autoware", "runArgs": [ diff --git a/.devcontainer/cuda/devcontainer.json b/.devcontainer/cuda/devcontainer.json index bb0b6ad849e..3a6a1c247a1 100644 --- a/.devcontainer/cuda/devcontainer.json +++ b/.devcontainer/cuda/devcontainer.json @@ -1,8 +1,8 @@ { - "name": "Autoware-cuda", + "name": "autoware:universe-devel-cuda", "build": { "dockerfile": "../Dockerfile", - "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:latest-devel-cuda" } + "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:universe-devel-cuda" } }, "remoteUser": "autoware", "hostRequirements": { From 30fd2649fb0561e491300e645498e372f6233c8d Mon Sep 17 00:00:00 2001 From: Junya Sasaki Date: Thu, 12 Sep 2024 10:49:23 +0900 Subject: [PATCH 262/380] feat(create-prs-to-update-vcs-repositories): add a workflow (#5212) --- ...create-prs-to-update-vcs-repositories.yaml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/create-prs-to-update-vcs-repositories.yaml diff --git a/.github/workflows/create-prs-to-update-vcs-repositories.yaml b/.github/workflows/create-prs-to-update-vcs-repositories.yaml new file mode 100644 index 00000000000..b759ae85677 --- /dev/null +++ b/.github/workflows/create-prs-to-update-vcs-repositories.yaml @@ -0,0 +1,30 @@ +name: create-prs-to-update-vcs-repositories + +on: + schedule: + - cron: 0 0,6,12,18 * * * + workflow_dispatch: + +jobs: + create-version-update-pr: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Generate GitHub App token + id: generate-token + uses: tibdex/github-app-token@v2 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.PRIVATE_KEY }} + + - name: Create PRs to update VCS repositories + uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 + with: + token: ${{ steps.generate-token.outputs.token }} + repo_name: autowarefoundation/autoware + parent_dir: . + base_branch: main + new_branch_prefix: feat/update- + autoware_repos_file_name: autoware.repos + verbosity: 0 From 949a69e49ae8a0fb7d710080e5b613d926e13e21 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 12 Sep 2024 17:48:04 +0900 Subject: [PATCH 263/380] feat(create-prs-to-update-vcs-repositories): revert "add a workflow" (#5237) Revert "feat(create-prs-to-update-vcs-repositories): add a workflow (#5212)" This reverts commit 30fd2649fb0561e491300e645498e372f6233c8d. --- ...create-prs-to-update-vcs-repositories.yaml | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 .github/workflows/create-prs-to-update-vcs-repositories.yaml diff --git a/.github/workflows/create-prs-to-update-vcs-repositories.yaml b/.github/workflows/create-prs-to-update-vcs-repositories.yaml deleted file mode 100644 index b759ae85677..00000000000 --- a/.github/workflows/create-prs-to-update-vcs-repositories.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: create-prs-to-update-vcs-repositories - -on: - schedule: - - cron: 0 0,6,12,18 * * * - workflow_dispatch: - -jobs: - create-version-update-pr: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Generate GitHub App token - id: generate-token - uses: tibdex/github-app-token@v2 - with: - app_id: ${{ secrets.APP_ID }} - private_key: ${{ secrets.PRIVATE_KEY }} - - - name: Create PRs to update VCS repositories - uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 - with: - token: ${{ steps.generate-token.outputs.token }} - repo_name: autowarefoundation/autoware - parent_dir: . - base_branch: main - new_branch_prefix: feat/update- - autoware_repos_file_name: autoware.repos - verbosity: 0 From 9fbc35e2ceae9441a739ef85f2b36162f9ce937f Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Tue, 17 Sep 2024 05:27:14 +0300 Subject: [PATCH 264/380] fix(docker): remove rosdistro tag and add date as suffix (#5216) * remove rosdistro tag and add date as suffix Signed-off-by: Oguz Ozturk * add conditional hypen,put date at the end always Signed-off-by: Oguz Ozturk * remove additional hypen Signed-off-by: Oguz Ozturk --------- Signed-off-by: Oguz Ozturk --- .../actions/docker-build-and-push/action.yaml | 72 +++++++++---------- .../docker-build-and-push-arm64.yaml | 2 +- .github/workflows/docker-build-and-push.yaml | 5 +- 3 files changed, 36 insertions(+), 43 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 3eea64f185f..6389b4d8ceb 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -14,9 +14,6 @@ inputs: build-args: description: "" required: false - tag-prefix: - description: "" - required: false tag-suffix: description: "" required: false @@ -70,22 +67,9 @@ runs: } skip-extraction: true - - name: Set Docker tags - id: set-docker-tags - run: | - tags=() - if [ "${{ github.event_name }}" == "push" ] && [ "${{ github.ref_type }}" == "tag" ]; then - tags+=("$(echo "${{ github.ref }}" | sed -E 's/.*([vV][0-9]+\.[0-9]+\.[0-9]+).*/\1/')") - fi - - tags+=("{{date 'YYYYMMDD'}}") - tags+=("${{ inputs.tag-prefix }}") - - # Output multiline strings: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings - EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) - echo "tags<<$EOF" >> $GITHUB_OUTPUT - echo "$(printf "%s\n" "${tags[@]}")" >> $GITHUB_OUTPUT - echo "$EOF" >> $GITHUB_OUTPUT + - name: Get current date + id: date + run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT shell: bash - name: Docker meta for autoware:base @@ -93,110 +77,120 @@ runs: uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=base${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=base${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-base flavor: | latest=false - suffix=-base${{ inputs.tag-suffix }} - name: Docker meta for autoware:core-devel id: meta-core-devel uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=core-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=core-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-core-devel flavor: | latest=false - suffix=-core-devel${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe-sensing-perception-devel id: meta-universe-sensing-perception-devel uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-sensing-perception-devel flavor: | latest=false - suffix=-universe-sensing-perception-devel${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe-sensing-perception id: meta-universe-sensing-perception uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe-sensing-perception${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-sensing-perception${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-sensing-perception flavor: | latest=false - suffix=-universe-sensing-perception${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe-localization-mapping-devel id: meta-universe-localization-mapping-devel uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-localization-mapping-devel flavor: | latest=false - suffix=-universe-localization-mapping-devel${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe-localization-mapping id: meta-universe-localization-mapping uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe-localization-mapping${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-localization-mapping${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-localization-mapping flavor: | latest=false - suffix=-universe-localization-mapping${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe-planning-control-devel id: meta-universe-planning-control-devel uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-planning-control-devel flavor: | latest=false - suffix=-universe-planning-control-devel${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe-planning-control id: meta-universe-planning-control uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe-planning-control${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-planning-control${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-planning-control flavor: | latest=false - suffix=-universe-planning-control${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe-devel id: meta-universe-devel uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-devel flavor: | latest=false - suffix=-universe-devel${{ inputs.tag-suffix }} - name: Docker meta for autoware:universe id: meta-universe uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} - tags: ${{ steps.set-docker-tags.outputs.tags }} + tags: | + type=raw,value=universe${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe flavor: | latest=auto - suffix=-universe${{ inputs.tag-suffix }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index 9a4dcc46950..245eb563951 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -31,7 +31,7 @@ jobs: platform: arm64 base_image_env: base_image lib_dir: aarch64 - additional-tag-suffix: -cuda + additional-tag-suffix: cuda steps: # https://github.com/actions/checkout/issues/211 - name: Change permission of workspace diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 9199634b8c2..1057b5d238a 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -31,7 +31,7 @@ jobs: platform: amd64 base_image_env: base_image lib_dir: x86_64 - additional-tag-suffix: -cuda + additional-tag-suffix: cuda steps: - name: Check out repository uses: actions/checkout@v4 @@ -75,8 +75,7 @@ jobs: *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} - tag-prefix: ${{ needs.load-env.outputs.rosdistro }} + tag-suffix: ${{ matrix.additional-tag-suffix }} - name: Show disk space run: | From e7ad3030a871f170b58c7de82a3f23f435ba5814 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 18 Sep 2024 16:58:00 +0900 Subject: [PATCH 265/380] fix(docker): remove TODO comments and unnecessary copies of source code (#5253) --- docker/Dockerfile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index d53659d5c17..bc2917ca949 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -65,9 +65,6 @@ RUN rosdep update && rosdep keys --ignore-src --from-paths src \ COPY src/universe/external /autoware/src/universe/external COPY src/universe/autoware.universe/common /autoware/src/universe/autoware.universe/common -# TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved -COPY src/universe/autoware.universe/simulator/dummy_perception_publisher /autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher -COPY src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils /autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils RUN rosdep keys --ignore-src --from-paths src \ | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ | grep -v '^#' \ @@ -223,9 +220,6 @@ RUN --mount=type=ssh \ # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/common,target=/autoware/src/universe/autoware.universe/common \ - # TODO(youtalk): Remove --mount options when https://github.com/autowarefoundation/autoware.universe/issues/8695 is resolved - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher,target=/autoware/src/universe/autoware.universe/simulator/dummy_perception_publisher \ - --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils,target=/autoware/src/universe/autoware.universe/vehicle/autoware_vehicle_info_utils \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/external,target=/autoware/src/universe/external \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ From 508036eae984b051a6b734b9e9f1d42b497eaf3e Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 01:52:21 +0000 Subject: [PATCH 266/380] ci(pre-commit): autoupdate (#5247) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 26c5585f4fc..e6c3aba177d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -38,7 +38,7 @@ repos: - id: shellcheck - repo: https://github.com/scop/pre-commit-shfmt - rev: v3.8.0-1 + rev: v3.9.0-1 hooks: - id: shfmt args: [-w, -s, -i=4] From 549a7f85eb605053651ddb9edd45e1148ea65122 Mon Sep 17 00:00:00 2001 From: Khalil Selyan <36904941+KhalilSelyan@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:15:20 +0300 Subject: [PATCH 267/380] feat: qt5ct dark mode integration using ansible (#4838) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: KhalilSelyan Co-authored-by: M. Fatih Cırıt --- ansible/playbooks/install_rviz_theme.yaml | 4 + ansible/playbooks/universe.yaml | 3 + ansible/roles/qt5ct_setup/README.md | 60 + ansible/roles/qt5ct_setup/defaults/main.yml | 1 + .../autoware-rviz-icons/active/downarrow.svg | 19 + .../autoware-rviz-icons/active/uparrow.svg | 19 + .../disabled/branch-end.svg | 24 + .../disabled/branch-more.svg | 24 + .../disabled/downarrow.svg | 19 + .../disabled/leftarrow.svg | 19 + .../disabled/radiobutton_checked.svg | 22 + .../disabled/radiobutton_unchecked.svg | 19 + .../disabled/rightarrow.svg | 19 + .../autoware-rviz-icons/disabled/uparrow.svg | 19 + .../autoware-rviz-icons/disabled/vline.svg | 23 + .../files/autoware-rviz-icons/primary/add.svg | 1 + .../primary/branch-closed.svg | 1 + .../primary/branch-end.svg | 24 + .../primary/branch-more.svg | 24 + .../primary/branch-open.svg | 1 + .../primary/checkbox_checked_disabled.svg | 1 + .../primary/checkbox_checked_enabled.svg | 1 + .../primary/checkbox_checked_hovered.svg | 1 + .../primary/checkbox_checked_pressed.svg | 1 + .../checkbox_indeterminate_disabled.svg | 1 + .../checkbox_indeterminate_enabled.svg | 1 + .../checkbox_indeterminate_hovered.svg | 1 + .../checkbox_indeterminate_pressed.svg | 1 + .../primary/checkbox_unchecked_disabled.svg | 1 + .../primary/checkbox_unchecked_enabled.svg | 1 + .../primary/checkbox_unchecked_hovered.svg | 1 + .../primary/checkbox_unchecked_pressed.svg | 1 + .../autoware-rviz-icons/primary/close.svg | 1 + .../autoware-rviz-icons/primary/downarrow.svg | 19 + .../autoware-rviz-icons/primary/float.svg | 20 + .../autoware-rviz-icons/primary/leftarrow.svg | 19 + .../autoware-rviz-icons/primary/minus.svg | 1 + .../autoware-rviz-icons/primary/more.svg | 1 + .../primary/radiobutton_checked.svg | 22 + .../primary/radiobutton_checked_invert.svg | 22 + .../primary/radiobutton_unchecked.svg | 19 + .../primary/radiobutton_unchecked_invert.svg | 19 + .../primary/rightarrow.svg | 19 + .../autoware-rviz-icons/primary/sizegrip.svg | 29 + .../autoware-rviz-icons/primary/slider.svg | 19 + .../primary/splitter-horizontal.svg | 3 + .../primary/splitter-vertical.svg | 3 + .../autoware-rviz-icons/primary/tab_close.svg | 20 + .../primary/toolbar-handle-horizontal.svg | 31 + .../primary/toolbar-handle-vertical.svg | 31 + .../autoware-rviz-icons/primary/uparrow.svg | 19 + ansible/roles/qt5ct_setup/files/autoware.qss | 1392 +++++++++++++++++ ansible/roles/qt5ct_setup/files/qt5ct.conf | 35 + ansible/roles/qt5ct_setup/meta/main.yml | 0 ansible/roles/qt5ct_setup/tasks/main.yml | 81 + 55 files changed, 2182 insertions(+) create mode 100644 ansible/playbooks/install_rviz_theme.yaml create mode 100644 ansible/roles/qt5ct_setup/README.md create mode 100644 ansible/roles/qt5ct_setup/defaults/main.yml create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg create mode 100755 ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg create mode 100644 ansible/roles/qt5ct_setup/files/autoware.qss create mode 100644 ansible/roles/qt5ct_setup/files/qt5ct.conf create mode 100644 ansible/roles/qt5ct_setup/meta/main.yml create mode 100644 ansible/roles/qt5ct_setup/tasks/main.yml diff --git a/ansible/playbooks/install_rviz_theme.yaml b/ansible/playbooks/install_rviz_theme.yaml new file mode 100644 index 00000000000..a30b0900ddf --- /dev/null +++ b/ansible/playbooks/install_rviz_theme.yaml @@ -0,0 +1,4 @@ +- name: Install RViz theme + hosts: localhost + roles: + - autoware.dev_env.qt5ct_setup diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index e443c041bc5..ce32248d98b 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -62,3 +62,6 @@ # ONNX files and other artifacts - role: autoware.dev_env.artifacts when: prompt_download_artifacts == 'y' + + # Qt5ct setup (RViz theme) + - role: autoware.dev_env.qt5ct_setup diff --git a/ansible/roles/qt5ct_setup/README.md b/ansible/roles/qt5ct_setup/README.md new file mode 100644 index 00000000000..41fc944eb4e --- /dev/null +++ b/ansible/roles/qt5ct_setup/README.md @@ -0,0 +1,60 @@ +# qt5ct_setup Ansible role + +## Overview + +The `qt5ct_setup` Ansible role automates the configuration of the `qt5ct` environment for Autoware. +It won't affect the system-wide configuration. + +## Installation + +Follow the instructions below to **install** or **update** the custom theme for `RViz2` in Autoware. + +> **Important:** Both commands must be run when you want to update the theme. + +```bash +cd ~/autoware # The root directory of the cloned repository +ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" +ansible-playbook autoware.dev_env.install_rviz_theme --ask-become-pass +``` + +## How to use the custom theme in RViz2 + +To apply a custom theme to RViz2, you can use the `qt5ct` platform theme. Follow these steps to ensure that the `QT_QPA_PLATFORMTHEME` environment variable is set correctly for your RViz2 instance when used with Autoware. + +### Manual setup for running RViz2 + +Before running RViz2 manually, set the `QT_QPA_PLATFORMTHEME` environment variable to `qt5ct`. +This ensures that the custom theme settings are applied. + +```bash +export QT_QPA_PLATFORMTHEME=qt5ct +``` + +Then, start RViz2 as usual. + +```bash +rviz2 +``` + +### Automatic setup in Autoware + +In Autoware, the `QT_QPA_PLATFORMTHEME` environment variable is automatically set within the main [autoware.launch.xml](https://github.com/autowarefoundation/autoware_launch/blob/main/autoware_launch/launch/autoware.launch.xml) file. +Therefore, you do not need to manually set this environment variable when launching Autoware. + +In the `autoware.launch.xml` file, RViz2 is configured with the following `` element: + +```xml + + + +``` + +This configuration automatically sets the `QT_QPA_PLATFORMTHEME` to `qt5ct` when RViz2 is launched as part of Autoware. +It also includes additional options such as respawn behavior and custom RViz2 configurations. diff --git a/ansible/roles/qt5ct_setup/defaults/main.yml b/ansible/roles/qt5ct_setup/defaults/main.yml new file mode 100644 index 00000000000..bdaab0e3e6d --- /dev/null +++ b/ansible/roles/qt5ct_setup/defaults/main.yml @@ -0,0 +1 @@ +# defaults file for qt5ct_setup diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg new file mode 100644 index 00000000000..22a70a5fbc9 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg new file mode 100644 index 00000000000..b283329b32b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg new file mode 100755 index 00000000000..decd600a806 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg new file mode 100755 index 00000000000..669c8ee6b77 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg new file mode 100755 index 00000000000..22a70a5fbc9 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg new file mode 100755 index 00000000000..a1b5eb770c3 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg new file mode 100755 index 00000000000..462030e6b75 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg new file mode 100755 index 00000000000..73e58ac050b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg new file mode 100755 index 00000000000..31224808311 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg new file mode 100755 index 00000000000..b283329b32b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg new file mode 100755 index 00000000000..67f84120ce2 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg new file mode 100644 index 00000000000..c747fc89c49 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg new file mode 100755 index 00000000000..43acdf27491 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg new file mode 100755 index 00000000000..87f7840f363 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg new file mode 100755 index 00000000000..9f8af0ba8c3 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg new file mode 100755 index 00000000000..d22353f4e9e --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg new file mode 100644 index 00000000000..f737c436438 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg new file mode 100644 index 00000000000..d9eee3a1e08 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg new file mode 100644 index 00000000000..b49a8cf315b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg new file mode 100644 index 00000000000..5d3bccb1941 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg new file mode 100644 index 00000000000..8f9b9ae512c --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg new file mode 100644 index 00000000000..797fb421df9 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg new file mode 100644 index 00000000000..43b20a76820 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg new file mode 100644 index 00000000000..a39172c056a --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg new file mode 100644 index 00000000000..873587b1985 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg new file mode 100644 index 00000000000..265a55067f5 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg new file mode 100644 index 00000000000..27990330dc2 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg new file mode 100644 index 00000000000..e9c0436eb7e --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg new file mode 100755 index 00000000000..fed396b0d88 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg new file mode 100755 index 00000000000..8176e8f50b0 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg new file mode 100755 index 00000000000..bb2383e4ec7 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg new file mode 100755 index 00000000000..e595c0d652d --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg new file mode 100644 index 00000000000..7be3c893e40 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg new file mode 100644 index 00000000000..c11e849e587 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg new file mode 100755 index 00000000000..ea2d8183e3d --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg new file mode 100755 index 00000000000..92003b1b80c --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg new file mode 100755 index 00000000000..ec6ee7a3213 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg new file mode 100755 index 00000000000..5defd965a50 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg new file mode 100755 index 00000000000..4845aa5975c --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg new file mode 100755 index 00000000000..6a3d5ec4839 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg new file mode 100755 index 00000000000..ecd7581285f --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg new file mode 100644 index 00000000000..6be8cb04a16 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg new file mode 100644 index 00000000000..d4819f465e5 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg new file mode 100755 index 00000000000..3c758445d0a --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg new file mode 100755 index 00000000000..0d639307250 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg new file mode 100755 index 00000000000..b6b267ead6f --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg new file mode 100755 index 00000000000..cab8eba2ab5 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware.qss b/ansible/roles/qt5ct_setup/files/autoware.qss new file mode 100644 index 00000000000..d0e2af381f7 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware.qss @@ -0,0 +1,1392 @@ +/* ------------------------------------------------------------------------ */ +/* QtMaterial - https://github.com/UN-GCPDS/qt-material +/* By Yeison Cardona - GCPDS +/* ------------------------------------------------------------------------ */ + +* { + color: #ffffff; + font-family: Roboto, sans-serif; + font-size: 13px; + line-height: 13px; + selection-color: #0f1417; +} + +*:focus { + outline: none; +} + +/* Basic widgets */ + +QWidget { + background-color: #0f1417; +} + +QGroupBox, +QFrame { + background-color: #0f1417; +} + +QGroupBox.fill_background, +QFrame.fill_background { + background-color: #0f1417; +} + +QSplitter { + background-color: transparent; + border: none; +} + +QStatusBar { + color: #ffffff; + background-color: #0f1417; + border-radius: 0px; +} + +QScrollArea, +QStackedWidget, +QWidget > QToolBox, +QToolBox > QWidget, +QTabWidget > QWidget { + border: none; +} + +QTabWidget::pane { + border: none; +} + +/* ------------------------------------------------------------------------ */ +/* Inputs */ + +QDateEdit, +QDateTimeEdit, +QSpinBox, +QDoubleSpinBox, +QComboBox, +QLineEdit { + color: #ffffff; + padding-left: 16px; + border-radius: 0px; + height: 24px; + background-color: #0f1417; +} + +QListView { + color: #ffffff; + height: 24px; + background-color: #1b2023; + selection-background-color: #303538; + selection-color: #ffffff; +} + +QPlainTextEdit { + padding: 8px 0px; + background-color: #0f1417; + border: 2px solid #0f1417; +} + +QTextEdit { + padding: 8px 0px; + background-color: #0f1417; +} + +QSpinBox, +QDoubleSpinBox { + color: #ffffff; + background-color: #292d30; + height: 24px; + border-bottom: 1px solid #DFE3E7; + selection-background-color: #84c2e6; +} + +QAbstractSpinBox { + padding: 2px; +} + +QDateEdit:disabled, +QDateTimeEdit:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QTextEdit:disabled, +QLineEdit:disabled { + color: rgba(255, 255, 255, 0.2); + background-color: rgba(35, 38, 41, 0.3); + border: 2px solid #232629; + border-width: 0 0 2px 0; + padding: 0px 16px; + border-radius: 0px; + height: 24px; +} + +/* ------------------------------------------------------------------------ */ +/* QComboBox */ + +QDateEdit, +QComboBox { + color: #ffffff; + height: 24px; + background-color: #292d30; + border-bottom: 1px solid #DFE3E7; +} + +QDateEdit:disabled, +QComboBox:disabled { + color: rgba(255, 255, 255, 0.2); + background-color: rgba(35, 38, 41, 0.3); + border-bottom: 2px solid #232629; +} + +QDateEdit::drop-down, +QComboBox::drop-down { + border: none; +} + +QDateEdit::down-arrow, +QComboBox::down-arrow { + image: url("/icons_path/active/downarrow.svg"); +} + +QDateEdit::down-arrow:focus, +QComboBox::down-arrow:focus { + image: url("/icons_path/primary/downarrow.svg"); +} + +QDateEdit::down-arrow:disabled, +QComboBox::down-arrow:disabled { + image: url("/icons_path/disabled/downarrow.svg"); +} + +QDateEdit QAbstractItemView, +QComboBox QAbstractItemView { + background-color: #0f1417; + padding: 4px; +} + +QDateEdit[frame="false"], +QComboBox[frame="false"] { + color: #ffffff; + background-color: transparent; + border: 1px solid transparent; +} + +QDateEdit[frame="false"]:disabled, +QComboBox[frame="false"]:disabled { + color: rgba(255, 255, 255, 0.2); +} + +/* ------------------------------------------------------------------------ */ +/* Spin buttons */ + +QDateTimeEdit::up-button, +QDoubleSpinBox::up-button, +QSpinBox::up-button { + subcontrol-origin: border; + subcontrol-position: top right; + width: 20px; + image: url("/icons_path/active/uparrow.svg"); + border-width: 0px; + margin-top: 5px; +} + +QTreeView QDateTimeEdit::up-button, +QTreeView QDoubleSpinBox::up-button, +QTreeView QSpinBox::up-button { + margin-top: 0px; +} + +QDateTimeEdit::up-button:disabled, +QDoubleSpinBox::up-button:disabled, +QSpinBox::up-button:disabled { + image: url("/icons_path/disabled/uparrow.svg"); +} + +QDateTimeEdit::down-button, +QDoubleSpinBox::down-button, +QSpinBox::down-button { + subcontrol-origin: border; + subcontrol-position: bottom right; + width: 20px; + image: url("/icons_path/active/downarrow.svg"); + border-width: 0px; + border-top-width: 0; + margin-bottom: 5px; +} + +QTreeView QDateTimeEdit::down-button, +QTreeView QDoubleSpinBox::down-button, +QTreeView QSpinBox::down-button { + margin-bottom: 0px; +} + +QDateTimeEdit::down-button:disabled, +QDoubleSpinBox::down-button:disabled, +QSpinBox::down-button:disabled { + image: url("/icons_path/disabled/downarrow.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QPushButton */ + +QPushButton { + text-transform: capitalize; + margin: 0px; + padding: 0px 16px; + height: 24px; + font-weight: bold; + color: #003546; + border: 2px solid rgba(255, 255, 255, 0); + border-radius: 14px; + background-color: #8bd0f0; +} + +QPushButton:checked, +QPushButton:pressed { + color: #003546; + background-color: #84c2e6; +} + +QPushButton:hover { + background-color: #84c2e6; + color: #003546; + border: 2px solid rgba(255, 255, 255, 0); +} + +QPushButton:flat { + margin: 0px; + color: #84c2e6; + border: none; + background-color: transparent; +} + +QPushButton:flat:hover { + background-color: #84c2e6; +} + +QPushButton:flat:pressed, +QPushButton:flat:checked { + background-color: #699bb8; +} + +QPushButton:disabled { + color: #6e7276; + background-color: #292d30; + border: 2px solid rgba(255, 255, 255, 0); +} + +QPushButton:flat:disabled { + color: #6e7276; + background-color: #292d30; + border: none; +} + +QPushButton:checked:disabled { + color: #6e7276; + background-color: #0f1417; + border: 2px solid rgba(255, 255, 255, 0); +} + +QToolButton:focus, +QPushButton:focus { + background-color: #84c2e6; +} + +QPushButton:checked:focus, +QPushButton:pressed:focus { + background-color: #699bb8; +} + +QPushButton:flat:focus { + border: none; + background-color: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QTabBar */ + +QTabBar { + text-transform: capitalize; + font-weight: bold; +} + +QTabBar::tab { + color: #ffffff; + border-top: 2px solid rgba(255, 255, 255, 0); +} + +QTabBar::tab:bottom, +QTabBar::tab:top { + padding: 0 16px; + height: 28px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + padding: 16px 0; + width: 28px; +} + +QTabBar::tab:top:selected, +QTabBar::tab:top:hover { + border-bottom: 2px solid #8bd0f0; +} + +QTabBar::tab:bottom:selected, +QTabBar::tab:bottom:hover { + border-top: 2px solid #8bd0f0; +} + +QTabBar::tab:right:selected, +QTabBar::tab:right:hover { + border-left: 2px solid #8bd0f0; +} + +QTabBar::tab:left:selected, +QTabBar::tab:left:hover { + border-right: 2px solid #8bd0f0; +} + +QTabBar::tab:hover { + color: #fff; + background-color: #303538; +} + +QTabBar::tab:selected { + color: #fff; + background-color: #292d30; +} + +/* pressed state */ +QTabBar::tab:pressed { + color: #fff; + background-color: #383b3f; +} + +QTabBar QToolButton:hover, +QTabBar QToolButton { + border: 0px; + background-color: #232629; +} + +QTabBar QToolButton::up-arrow { + image: url("/icons_path/primary/uparrow.svg"); + width: 28px; +} + +QTabBar QToolButton::down-arrow { + image: url("/icons_path/primary/downarrow.svg"); + width: 28px; +} + +QTabBar QToolButton::right-arrow { + image: url("/icons_path/disabled/rightarrow.svg"); + height: 28px; +} + +QTabBar QToolButton::left-arrow { + image: url("/icons_path/disabled/leftarrow.svg"); + height: 28px; +} + +QTabBar::close-button { + image: url("/icons_path/primary/tab_close.svg"); +} + +QTabBar::close-button:hover { + image: url("/icons_path/primary/tab_close.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QGroupBox */ + +QGroupBox { + padding: 16px; + padding-top: 36px; + text-transform: capitalize; +} + +QGroupBox::title { + color: #dfe3e7; + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 16px; + background-color: transparent; + height: 36px; +} + +/* ------------------------------------------------------------------------ */ +/* QRadioButton and QCheckBox labels */ + +QRadioButton, +QCheckBox { + color: #84c2e6; + line-height: 12px; + height: 24px; + background-color: transparent; + spacing: 5px; +} + +QRadioButton:disabled, +QCheckBox:disabled { + color: #8bd0f0; +} + +/* ------------------------------------------------------------------------ */ +/* QRadioButton Indicator */ + +QRadioButton::indicator:checked { + image: url("/icons_path/primary/radiobutton_checked.svg"); +} + +QRadioButton::indicator:unchecked { + image: url("/icons_path/primary/radiobutton_unchecked.svg"); +} + +QRadioButton::indicator:checked:disabled { + image: url("/icons_path/disabled/radiobutton_checked.svg"); +} + +QRadioButton::indicator:unchecked:disabled { + image: url("/icons_path/disabled/radiobutton_unchecked.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QDockWidget */ + +QDockWidget { + color: #ffffff; + text-transform: capitalize; + border: 2px solid #232629; + titlebar-close-icon: url("/icons_path/primary/close.svg"); + titlebar-normal-icon: url("/icons_path/primary/float.svg"); + border-radius: 4px; +} + +QDockWidget::title { + text-align: left; + padding-left: 36px; + padding: 3px; + margin-top: 4px; +} + +/* ------------------------------------------------------------------------ */ +/* QMenu */ + +QMenu { + background-color: #1b2023; + margin: 10px; +} + +QMenu::item { + height: 14px; + margin: 4px; + padding: 0px; + color: #ffffff; +} + +QMenu::item:selected { + background-color: #303538; + margin-top: 0px; + margin-bottom: 0px; +} + +QMenu::item:disabled { + color: rgba(255, 255, 255, 0.3); +} + +QMenu::separator { + height: 1px; + margin: 2px; + background-color:#40484C; +} + +QMenu::right-arrow { + image: url("/icons_path/primary/rightarrow.svg"); + width: 16px; + height: 16px; +} + +QMenu::right-arrow:selected { + image: url("/icons_path/disabled/rightarrow.svg"); +} + +/* QMenu Checkboxes */ + +QMenu::indicator:non-exclusive:unchecked { + image: url("/icons_path/primary/checkbox_unchecked_enabled.svg"); +} + +QMenu::indicator:non-exclusive:unchecked:selected { + image: url("/icons_path/primary/checkbox_unchecked_hovered.svg"); +} + +QMenu::indicator:non-exclusive:checked { + image: url("/icons_path/primary/checkbox_checked_enabled.svg"); +} + +QMenu::indicator:non-exclusive:checked:selected { + image: url("/icons_path/primary/checkbox_checked_hovered.svg"); +} + +/* QMenu Radiobuttons */ + +QMenu::indicator:exclusive:unchecked { + image: url("/icons_path/primary/radiobutton_unchecked.svg"); +} + +QMenu::indicator:exclusive:unchecked:selected { + image: url("/icons_path/primary/radiobutton_unchecked_invert.svg"); +} + +QMenu::indicator:exclusive:checked { + image: url("/icons_path/primary/radiobutton_checked.svg"); +} + +QMenu::indicator:exclusive:checked:selected { + image: url("/icons_path/primary/radiobutton_checked_invert.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QMenuBar */ + +QMenuBar { + background-color: #0f1417; + color: #ffffff; + border-bottom: 2px solid rgba(255, 255, 255, 0); +} + +QMenuBar::item { + /* height: 32px; */ + padding: 4px; + background-color: transparent; + color: #ffffff; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed { + color: #ffffff; + background-color: #303538; +} + +/* ------------------------------------------------------------------------ */ +/* QToolBox */ + +QToolBox::tab { + background-color: #0f1417; + color: #ffffff; + text-transform: capitalize; + border-radius: 4px; + padding-left: 15px; +} + +QToolBox::tab:selected, +QToolBox::tab:hover { + background-color: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QProgressBar */ + +QProgressBar { + border-radius: 0; + background-color: #0f1417; + text-align: center; + color: transparent; +} + +QProgressBar::chunk { + background-color: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QScrollBar */ + +QScrollBar { + border: 0; + background: rgba(255, 255, 255, 0.15); + border-radius: 5px; +} + +QScrollBar:horizontal { + height: 10px; +} + +QScrollBar:vertical { + width: 10px; +} + +QScrollBar::handle { + background: #8bd0f0; + border-radius: 5px; +} + +QScrollBar::handle:horizontal { + min-width: 24px; +} + +QScrollBar::handle:vertical { + min-height: 24px; +} + +QScrollBar::handle:hover { + background-color: #84c2e6; +} + +QScrollBar::handle:pressed { + background-color: #699bb8; +} + +QScrollBar::add-line:vertical, +QScrollBar::sub-line:vertical, +QScrollBar::add-line:horizontal, +QScrollBar::sub-line:horizontal { + border: 0; + background: transparent; + width: 0px; + height: 0px; +} + +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:vertical, +QScrollBar::add-page:vertical { + background: transparent; +} + +/* ------------------------------------------------------------------------ */ +/* QScrollBar-Big */ + +QScrollBar.big:horizontal { + border: 0; + background: #232629; + height: 36px; +} + +QScrollBar.big:vertical { + border: 0; + background: #232629; + width: 36px; +} + +QScrollBar.big::handle, +QScrollBar.big::handle:vertical:hover, +QScrollBar.big::handle:horizontal:hover { + background: #84c2e6; +} + +QScrollBar.big::handle:horizontal { + min-width: 24px; +} + +QScrollBar.big::handle:vertical { + min-height: 24px; +} + +QScrollBar.big::add-line:vertical, +QScrollBar.big::sub-line:vertical, +QScrollBar.big::add-line:horizontal, +QScrollBar.big::sub-line:horizontal { + border: 0; + background: transparent; + width: 0px; + height: 0px; +} + +/* ------------------------------------------------------------------------ */ +/* QSlider */ +QSlider { + min-height: 20px; + min-width: 20px; +} + +QSlider:horizontal { + min-height: 30px; + min-width: 30px; +} + +QSlider:vertical { +} + +QSlider::groove:horizontal { + border: 1px solid #262626; + height: 4px; + background: #0f1417; + margin: 0; +} + +QSlider::groove:vertical { + width: 4px; + background: #0f1417; + margin: 12px 0; +} + +QSlider::handle:horizontal { + width: 22px; + height: 18px; + margin: -9px -9px; +} + +QSlider::handle:vertical { + background: #84c2e6; + width: 9px; + height: 9px; + min-height: 0px; + margin: -9px -18px; +} + +QSlider::add-page { + background: #5e5e5e; +} + +QSlider::sub-page { + background: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QLabel */ + +QLabel { + border: none; + background: transparent; + color: #ffffff; +} + +QLabel:disabled { + color: rgba(255, 255, 255, 0.2); +} + +/* ------------------------------------------------------------------------ */ +/* VLines and HLinex */ + +QFrame[frameShape="4"] { + border-width: 1px 0 0 0; + background: none; +} + +QFrame[frameShape="5"] { + border-width: 0 1px 0 0; + background: none; +} + +QFrame[frameShape="4"], +QFrame[frameShape="5"] { + border-color: #0f1417; +} + +/* ------------------------------------------------------------------------ */ +/* QToolBar */ + +QToolBar { + background: #0f1417; + border: 0px solid; +} + +QToolBar:horizontal { + /* border-bottom: 1px solid rgba(132, 194, 230, 0.7); */ + border-top: 1px solid rgba(132, 194, 230, 0.7); +} + +QToolBar:vertical { + border-right: 1px solid rgba(132, 194, 230, 0.7); + border-left: 1px solid rgba(132, 194, 230, 0.7); +} + +QToolBar::handle:horizontal { + image: url("/icons_path/primary/toolbar-handle-horizontal.svg"); +} + +QToolBar::handle:vertical { + image: url("/icons_path/primary/toolbar-handle-vertical.svg"); +} + +QToolBar::separator:horizontal { + border-top: 1px solid rgba(132, 194, 230, 0.7); + border-bottom: 1px solid rgba(132, 194, 230, 0.7); + width: 1px; +} + +QToolBar::separator:vertical { + border-top: 1px solid rgba(132, 194, 230, 0.7); + border-bottom: 1px solid rgba(132, 194, 230, 0.7); + height: 1px; +} + +/* ------------------------------------------------------------------------ */ +/* QToolButton */ + +QToolButton { + background: #171c1f; + border: 0px; + margin: 2px; + padding: 2px; + border-radius: 15px; + color: #8bd0f0; +} + +QToolButton:hover { + background: #262931; +} + +QToolButton:pressed { + background: #2d303a; +} + +QToolButton:checked { + background: #2d303a; + border: 1px solid #8bd0f0; +} + +/* ------------------------------------------------------------------------ */ +/* General viewers */ + +QTableView { + background-color: #0f1417; + border: 1px solid #232629; + border-radius: 4px; +} + +QTreeView, +QListView { + margin: 0px; + border: 0px; +} + +QTableView::item, +QTreeView::item, +QListView::item { + padding: 2px; + min-height: 12px; + color: #ffffff; + border-color: transparent; +} + +QListView::item { + margin-left: 0px; + margin-right: 2px; + background-color: #1b2023; +} + +/* ------------------------------------------------------------------------ */ +/* Items Selection */ + +QTableView::item:selected, +QTreeView::item:selected, +QListView::item:selected { + background-color: #303538; + color: #ffffff; +} + +QTableView::item:selected:focus, +QTreeView::item:selected:focus, +QListView::item:selected:focus { + color: #ffffff; +} + +QTableView::item:disabled { + color: #bdbdbd; + background-color: #303538; +} + +/* ------------------------------------------------------------------------ */ +/* QTreeView */ + +QTreeView::branch { + background-color: transparent; +} + +QTreeView::branch:hover { + background-color: transparent; +} + +QTreeView::branch:selected { + background-color: #303538; +} + +QTreeView::branch:closed:has-children:has-siblings, +QTreeView::branch:closed:has-children:!has-siblings { + image: url("/icons_path/primary/branch-closed.svg"); + margin-left: -8px; +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings { + image: url("/icons_path/primary/branch-open.svg"); + margin-left: -8px; +} + +/* Commented in case decided to show the branch icons */ +/* +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url("/icons_path/disabled/vline.svg"); +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url("/icons_path/disabled/branch-more.svg"); +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item, +QTreeView::branch:has-children:!has-siblings:adjoins-item { + border-image: url("/icons_path/disabled/branch-end.svg"); +} */ + +QTreeView QHeaderView::section { + border: none; +} + +/* QTableView */ + +QTableCornerButton::section { + background-color: #0f1417; + border-radius: 0px; + border-right: 1px solid; + border-bottom: 1px solid; + border-color: #31363b; +} + +QHeaderView { + border: none; +} + +QHeaderView::section { + color: rgba(255, 255, 255, 0.7); + text-transform: capitalize; + background-color: #0f1417; + padding: 4px 6px; + border-radius: 0px; + border-right: 1px solid; + border-bottom: 1px solid; + border-color: #31363b; +} + +QHeaderView::section:vertical { +} + +QHeaderView::section:horizontal { +} + +/* ------------------------------------------------------------------------ */ +/* QLCDNumber */ + +QLCDNumber { + color: #84c2e6; + background-color: #699bb8; + border: 1px solid rgba(132, 194, 230, 0.3); + border-radius: 4px; +} + +/* ------------------------------------------------------------------------ */ +/* QCalendarWidget */ + +QCalendarWidget { + min-height: 300px; +} + +#qt_calendar_prevmonth { + qproperty-icon: url("/icons_path/primary/leftarrow.svg"); +} + +#qt_calendar_nextmonth { + qproperty-icon: url("/icons_path/primary/rightarrow.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* Inline QLineEdit */ + +QTreeView QLineEdit, +QTableView QLineEdit, +QListView QLineEdit { + color: #ffffff; + background-color: #0f1417; + /* border: 1px solid unset; */ + border-radius: unset; + padding: unset; + padding-left: unset; + height: unset; + border-width: unset; + border-top-left-radius: unset; + border-top-right-radius: unset; +} + +/* ------------------------------------------------------------------------ */ +/* QToolTip */ + +QToolTip { + padding: 4px; + border: 1px solid #31363b; + border-radius: 4px; + color: #ffffff; + background-color: #0f1417; +} + +/* ------------------------------------------------------------------------ */ +/* QDialog */ + +/* linux */ +QDialog QToolButton, +QDialog QToolButton:hover, +QDialog QToolButton:pressed, +QDialog QToolButton:checked { + border: 0px; + height: unset; + margin: unset; + padding: unset; + border-right: unset; + border-left: unset; + background-color: #84c2e6; + color: #ffffff; + border-radius: 8px; +} + +QDialog QToolButton:disabled { + background-color: #0f1417; + color: #ffffff; +} + +/* ------------------------------------------------------------------------ */ +/* Grips */ + +QMainWindow::separator:vertical, +QSplitter::handle:horizontal { + image: url("/icons_path/primary/splitter-vertical.svg"); + background-color: rgba(255, 255, 255, 0.03); + width: 15px; +} + +QMainWindow::separator:horizontal, +QSplitter::handle:vertical { + image: url("/icons_path/primary/splitter-horizontal.svg"); + background-color: rgba(255, 255, 255, 0.03); + height: 15px; +} + +QSizeGrip { + image: url("/icons_path/primary/sizegrip.svg"); + background-color: transparent; +} + +QMenuBar QToolButton:hover, +QMenuBar QToolButton:pressed, +QMenuBar QToolButton { + border-width: 0; + border-image: url("/icons_path/primary/rightarrow.svg"); + background-color: transparent; +} + +/* ------------------------------------------------------------------------ */ +/* Focus */ + +QDateTimeEdit:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QComboBox:focus { + color: #fff; + border-bottom: 2px solid #8bd0f0; + background-color: #303538; +} + + +QDateTimeEdit::up-button:focus, +QDoubleSpinBox::up-button:focus, +QSpinBox::up-button:focus { + image: url("/icons_path/primary/uparrow.svg"); +} + +QDateTimeEdit::down-button:focus, +QDoubleSpinBox::down-button:focus, +QSpinBox::down-button:focus { + image: url("/icons_path/primary/downarrow.svg"); +} + +/* Special cases from rviz source code */ + +QToolButton[toolTip="Add a new tool"] { + qproperty-iconSize: 16px 16px; + qproperty-icon: url("/icons_path/primary/add.svg"); + background: #171c1f; + border: 0px; + margin: 2px; + padding: 0px; + border-radius: 12px; + width: 24px; + height: 24px; +} + +QToolButton[toolTip="Add a new tool"]:hover { + background: #262931; +} + +QToolButton[toolTip="Add a new tool"]:pressed { + background: #2d303a; +} + +QToolButton[toolTip="Remove a tool from the toolbar"] { + qproperty-iconSize: 16px 16px; + qproperty-icon: url("/icons_path/primary/minus.svg"); + background: #171c1f; + border: 0px; + margin: 2px; + padding: 0px; + border-radius: 12px; + width: 24px; + height: 24px; +} + +QToolButton[toolTip="Remove a tool from the toolbar"]:hover { + background: #262931; +} + +QToolButton[toolTip="Remove a tool from the toolbar"]:pressed { + background: #2d303a; +} + +QDialog { + background-color: #1b2023; +} + +QGroupBox[title="Tool Type"] > QTextBrowser { + background-color: #1b2023; +} + +QGroupBox[title="Tool Type"] { + background-color: #1b2023; +} +QGroupBox[title="Tool Type"] > QTreeView { + background-color: #1b2023; +} + +QGroupBox[title="Panel Name"] { + background-color: #1b2023; +} + +QGroupBox[title="Panel Name"] > QLineEdit { + background-color: #1b2023; +} + +QGroupBox[title="Panel Type"] > QTextBrowser { + background-color: #1b2023; +} + +QGroupBox[title="Panel Type"] { + background-color: #1b2023; +} +QGroupBox[title="Panel Type"] > QTreeView { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] > QTextBrowser { + background-color: #1b2023; +} +QGroupBox[title="Display Name"] { + background-color: #1b2023; +} + +QGroupBox[title="Display Name"] > QLineEdit { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] > QTabWidget { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] QTabWidget QTreeWidget { + background-color: #1b2023; + color: white; +} +QGroupBox[title="Create visualization"] QCheckBox { + background-color: #1b2023; + color: white; +} + +QGroupBox[title="Create visualization"] QTabWidget::pane { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] QTabBar::tab { + background-color: #1b2023; + color: white; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:selected { + background-color: #383b3f; + border-bottom: 2px solid #8bd0f0; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:!selected { + background-color: #1b2023; + border-bottom: 2px solid #1b2023; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:hover { + color: #fff; + background-color: #292d30; + border-bottom: 2px solid #8bd0f0; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:pressed { + color: #fff; + background-color: #383b3f; + border-bottom: 2px solid #8bd0f0; +} + +QGroupBox[title="Create visualization"] QFrame { + background-color: #1b2023; + border: none; + margin: 0px; + padding: 0px; +} + +QComboBox { + padding: 2px; + margin: 0px; +} + +/* QLineEdit */ +QLineEdit { + border-top-left-radius: 0px; + border-top-right-radius: 0px; + selection-background-color: #84c2e6; + +} + +QLineEdit > QPushButton { + qproperty-icon: url("/icons_path/primary/more.svg"); + qproperty-iconSize: 16px 16px; + qproperty-text: ""; + margin: 0px; + padding: 0px; + background: transparent; + border-radius: 0px; +} + +QLineEdit > QPushButton:hover { + background: transparent; + border-radius: 0px; +} + +/* Not entirely sure if this affects anything other than the close button */ +QDockWidget QToolButton { + qproperty-icon: url("/icons_path/primary/close.svg"); + qproperty-iconSize: 16px 16px; + background: transparent; +} + +QDockWidget QToolButton:hover { + background: #262931; +} + +/* Style the list view of the QComboBox */ +QComboBox QAbstractItemView { + background-color: #1b2023; + height: 16px; +} +QComboBox { + selection-background-color: #303538; + selection-color: #fff; +} + + +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:checked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:checked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:checked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:checked, +QTreeView::indicator:enabled:checked, +QTreeView::indicator:enabled:checked:selected, +QTreeView::indicator:enabled:checked:focus, +QTreeView::indicator:checked { + image: url("/icons_path/primary/checkbox_checked_enabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:checked:selected:active, +QTreeView::indicator:checked:selected:active { + image: url("/icons_path/primary/checkbox_checked_hovered.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:checked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:checked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:checked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:checked:disabled, +QTreeView::indicator:disabled:checked, +QTreeView::indicator:disabled:checked:selected, +QTreeView::indicator:disabled:checked:focus, +QTreeView::indicator:checked:disabled { + image: url("/icons_path/primary/checkbox_checked_disabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:unchecked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:unchecked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:unchecked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:unchecked, +QTreeView::indicator:enabled:unchecked, +QTreeView::indicator:enabled:unchecked:selected, +QTreeView::indicator:enabled:unchecked:focus, +QTreeView::indicator:unchecked { + image: url("/icons_path/primary/checkbox_unchecked_enabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:unchecked:selected:active, +QTreeView::indicator:unchecked:selected:active { + image: url("/icons_path/primary/checkbox_unchecked_hovered.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:unchecked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:unchecked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:unchecked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:unchecked:disabled, +QTreeView::indicator:disabled:unchecked, +QTreeView::indicator:disabled:unchecked:selected, +QTreeView::indicator:disabled:unchecked:focus, +QTreeView::indicator:unchecked:disabled { + image: url("/icons_path/primary/checkbox_unchecked_disabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:indeterminate, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:indeterminate:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:indeterminate:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:indeterminate, +QTreeView::indicator:enabled:indeterminate, +QTreeView::indicator:enabled:indeterminate:selected, +QTreeView::indicator:enabled:indeterminate:focus, +QTreeView::indicator:indeterminate { + image: url("/icons_path/primary/checkbox_indeterminate_enabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:indeterminate:selected:active, +QTreeView::indicator:indeterminate:selected:active { + image: url("/icons_path/primary/checkbox_indeterminate_hovered.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:indeterminate, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:indeterminate:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:indeterminate:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:indeterminate:disabled, +QTreeView::indicator:disabled:indeterminate, +QTreeView::indicator:disabled:indeterminate:selected, +QTreeView::indicator:disabled:indeterminate:focus, +QTreeView::indicator:indeterminate:disabled { + image: url("/icons_path/primary/checkbox_indeterminate_disabled.svg"); +} +QGroupBox[title="Create visualization"] QCheckBox::indicator, +QTreeView::indicator { + width: 20px; + height: 20px; +} + + +QTreeView::item:disabled { + color: #888888; +} + + +QTreeView QComboBox, +QTreeView QSpinBox, +QTreeView QDoubleSpinBox { + border: 0px; +} + +QTreeView QComboBox:focus, +QTreeView QSpinBox:focus, +QTreeView QDoubleSpinBox:focus { + border: 0px; +} diff --git a/ansible/roles/qt5ct_setup/files/qt5ct.conf b/ansible/roles/qt5ct_setup/files/qt5ct.conf new file mode 100644 index 00000000000..90c386c617f --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/qt5ct.conf @@ -0,0 +1,35 @@ +[Appearance] +color_scheme_path=/usr/share/qt5ct/colors/darker.conf +custom_palette=true +icon_theme=ubuntu-mono-dark +standard_dialogs=default +style=Fusion + +[Fonts] +fixed=@Variant(\0\0\0@\0\0\0\f\0R\0o\0\x62\0o\0t\0o\xbf\xf0\0\0\0\0\0\0\0\0\0\r\x5\x1\0\x32\x10) +general=@Variant(\0\0\0@\0\0\0\f\0R\0o\0\x62\0o\0t\0o\xbf\xf0\0\0\0\0\0\0\0\0\0\r\x5\x1\0\x32\x10) + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=3 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=autoware_stylesheet_path +toolbutton_style=0 +underline_shortcut=1 +wheel_scroll_lines=3 + +[QSSEditor] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\t\xde\0\0\x2~\0\0\f`\0\0\x4\x95\0\0\t\xde\0\0\x2\xa3\0\0\f`\0\0\x4\x95\0\0\0\0\0\0\0\0\n\0\0\0\t\xde\0\0\x2\xa3\0\0\f`\0\0\x4\x95) + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\f\x9c\0\0\x4\x19\0\0\xfz\0\0\a\x3\0\0\f\x9c\0\0\x4>\0\0\xfz\0\0\a\x3\0\0\0\0\0\0\0\0\xf\0\0\0\f\x9c\0\0\x4>\0\0\xfz\0\0\a\x3) + +[Troubleshooting] +force_raster_widgets=2 +ignored_applications=@Invalid() diff --git a/ansible/roles/qt5ct_setup/meta/main.yml b/ansible/roles/qt5ct_setup/meta/main.yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/qt5ct_setup/tasks/main.yml b/ansible/roles/qt5ct_setup/tasks/main.yml new file mode 100644 index 00000000000..fbb6c912117 --- /dev/null +++ b/ansible/roles/qt5ct_setup/tasks/main.yml @@ -0,0 +1,81 @@ +- name: Install qt5ct + ansible.builtin.apt: + name: qt5ct + state: present + become: true + +- name: Install rsync + ansible.builtin.package: + name: rsync + state: present + become: true + +- name: Remove qt5ct from auto-start + ansible.builtin.file: + path: /etc/X11/Xsession.d/99qt5ct + state: absent + become: true + +- name: Set variable qt5ct_config_dir + ansible.builtin.set_fact: + qt5ct_config_dir: "{{ ansible_env.HOME }}/.config/qt5ct" + +- name: Ensure qt5ct_config_dir exists + ansible.builtin.file: + path: "{{ qt5ct_config_dir }}" + state: directory + mode: "0755" + +- name: Print the role_path + ansible.builtin.debug: + msg: "The role_path is: {{ role_path }}" + +- name: Set icons_path variable + ansible.builtin.set_fact: + icons_path: "{{ qt5ct_config_dir }}/autoware-rviz-icons" + +- name: Remove autoware-rviz-icons folder if it exists + ansible.builtin.file: + path: "{{ icons_path }}" + state: absent + +# Replace rsync with synchronize which is an ansible wrapper for rsync +- name: Copy autoware-rviz-icons to the qt5ct config directory + ansible.posix.synchronize: + src: "{{ role_path }}/files/autoware-rviz-icons/" + dest: "{{ icons_path }}/" + mode: push + +- name: Fix the paths in the qss file + ansible.builtin.replace: + path: "{{ role_path }}/files/autoware.qss" + regexp: /icons_path/ + replace: "{{ icons_path }}/" + +- name: Ensure qt5ct_config_dir/qss exists + ansible.builtin.file: + path: "{{ qt5ct_config_dir }}/qss" + state: directory + mode: "0755" + +- name: Copy autoware.qss to the qt5ct qss directory + ansible.builtin.copy: + src: "{{ role_path }}/files/autoware.qss" + dest: "{{ qt5ct_config_dir }}/qss/autoware.qss" + force: true + backup: true + mode: "0644" + +- name: Fix the paths in the config file + ansible.builtin.replace: + path: "{{ role_path }}/files/qt5ct.conf" + regexp: autoware_stylesheet_path + replace: "{{ qt5ct_config_dir }}/qss/autoware.qss" + +- name: Copy qt5ct.conf to the config directory + ansible.builtin.copy: + src: "{{ role_path }}/files/qt5ct.conf" + dest: "{{ ansible_env.HOME }}/.config/qt5ct/qt5ct.conf" + force: true + backup: true + mode: "0644" From 0fb00f4ea44a94149c76c85c65338ee75859b0a8 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 20 Sep 2024 14:20:43 +0900 Subject: [PATCH 268/380] fix(.github): fix non `-cuda` tag names (#5262) fix no cuda tag names Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 40 +++++++++---------- .../docker-build-and-push-arm64.yaml | 2 +- .github/workflows/docker-build-and-push.yaml | 2 +- .github/workflows/health-check-arm64.yaml | 2 - .github/workflows/health-check.yaml | 2 - 5 files changed, 22 insertions(+), 26 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 6389b4d8ceb..23eec646837 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -78,8 +78,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=base${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=base${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=base$${{ inputs.tag-suffix }} + type=raw,value=base$${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-base flavor: | latest=false @@ -90,8 +90,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=core-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=core-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=core-devel${{ inputs.tag-suffix }} + type=raw,value=core-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-core-devel flavor: | latest=false @@ -102,8 +102,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }} + type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-sensing-perception-devel flavor: | latest=false @@ -114,8 +114,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-sensing-perception${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-sensing-perception${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }} + type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-sensing-perception flavor: | latest=false @@ -126,8 +126,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }} + type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-localization-mapping-devel flavor: | latest=false @@ -138,8 +138,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-localization-mapping${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-localization-mapping${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }} + type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-localization-mapping flavor: | latest=false @@ -150,8 +150,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }} + type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-planning-control-devel flavor: | latest=false @@ -162,8 +162,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-planning-control${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-planning-control${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-planning-control${{ inputs.tag-suffix }} + type=raw,value=universe-planning-control${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-planning-control flavor: | latest=false @@ -174,8 +174,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-devel${{ inputs.tag-suffix }} + type=raw,value=universe-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe-devel flavor: | latest=false @@ -186,8 +186,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe${{ inputs.tag-suffix }} + type=raw,value=universe${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} bake-target: docker-metadata-action-universe flavor: | latest=auto diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index 245eb563951..9a4dcc46950 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -31,7 +31,7 @@ jobs: platform: arm64 base_image_env: base_image lib_dir: aarch64 - additional-tag-suffix: cuda + additional-tag-suffix: -cuda steps: # https://github.com/actions/checkout/issues/211 - name: Change permission of workspace diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 1057b5d238a..46bb19c734c 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -31,7 +31,7 @@ jobs: platform: amd64 base_image_env: base_image lib_dir: x86_64 - additional-tag-suffix: cuda + additional-tag-suffix: -cuda steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/health-check-arm64.yaml b/.github/workflows/health-check-arm64.yaml index e1ee8813ca6..baf58b00d3b 100644 --- a/.github/workflows/health-check-arm64.yaml +++ b/.github/workflows/health-check-arm64.yaml @@ -24,12 +24,10 @@ jobs: base_image_env: base_image lib_dir: aarch64 setup-args: --no-nvidia - additional-tag-suffix: "" - name: cuda platform: arm64 base_image_env: base_image lib_dir: aarch64 - additional-tag-suffix: -cuda steps: # https://github.com/actions/checkout/issues/211 - name: Change permission of workspace diff --git a/.github/workflows/health-check.yaml b/.github/workflows/health-check.yaml index bed2d8f51a6..a312cb970ec 100644 --- a/.github/workflows/health-check.yaml +++ b/.github/workflows/health-check.yaml @@ -39,12 +39,10 @@ jobs: base_image_env: base_image lib_dir: x86_64 setup-args: --no-nvidia - additional-tag-suffix: "" - name: cuda platform: amd64 base_image_env: base_image lib_dir: x86_64 - additional-tag-suffix: -cuda steps: - name: Check out repository uses: actions/checkout@v4 From f9a73804404efae08fa317621bce76b3848c6775 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 20 Sep 2024 17:14:56 +0900 Subject: [PATCH 269/380] fix(docker): copy all `.csv` and `.png` files to images (#5263) copy all .csv and .png files to images Signed-off-by: Yutaka Kondo --- .dockerignore | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.dockerignore b/.dockerignore index 5d2f070ee05..ac26bde50a1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -13,14 +13,10 @@ docker # Ignore a part of files under src src/**/.* src/**/*.asc -src/**/*.csv src/**/*.gif src/**/*.md src/**/*.pcd -src/**/*.png src/**/*.svg -!src/universe/autoware.universe/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/assets -!src/universe/autoware.universe/vehicle/autoware_raw_vehicle_cmd_converter/data/default # Ignore generated files by colcon build From 886409979b78019e75185a0b57e11cb1b449942b Mon Sep 17 00:00:00 2001 From: Khalil Selyan <36904941+KhalilSelyan@users.noreply.github.com> Date: Fri, 20 Sep 2024 16:21:53 +0300 Subject: [PATCH 270/380] refactor(qt5ct): update selection colors in autoware.qss (#5266) Signed-off-by: KhalilSelyan --- ansible/roles/qt5ct_setup/files/autoware.qss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/qt5ct_setup/files/autoware.qss b/ansible/roles/qt5ct_setup/files/autoware.qss index d0e2af381f7..3bd40b42527 100644 --- a/ansible/roles/qt5ct_setup/files/autoware.qss +++ b/ansible/roles/qt5ct_setup/files/autoware.qss @@ -1282,8 +1282,8 @@ QComboBox QAbstractItemView { height: 16px; } QComboBox { - selection-background-color: #303538; - selection-color: #fff; + selection-background-color: #84c2e6; + selection-color: #1b2023; } From d0536ca3dcaaaefa9aee4531d6c07f3ea5279570 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Sat, 21 Sep 2024 10:33:31 +0300 Subject: [PATCH 271/380] fix(docker): add platform tag and increase frequency of multi-arch manifest workflow (#5256) add platform to the tag and increase frequency of multi-arch manifest workflow Signed-off-by: Oguz Ozturk --- .../actions/docker-build-and-push/action.yaml | 40 +++++++++---------- .../docker-build-and-push-arm64.yaml | 7 ++-- .github/workflows/docker-build-and-push.yaml | 6 +-- .github/workflows/update-docker-manifest.yaml | 2 +- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 23eec646837..903ef8de109 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -78,8 +78,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=base$${{ inputs.tag-suffix }} - type=raw,value=base$${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=base${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=base${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-base flavor: | latest=false @@ -90,8 +90,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=core-devel${{ inputs.tag-suffix }} - type=raw,value=core-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=core-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=core-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-core-devel flavor: | latest=false @@ -102,8 +102,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }} - type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception-devel flavor: | latest=false @@ -114,8 +114,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }} - type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception flavor: | latest=false @@ -126,8 +126,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }} - type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-localization-mapping-devel flavor: | latest=false @@ -138,8 +138,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }} - type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-localization-mapping flavor: | latest=false @@ -150,8 +150,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }} - type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-planning-control-devel flavor: | latest=false @@ -162,8 +162,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-planning-control${{ inputs.tag-suffix }} - type=raw,value=universe-planning-control${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-planning-control${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-planning-control${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-planning-control flavor: | latest=false @@ -174,8 +174,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-devel${{ inputs.tag-suffix }} - type=raw,value=universe-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-devel flavor: | latest=false @@ -186,8 +186,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe${{ inputs.tag-suffix }} - type=raw,value=universe${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe flavor: | latest=auto diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index 9a4dcc46950..c262f0944a1 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -26,12 +26,12 @@ jobs: base_image_env: base_image lib_dir: aarch64 setup-args: --no-nvidia - additional-tag-suffix: "" + tag-suffix: "" - name: cuda platform: arm64 base_image_env: base_image lib_dir: aarch64 - additional-tag-suffix: -cuda + tag-suffix: -cuda steps: # https://github.com/actions/checkout/issues/211 - name: Change permission of workspace @@ -80,8 +80,7 @@ jobs: *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }}-${{ matrix.platform }} - tag-prefix: ${{ needs.load-env.outputs.rosdistro }} + tag-suffix: ${{ matrix.tag-suffix }} - name: Show disk space run: | diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 46bb19c734c..025d6e7485c 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -26,12 +26,12 @@ jobs: base_image_env: base_image lib_dir: x86_64 setup-args: --no-nvidia - additional-tag-suffix: "" + tag-suffix: "" - name: cuda platform: amd64 base_image_env: base_image lib_dir: x86_64 - additional-tag-suffix: -cuda + tag-suffix: -cuda steps: - name: Check out repository uses: actions/checkout@v4 @@ -75,7 +75,7 @@ jobs: *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max - tag-suffix: ${{ matrix.additional-tag-suffix }} + tag-suffix: ${{ matrix.tag-suffix }} - name: Show disk space run: | diff --git a/.github/workflows/update-docker-manifest.yaml b/.github/workflows/update-docker-manifest.yaml index a0539b037ed..af9324fb162 100644 --- a/.github/workflows/update-docker-manifest.yaml +++ b/.github/workflows/update-docker-manifest.yaml @@ -2,7 +2,7 @@ name: update-docker-manifest on: schedule: - - cron: 0 0 * * * + - cron: 0 */2 * * * workflow_dispatch: jobs: From 7306fa6e36cf9e53ffba8f3de1dd3baf254a7df1 Mon Sep 17 00:00:00 2001 From: Max Schmeller <6088931+mojomex@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:47:51 +0900 Subject: [PATCH 272/380] chore: freeze Nebula version to v0.0.1 (#5271) Signed-off-by: Max SCHMELLER --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index a61cd39ba5f..e232225fdde 100644 --- a/autoware.repos +++ b/autoware.repos @@ -100,7 +100,7 @@ repositories: sensor_component/external/nebula: type: git url: https://github.com/tier4/nebula.git - version: main + version: v0.0.1 # Fork of transport_drivers that enables reduction of copy operations sensor_component/transport_drivers: type: git From a53db3d9d3894a16478c80b3b7e91afe072826cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Wed, 25 Sep 2024 16:15:22 +0300 Subject: [PATCH 273/380] fix(autoware.repos): use main branch of ros2_socketcan (#5279) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index e232225fdde..2667ed83d70 100644 --- a/autoware.repos +++ b/autoware.repos @@ -110,7 +110,7 @@ repositories: sensor_component/ros2_socketcan: type: git url: https://github.com/autowarefoundation/ros2_socketcan - version: feat/continental_fd + version: main # sensor_kit sensor_kit/sample_sensor_kit_launch: type: git From f24de1e59f3c233b000ff12bc13f37be93174f55 Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Fri, 27 Sep 2024 12:33:46 +0300 Subject: [PATCH 274/380] feat(docker): add vehicle-system container (#5257) * add vehicle-system container Signed-off-by: Oguz Ozturk * add to bakefile and workflow Signed-off-by: Oguz Ozturk * style(pre-commit): autofix * add missing tag info Signed-off-by: Oguz Ozturk * update documentation Signed-off-by: Oguz Ozturk * add missing dependencies Signed-off-by: Oguz Ozturk * update svg Signed-off-by: Oguz Ozturk --------- Signed-off-by: Oguz Ozturk Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../actions/docker-build-and-push/action.yaml | 26 + docker/Dockerfile | 94 +++- docker/Dockerfile.svg | 500 ++++++++++-------- docker/README.md | 11 + docker/docker-bake.hcl | 16 + 5 files changed, 426 insertions(+), 221 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 903ef8de109..b7e6b393b1e 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -168,6 +168,30 @@ runs: flavor: | latest=false + - name: Docker meta for autoware:universe-vehicle-system-devel + id: meta-universe-vehicle-system-devel + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: | + type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + bake-target: docker-metadata-action-universe-vehicle-system-devel + flavor: | + latest=false + + - name: Docker meta for autoware:universe-vehicle-system + id: meta-universe-vehicle-system + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: | + type=raw,value=universe-vehicle-system${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} + type=raw,value=universe-vehicle-system${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + bake-target: docker-metadata-action-universe-vehicle-system + flavor: | + latest=false + - name: Docker meta for autoware:universe-devel id: meta-universe-devel uses: docker/metadata-action@v5 @@ -213,6 +237,8 @@ runs: ${{ steps.meta-universe-localization-mapping.outputs.bake-file }} ${{ steps.meta-universe-planning-control-devel.outputs.bake-file }} ${{ steps.meta-universe-planning-control.outputs.bake-file }} + ${{ steps.meta-universe-vehicle-system-devel.outputs.bake-file }} + ${{ steps.meta-universe-vehicle-system.outputs.bake-file }} ${{ steps.meta-universe-devel.outputs.bake-file }} ${{ steps.meta-universe.outputs.bake-file }} provenance: false diff --git a/docker/Dockerfile b/docker/Dockerfile index bc2917ca949..efde0797845 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -141,6 +141,29 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ > /rosdep-universe-planning-control-exec-depend-packages.txt \ && cat /rosdep-universe-planning-control-exec-depend-packages.txt +FROM rosdep-depend AS rosdep-universe-vehicle-system-depend +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO + +COPY src/universe/autoware.universe/vehicle /autoware/src/universe/autoware.universe/vehicle +COPY src/universe/autoware.universe/system /autoware/src/universe/autoware.universe/system +COPY src/universe/autoware.universe/map/autoware_map_height_fitter /autoware/src/universe/autoware.universe/map/autoware_map_height_fitter +COPY src/universe/autoware.universe/localization/autoware_pose2twist /autoware/src/universe/autoware.universe/localization/autoware_pose2twist +RUN rosdep keys --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-vehicle-system-depend-packages.txt \ + && cat /rosdep-universe-vehicle-system-depend-packages.txt +RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ + | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ + | grep -v '^#' \ + | sed 's/ \+/\n/g'\ + | sort \ + > /rosdep-universe-vehicle-system-exec-depend-packages.txt \ + && cat /rosdep-universe-vehicle-system-exec-depend-packages.txt + FROM rosdep-depend AS rosdep-universe-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -334,6 +357,40 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM universe-common-devel AS universe-vehicle-system-devel +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ENV CCACHE_DIR="/root/.ccache" + +# Install rosdep dependencies +COPY --from=rosdep-universe-vehicle-system-depend /rosdep-universe-vehicle-system-depend-packages.txt /tmp/rosdep-universe-vehicle-system-depend-packages.txt +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + apt-get update \ + && cat /tmp/rosdep-universe-vehicle-system-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 + +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-universe-vehicle-system-depend,source=/autoware/src/universe/autoware.universe/vehicle,target=/autoware/src/universe/autoware.universe/vehicle \ + --mount=type=bind,from=rosdep-universe-vehicle-system-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \ + --mount=type=bind,from=rosdep-universe-vehicle-system-depend,source=/autoware/src/universe/autoware.universe/map/autoware_map_height_fitter,target=/autoware/src/universe/autoware.universe/map/autoware_map_height_fitter \ + --mount=type=bind,from=rosdep-universe-vehicle-system-depend,source=/autoware/src/universe/autoware.universe/localization/autoware_pose2twist,target=/autoware/src/universe/autoware.universe/localization/autoware_pose2twist \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && colcon build --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ + --mixin release compile-commands ccache \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM universe-common-devel AS universe-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -350,6 +407,7 @@ RUN --mount=type=ssh \ COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware COPY --from=universe-localization-mapping-devel /opt/autoware /opt/autoware COPY --from=universe-planning-control-devel /opt/autoware /opt/autoware +COPY --from=universe-vehicle-system-devel /opt/autoware /opt/autoware # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ @@ -359,9 +417,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/evaluator,target=/autoware/src/universe/autoware.universe/evaluator \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/launch,target=/autoware/src/universe/autoware.universe/launch \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/simulator,target=/autoware/src/universe/autoware.universe/simulator \ - --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/system,target=/autoware/src/universe/autoware.universe/system \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/tools,target=/autoware/src/universe/autoware.universe/tools \ - --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/universe/autoware.universe/vehicle,target=/autoware/src/universe/autoware.universe/vehicle \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ @@ -480,6 +536,40 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM base AS universe-vehicle-system +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR +ARG SETUP_ARGS + +# Set up runtime environment and artifacts +COPY --from=rosdep-universe-vehicle-system-depend /rosdep-universe-vehicle-system-exec-depend-packages.txt /tmp/rosdep-universe-vehicle-system-exec-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 ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get update \ + && cat /tmp/rosdep-universe-vehicle-system-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ + && find / -name "*.o" -type f -delete \ + && find / -name "*.h" -type f -delete \ + && find / -name "*.hpp" -type f -delete \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + /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 --from=universe-vehicle-system-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"] + FROM base AS universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index a54e635be43..a8d5d4e1d37 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -1,352 +1,414 @@ - - - + + G - + cluster_legend - + key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  key2 -  -  -  +  +  +  key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + external_image_0 - -$BASE_IMAGE + +$BASE_IMAGE stage_0 - -base + +base external_image_0->stage_0 - - + + stage_1 - -rosdep-depend + +rosdep-depend external_image_0->stage_1 - - + + - + -stage_6 - -core-devel +stage_7 + +core-devel - + -stage_0->stage_6 - - +stage_0->stage_7 + + - + -stage_12 - -universe-sensing-perception +stage_14 + +universe-sensing-perception - + -stage_0->stage_12 - - - +stage_0->stage_14 + + + - + -stage_13 - -universe-localization-mapping +stage_15 + +universe-localization-mapping - + -stage_0->stage_13 - +stage_0->stage_15 + + - + -stage_14 - -universe-planning-control +stage_16 + +universe-planning-control - + -stage_0->stage_14 - - - +stage_0->stage_16 + + + + - + -stage_15 - -universe +stage_17 + +universe-vehicle-system - + -stage_0->stage_15 - - +stage_0->stage_17 + - - -stage_1->stage_6 - - + + +stage_18 + +universe + + + +stage_0->stage_18 + + + + + +stage_1->stage_7 + + - + stage_2 - -rosdep-universe-sensing-perception-depend + +rosdep-universe-sensing-perception-depend - + stage_1->stage_2 - - + + - + stage_3 - -rosdep-universe-localization-mapping-depend + +rosdep-universe-localization-mapping-depend - + stage_1->stage_3 - - + + - + stage_4 - -rosdep-universe-planning-control-depend + +rosdep-universe-planning-control-depend - + stage_1->stage_4 - - + + + - + stage_5 - -rosdep-universe-depend + +rosdep-universe-vehicle-system-depend - + stage_1->stage_5 - - - - - - -stage_7 - -universe-common-devel - - - -stage_1->stage_7 - - + + - - -stage_6->stage_7 - - + + +stage_6 + +rosdep-universe-depend - - -stage_2->stage_12 - - + + +stage_1->stage_6 + + + - + stage_8 - -universe-sensing-perception-devel + +universe-common-devel - - -stage_2->stage_8 - - + + +stage_1->stage_8 + + - - -stage_3->stage_13 - - - + + +stage_7->stage_8 + + + + + +stage_2->stage_14 + + - + stage_9 - -universe-localization-mapping-devel + +universe-sensing-perception-devel - - -stage_3->stage_9 - - + + +stage_2->stage_9 + + - - -stage_4->stage_14 - - + + +stage_3->stage_15 + + - + stage_10 - -universe-planning-control-devel + +universe-localization-mapping-devel - - -stage_4->stage_10 - - + + +stage_3->stage_10 + + - - -stage_5->stage_15 - - + + +stage_4->stage_16 + + - + stage_11 - -universe-devel + +universe-planning-control-devel - - -stage_5->stage_11 - - + + +stage_4->stage_11 + + - - -stage_7->stage_8 - - + + +stage_5->stage_17 + + + - - -stage_7->stage_9 - - + + +stage_12 + +universe-vehicle-system-devel - + + +stage_5->stage_12 + + + + -stage_7->stage_10 - - +stage_6->stage_18 + + - - -stage_7->stage_11 - - + + +stage_13 + +universe-devel - - -stage_8->stage_12 - - + + +stage_6->stage_13 + + - + -stage_8->stage_11 - - +stage_8->stage_9 + + - - -stage_9->stage_13 - - + + +stage_8->stage_10 + + - + -stage_9->stage_11 - - +stage_8->stage_11 + + - - -stage_10->stage_14 - - + + +stage_8->stage_12 + + - + -stage_10->stage_11 - - +stage_8->stage_13 + + - + -stage_11->stage_15 - - +stage_9->stage_14 + + + + + +stage_9->stage_13 + + + + + +stage_10->stage_15 + + + + + +stage_10->stage_13 + + + + + +stage_11->stage_16 + + + + + +stage_11->stage_13 + + + + + +stage_12->stage_17 + + + + + +stage_12->stage_13 + + + + + +stage_13->stage_18 + + diff --git a/docker/README.md b/docker/README.md index 3d600ccfe30..14c39306153 100644 --- a/docker/README.md +++ b/docker/README.md @@ -76,6 +76,17 @@ This stage installs the dependency packages based on `/rosdep-universe-planning- This stage is a Autoware Universe Planning/Control runtime container. It only includes the dependencies given by `/rosdep-universe-planning-control-exec-depend-packages.txt` and the binaries built in the `universe-planning-control-devel` stage. +### `universe-vehicle-system-devel` + +This stage installs the dependency packages based on `/rosdep-universe-vehicle-system-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. + +- `universe/autoware.universe/vehicle` +- `universe/autoware.universe/system` + +### `universe-vehicle-system` + +This stage is a Autoware Universe Vehicle/System runtime container. It only includes the dependencies given by `/rosdep-universe-vehicle-system-exec-depend-packages.txt` and the binaries built in the `universe-vehicle-system-devel` stage. + ### `universe-devel` This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the remaining packages of `autoware.repos`: diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index cc544f2409e..35d0f7fdbfc 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -8,6 +8,8 @@ group "default" { "universe-localization-mapping", "universe-planning-control-devel", "universe-planning-control", + "universe-vehicle-system-devel", + "universe-vehicle-system", "universe-devel", "universe" ] @@ -22,6 +24,8 @@ target "docker-metadata-action-universe-localization-mapping-devel" {} target "docker-metadata-action-universe-localization-mapping" {} target "docker-metadata-action-universe-planning-control-devel" {} target "docker-metadata-action-universe-planning-control" {} +target "docker-metadata-action-universe-vehicle-system-devel" {} +target "docker-metadata-action-universe-vehicle-system" {} target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-universe" {} @@ -73,6 +77,18 @@ target "universe-planning-control" { target = "universe-planning-control" } +target "universe-vehicle-system-devel" { + inherits = ["docker-metadata-action-universe-vehicle-system-devel"] + dockerfile = "docker/Dockerfile" + target = "universe-vehicle-system-devel" +} + +target "universe-vehicle-system" { + inherits = ["docker-metadata-action-universe-vehicle-system"] + dockerfile = "docker/Dockerfile" + target = "universe-vehicle-system" +} + target "universe-devel" { inherits = ["docker-metadata-action-universe-devel"] dockerfile = "docker/Dockerfile" From f0314f1b42602da1fac926226712117749e922ca Mon Sep 17 00:00:00 2001 From: Max Schmeller <6088931+mojomex@users.noreply.github.com> Date: Thu, 3 Oct 2024 20:18:55 +0900 Subject: [PATCH 275/380] chore!: upgrade to Nebula v0.2.1 (#5275) Signed-off-by: Max SCHMELLER --- autoware.repos | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoware.repos b/autoware.repos index 2667ed83d70..2adedbe524b 100644 --- a/autoware.repos +++ b/autoware.repos @@ -100,12 +100,12 @@ repositories: sensor_component/external/nebula: type: git url: https://github.com/tier4/nebula.git - version: v0.0.1 + version: v0.2.1 # Fork of transport_drivers that enables reduction of copy operations sensor_component/transport_drivers: type: git url: https://github.com/autowarefoundation/transport_drivers - version: mutable-buffer-in-udp-callback + version: main # Continental compatible version of ROS 2 socket CAN sensor_component/ros2_socketcan: type: git From 1c82af012de1d0b71d29241b74115168778ec79d Mon Sep 17 00:00:00 2001 From: Junya Sasaki Date: Fri, 4 Oct 2024 13:42:09 +0900 Subject: [PATCH 276/380] feat(create-prs-to-update-vcs-repositories): add a workflow (#5295) --- ...create-prs-to-update-vcs-repositories.yaml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/create-prs-to-update-vcs-repositories.yaml diff --git a/.github/workflows/create-prs-to-update-vcs-repositories.yaml b/.github/workflows/create-prs-to-update-vcs-repositories.yaml new file mode 100644 index 00000000000..8eca0a8fb9b --- /dev/null +++ b/.github/workflows/create-prs-to-update-vcs-repositories.yaml @@ -0,0 +1,31 @@ +name: create-prs-to-update-vcs-repositories + +on: + schedule: + - cron: 0 0,6,12,18 * * * + workflow_dispatch: + +jobs: + create-version-update-pr: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Generate GitHub App token + id: generate-token + uses: tibdex/github-app-token@v2 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.PRIVATE_KEY }} + + - name: Create PRs to update VCS repositories + uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 + with: + token: ${{ steps.generate-token.outputs.token }} + repo_name: autowarefoundation/autoware + parent_dir: . + targets: major minor patch + base_branch: main + new_branch_prefix: feat/update- + autoware_repos_file_name: autoware.repos + verbosity: 0 From 6812e5ee6a3309f41a64869a021b0e05833dfd1b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 4 Oct 2024 14:19:38 +0900 Subject: [PATCH 277/380] docs(docker): description of how to use the development and runtime containers (#5301) * add dev container readme Signed-off-by: Yutaka Kondo * add description Signed-off-by: Yutaka Kondo * update Signed-off-by: Yutaka Kondo * add runtime description Signed-off-by: Yutaka Kondo * style(pre-commit): autofix --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docker/README.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/docker/README.md b/docker/README.md index 14c39306153..2dc13c925bf 100644 --- a/docker/README.md +++ b/docker/README.md @@ -4,6 +4,68 @@ Detailed instructions on how to use the containers can be found in the [Open AD Kit documentation](https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/docker-installation/). +## Development containers + +When using Open AD Kit as a development container, it is easy to use Autoware's all-in-one development container image, `ghcr.io/autowarefoundation/autoware:universe-devel-cuda`. +If you do not need the CUDA drivers, you can also use the smaller image `ghcr.io/autowarefoundation/autoware:universe-devel`. + +```shell +$ git clone git@github.com:autowarefoundation/autoware.git +$ cd autoware +$ vcs import src < autoware.repos +$ docker run -it --rm \ + –v $PWD/src/universe/autoware.universe/XXX/autoware_YYY:/autoware/src/autoware_YYY \ + ghcr.io/autowarefoundation/autoware:universe-devel-cuda +$ colcon build --mixin debug compile-commands +$ source install/setup.bash +$ ros2 run --prefix "gdb -ex run --args" autoware_YYY ZZZ +``` + +For example, if you want to make modifications to [`autoware.universe/perception/autoware_bytetrack`](https://github.com/autowarefoundation/autoware.universe/tree/main/perception/autoware_bytetrack), you can execute the following commands to perform the volume mount and debug build and execution of only the `autoware_bytetrack`. + +Note that `gdb` is not currently installed in the development containers, but it would be installed in the near future. + +```shell +$ docker run -it --rm \ + -v $PWD/src/universe/autoware.universe/perception/autoware_bytetrack:/autoware/src/autoware_bytetrack \ + ghcr.io/autowarefoundation/autoware:universe-devel-cuda +$ root@a566e785c4d2:/autoware# colcon build --mixin debug compile-commands +Starting >>> autoware_bytetrack +[Processing: autoware_bytetrack] +Finished <<< autoware_bytetrack [37.9s] + +Summary: 1 package finished [38.1s] +$ root@a566e785c4d2:/autoware# source install/setup.bash +$ root@a566e785c4d2:/autoware# apt update && apt install gdb +$ root@a566e785c4d2:/autoware# ros2 run --prefix "gdb -ex run --args" autoware_bytetrack bytetrack_node_exe +GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1 +... +[Thread debugging using libthread_db enabled] +... +[New Thread 0x7ff6f3fff640 (LWP 1205)] +Init ByteTrack! +``` + +## Runtime containers + +In the execution container, there is the all-in-one runtime container for Autoware, `ghcr.io/autowarefoundation/autoware:universe-cuda`, and the multi-containerized `ghcr.io/autowarefoundation/autoware:universe-***-cuda` for each component of Autoware Universe. + +The all-in-one execution container also has the autoware_launch package installed, allowing it to be started in the same way as a locally built Autoware. + +```shell +git clone git@github.com:autowarefoundation/autoware.git +cd autoware +docker run -it --rm ghcr.io/autowarefoundation/autoware:universe-cuda +ros2 launch autoware_launch planning_simulator.launch.xml map_path:=... +``` + +For example, if you want to run the runtime container that only includes the `sensing/perception` components, you can execute it as follows. + +```shell +docker run -it --rm ghcr.io/autowarefoundation/autoware:universe-sensing-perception-cuda +ros2 launch autoware_pointcloud_preprocessor preprocessor.launch.xml +``` + ## Multi-stage Dockerfile structure ![](./Dockerfile.svg) From f4ef99d1053f87234ce5028de7659e02bbdbe1df Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 05:34:47 +0000 Subject: [PATCH 278/380] feat(autoware.repos): minor update autowarefoundation/autoware_msgs to 1.2.0 (#5304) Signed-off-by: github-actions Co-authored-by: github-actions --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 2adedbe524b..bd3b94c0240 100644 --- a/autoware.repos +++ b/autoware.repos @@ -3,7 +3,7 @@ repositories: core/autoware_msgs: type: git url: https://github.com/autowarefoundation/autoware_msgs.git - version: 1.1.0 + version: 1.2.0 core/autoware_adapi_msgs: type: git url: https://github.com/autowarefoundation/autoware_adapi_msgs.git From 783be1762ff1ba83a89529f06f66818bd1f8f359 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 10 Oct 2024 11:41:12 +0900 Subject: [PATCH 279/380] fix(.github): change `runs-on` value from `ubuntu-latest` to `ubuntu-22.04` (#5320) change to ubuntu-22.04 Signed-off-by: Yutaka Kondo --- .github/workflows/backport.yaml | 2 +- .github/workflows/cancel-previous-workflows.yaml | 2 +- .github/workflows/create-prs-to-update-vcs-repositories.yaml | 2 +- .github/workflows/dco.yaml | 2 +- .github/workflows/docker-build-and-push.yaml | 2 +- .github/workflows/github-release.yaml | 2 +- .github/workflows/health-check.yaml | 2 +- .github/workflows/load-env.yaml | 2 +- .github/workflows/mirror-main-branch.yaml | 2 +- .github/workflows/pre-commit-ansible-autoupdate.yaml | 2 +- .github/workflows/pre-commit-ansible.yaml | 2 +- .github/workflows/pre-commit-autoupdate.yaml | 2 +- .github/workflows/pre-commit-optional-autoupdate.yaml | 2 +- .github/workflows/pre-commit-optional.yaml | 2 +- .github/workflows/pre-commit.yaml | 2 +- .github/workflows/setup-docker.yaml | 2 +- .github/workflows/setup-universe.yaml | 2 +- .github/workflows/spell-check-differential.yaml | 2 +- .github/workflows/sync-files.yaml | 2 +- .github/workflows/update-docker-manifest.yaml | 2 +- .github/workflows/update-tool-versions.yaml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/workflows/backport.yaml b/.github/workflows/backport.yaml index d79e7098883..53e4e96cfaa 100644 --- a/.github/workflows/backport.yaml +++ b/.github/workflows/backport.yaml @@ -7,7 +7,7 @@ on: jobs: backport: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 # Only react to merged PRs for security reasons. # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target. if: > diff --git a/.github/workflows/cancel-previous-workflows.yaml b/.github/workflows/cancel-previous-workflows.yaml index 44983f7dead..bd2463d5a8e 100644 --- a/.github/workflows/cancel-previous-workflows.yaml +++ b/.github/workflows/cancel-previous-workflows.yaml @@ -5,7 +5,7 @@ on: jobs: cancel-previous-workflows: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Cancel previous runs uses: styfle/cancel-workflow-action@0.12.1 diff --git a/.github/workflows/create-prs-to-update-vcs-repositories.yaml b/.github/workflows/create-prs-to-update-vcs-repositories.yaml index 8eca0a8fb9b..adb5628e28a 100644 --- a/.github/workflows/create-prs-to-update-vcs-repositories.yaml +++ b/.github/workflows/create-prs-to-update-vcs-repositories.yaml @@ -7,7 +7,7 @@ on: jobs: create-version-update-pr: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/dco.yaml b/.github/workflows/dco.yaml index db7ace467c6..e95b394ac63 100644 --- a/.github/workflows/dco.yaml +++ b/.github/workflows/dco.yaml @@ -4,7 +4,7 @@ on: pull_request: jobs: dco: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 025d6e7485c..a321bfe5ddc 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -13,7 +13,7 @@ jobs: docker-build-and-push: needs: load-env - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: diff --git a/.github/workflows/github-release.yaml b/.github/workflows/github-release.yaml index b426d0cba66..4b1d7f47c6c 100644 --- a/.github/workflows/github-release.yaml +++ b/.github/workflows/github-release.yaml @@ -15,7 +15,7 @@ on: jobs: github-release: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Set tag name id: set-tag-name diff --git a/.github/workflows/health-check.yaml b/.github/workflows/health-check.yaml index a312cb970ec..80163069c68 100644 --- a/.github/workflows/health-check.yaml +++ b/.github/workflows/health-check.yaml @@ -26,7 +26,7 @@ jobs: docker-build: needs: load-env - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: diff --git a/.github/workflows/load-env.yaml b/.github/workflows/load-env.yaml index e65389426b1..ff7f24b6887 100644 --- a/.github/workflows/load-env.yaml +++ b/.github/workflows/load-env.yaml @@ -10,7 +10,7 @@ on: jobs: load-env: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: base_image: ${{ steps.set-env.outputs.base_image }} rosdistro: ${{ steps.set-env.outputs.rosdistro }} diff --git a/.github/workflows/mirror-main-branch.yaml b/.github/workflows/mirror-main-branch.yaml index 504867e36ed..c85f67dbc0c 100644 --- a/.github/workflows/mirror-main-branch.yaml +++ b/.github/workflows/mirror-main-branch.yaml @@ -8,7 +8,7 @@ on: jobs: mirror-main-branch: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: zofrex/mirror-branch@v1 with: diff --git a/.github/workflows/pre-commit-ansible-autoupdate.yaml b/.github/workflows/pre-commit-ansible-autoupdate.yaml index 84bc42eada2..7e3226bfa31 100644 --- a/.github/workflows/pre-commit-ansible-autoupdate.yaml +++ b/.github/workflows/pre-commit-ansible-autoupdate.yaml @@ -14,7 +14,7 @@ jobs: pre-commit-ansible-autoupdate: needs: check-secret if: ${{ needs.check-secret.outputs.set == 'true' }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Generate token id: generate-token diff --git a/.github/workflows/pre-commit-ansible.yaml b/.github/workflows/pre-commit-ansible.yaml index dd023cbd265..4a01eb7fb4f 100644 --- a/.github/workflows/pre-commit-ansible.yaml +++ b/.github/workflows/pre-commit-ansible.yaml @@ -5,7 +5,7 @@ on: jobs: pre-commit-ansible: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml index 23b403f2a52..8d57a53b5cc 100644 --- a/.github/workflows/pre-commit-autoupdate.yaml +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -14,7 +14,7 @@ jobs: pre-commit-autoupdate: needs: check-secret if: ${{ needs.check-secret.outputs.set == 'true' }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Generate token id: generate-token diff --git a/.github/workflows/pre-commit-optional-autoupdate.yaml b/.github/workflows/pre-commit-optional-autoupdate.yaml index 72718377c75..a9fe00401a1 100644 --- a/.github/workflows/pre-commit-optional-autoupdate.yaml +++ b/.github/workflows/pre-commit-optional-autoupdate.yaml @@ -14,7 +14,7 @@ jobs: pre-commit-optional-autoupdate: needs: check-secret if: ${{ needs.check-secret.outputs.set == 'true' }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Generate token id: generate-token diff --git a/.github/workflows/pre-commit-optional.yaml b/.github/workflows/pre-commit-optional.yaml index 38738196a0b..12f536c5516 100644 --- a/.github/workflows/pre-commit-optional.yaml +++ b/.github/workflows/pre-commit-optional.yaml @@ -5,7 +5,7 @@ on: jobs: pre-commit-optional: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index c724885fcb3..4d005e849b5 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -6,7 +6,7 @@ on: jobs: pre-commit: if: ${{ github.event.repository.private }} # Use pre-commit.ci for public repositories - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Generate token id: generate-token diff --git a/.github/workflows/setup-docker.yaml b/.github/workflows/setup-docker.yaml index caca7bcc9ce..c28b9f7ca32 100644 --- a/.github/workflows/setup-docker.yaml +++ b/.github/workflows/setup-docker.yaml @@ -5,7 +5,7 @@ on: jobs: setup-docker: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/setup-universe.yaml b/.github/workflows/setup-universe.yaml index ef39011aca8..8f4d16d50e8 100644 --- a/.github/workflows/setup-universe.yaml +++ b/.github/workflows/setup-universe.yaml @@ -5,7 +5,7 @@ on: jobs: setup-universe: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/spell-check-differential.yaml b/.github/workflows/spell-check-differential.yaml index 1fbf2ff4692..f030a45251d 100644 --- a/.github/workflows/spell-check-differential.yaml +++ b/.github/workflows/spell-check-differential.yaml @@ -5,7 +5,7 @@ on: jobs: spell-check-differential: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/sync-files.yaml b/.github/workflows/sync-files.yaml index 51e523b8031..0cffbcd2a26 100644 --- a/.github/workflows/sync-files.yaml +++ b/.github/workflows/sync-files.yaml @@ -14,7 +14,7 @@ jobs: sync-files: needs: check-secret if: ${{ needs.check-secret.outputs.set == 'true' }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Generate token id: generate-token diff --git a/.github/workflows/update-docker-manifest.yaml b/.github/workflows/update-docker-manifest.yaml index af9324fb162..d37c187acfb 100644 --- a/.github/workflows/update-docker-manifest.yaml +++ b/.github/workflows/update-docker-manifest.yaml @@ -7,7 +7,7 @@ on: jobs: update-docker-manifest: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 9ec312d7ca7..2f38b8a2213 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -7,7 +7,7 @@ on: jobs: update-tool-versions: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Generate token id: generate-token From 2669af58d4e98da76ae46ecebd5c3785fef9eee9 Mon Sep 17 00:00:00 2001 From: Samrat Thapa <38401989+SamratThapa120@users.noreply.github.com> Date: Thu, 10 Oct 2024 13:43:52 +0900 Subject: [PATCH 280/380] chore(autoware_lidar_transfusion): updated transfusion models (#5318) updated transfusion models Signed-off-by: Samrat Thapa Co-authored-by: Yutaka Kondo --- ansible/roles/artifacts/tasks/main.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index c46bf3aed2f..02825a0d041 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -169,15 +169,15 @@ - name: Download lidar_transfusion/transfusion.onnx become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/transfusion.onnx + url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2.1/transfusion.onnx dest: "{{ data_dir }}/lidar_transfusion/transfusion.onnx" mode: "644" - checksum: sha256:ad66a061d61449af671bd0d14c2c407f0d749753f17f3165287857f686c4fd1a + checksum: sha256:1d8f0ee6d59ccc3cca914f9892f6ac8f0a9e35082abb91da183c00e3e2c2718a - name: Download lidar_transfusion/transfusion_ml_package.param.yaml become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/transfusion_ml_package.param.yaml + url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2.1/transfusion_ml_package.param.yaml dest: "{{ data_dir }}/lidar_transfusion/transfusion_ml_package.param.yaml" mode: "644" checksum: sha256:476f7727adc17a823962f2e09ba23d40f3116c50be48361d98179d054cd131b6 @@ -185,7 +185,7 @@ - name: Download lidar_transfusion/detection_class_remapper.param.yaml become: true ansible.builtin.get_url: - url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2/detection_class_remapper.param.yaml + url: https://awf.ml.dev.web.auto/perception/models/transfusion/t4xx1_90m/v2.1/detection_class_remapper.param.yaml dest: "{{ data_dir }}/lidar_transfusion/detection_class_remapper.param.yaml" mode: "644" checksum: sha256:c711f8875ece9b527dfe31ffc75f8c0de2e77945ef67860a959a4e04c36772d5 From 24d3d7fa3189b3813a965b4e05777c277be556bf Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 10 Oct 2024 17:16:15 +0900 Subject: [PATCH 281/380] fix(.github): fix non `-cuda` tag names for `universe-vehicle-system` (#5319) * fix universe-vehicle-system tags Signed-off-by: Yutaka Kondo * change to ubuntu-22.04 Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index b7e6b393b1e..728d52b9376 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -174,8 +174,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-vehicle-system-devel flavor: | latest=false @@ -186,8 +186,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-vehicle-system${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }} - type=raw,value=universe-vehicle-system${{ inputs.tag-suffix && '-' }}${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }} + type=raw,value=universe-vehicle-system${{ inputs.tag-suffix }}-${{ inputs.platform }} + type=raw,value=universe-vehicle-system${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-vehicle-system flavor: | latest=false From ac59d90d15c9e085d8e7a7b63ffba128d8ff0a5a Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 11 Oct 2024 19:59:27 +0900 Subject: [PATCH 282/380] fix(docker): install CUDA development drivers in development containers (#5332) --- ansible/playbooks/openadkit.yaml | 8 ++++---- docker/Dockerfile | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ansible/playbooks/openadkit.yaml b/ansible/playbooks/openadkit.yaml index 5cfa0408d58..dc02ee99ef5 100644 --- a/ansible/playbooks/openadkit.yaml +++ b/ansible/playbooks/openadkit.yaml @@ -26,16 +26,16 @@ when: module == 'base' - role: autoware.dev_env.pacmod when: module == 'base' - - role: autoware.dev_env.cuda - when: module == 'base' and prompt_install_nvidia=='y' - - role: autoware.dev_env.tensorrt - when: module == 'base' and prompt_install_nvidia=='y' - role: autoware.dev_env.build_tools when: module == 'all' and install_devel=='y' # Module specific dependencies - role: autoware.dev_env.geographiclib when: module == 'perception-localization' or module == 'all' + - role: autoware.dev_env.cuda + when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' + - role: autoware.dev_env.tensorrt + when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y' # Development environment - role: autoware.dev_env.dev_tools diff --git a/docker/Dockerfile b/docker/Dockerfile index efde0797845..82e2ccaf9e0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -193,12 +193,13 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ FROM base AS core-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO +ARG SETUP_ARGS ENV CCACHE_DIR="/root/.ccache" # Set up development environment and tools RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module all openadkit \ + ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ && ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache From 2ab4f1cfaaf4027f748cd5d36edfd2eb7e0156a9 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 15 Oct 2024 06:31:44 +0900 Subject: [PATCH 283/380] chore(docker): remove `/autoware/log` after `colcon build` (#5329) --- docker/Dockerfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 82e2ccaf9e0..eda2e415942 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -223,7 +223,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --install-base /opt/autoware \ --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && rm -rf /autoware/build /autoware/log ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -255,7 +255,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --install-base /opt/autoware \ --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && rm -rf /autoware/build /autoware/log ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -287,7 +287,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --install-base /opt/autoware \ --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && rm -rf /autoware/build /autoware/log ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -319,7 +319,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --install-base /opt/autoware \ --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && rm -rf /autoware/build /autoware/log FROM universe-common-devel AS universe-planning-control-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -353,7 +353,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --install-base /opt/autoware \ --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && rm -rf /autoware/build /autoware/log ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -387,7 +387,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --install-base /opt/autoware \ --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && rm -rf /autoware/build /autoware/log ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -430,7 +430,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --install-base /opt/autoware \ --mixin release compile-commands ccache \ && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && rm -rf /autoware/build /autoware/log ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] From 71d2f316818576987c2015971ab72731c470fb13 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 21 Oct 2024 18:27:02 +0900 Subject: [PATCH 284/380] chore(.github): always run `Show disk space` (#5354) always show disk space Signed-off-by: Yutaka Kondo --- .github/workflows/docker-build-and-push-arm64.yaml | 1 + .github/workflows/docker-build-and-push.yaml | 1 + .github/workflows/health-check-arm64.yaml | 1 + .github/workflows/health-check.yaml | 1 + 4 files changed, 4 insertions(+) diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index c262f0944a1..75a51b48581 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -83,5 +83,6 @@ jobs: tag-suffix: ${{ matrix.tag-suffix }} - name: Show disk space + if: always() run: | df -h diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index a321bfe5ddc..d81db3f4a19 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -78,5 +78,6 @@ jobs: tag-suffix: ${{ matrix.tag-suffix }} - name: Show disk space + if: always() run: | df -h diff --git a/.github/workflows/health-check-arm64.yaml b/.github/workflows/health-check-arm64.yaml index baf58b00d3b..eca18a45bd3 100644 --- a/.github/workflows/health-check-arm64.yaml +++ b/.github/workflows/health-check-arm64.yaml @@ -58,5 +58,6 @@ jobs: LIB_DIR=${{ matrix.lib_dir }} - name: Show disk space + if: always() run: | df -h diff --git a/.github/workflows/health-check.yaml b/.github/workflows/health-check.yaml index 80163069c68..9a54be6cb77 100644 --- a/.github/workflows/health-check.yaml +++ b/.github/workflows/health-check.yaml @@ -68,5 +68,6 @@ jobs: LIB_DIR=${{ matrix.lib_dir }} - name: Show disk space + if: always() run: | df -h From 99dd3de66c8d50bc8445cafbdd0f72e0bb63b0c5 Mon Sep 17 00:00:00 2001 From: chgyg <99009754+ChgygLin@users.noreply.github.com> Date: Wed, 23 Oct 2024 19:53:44 +0800 Subject: [PATCH 285/380] build(autoware.repos): remove ament_cmake fork repository (#5360) Signed-off-by: Chengyong Lin --- autoware.repos | 4 ---- 1 file changed, 4 deletions(-) diff --git a/autoware.repos b/autoware.repos index bd3b94c0240..68d623199ee 100644 --- a/autoware.repos +++ b/autoware.repos @@ -75,10 +75,6 @@ repositories: type: git url: https://github.com/MapIV/llh_converter.git version: ros2 - universe/external/ament_cmake: # TODO(mitsudome-r): remove when https://github.com/ament/ament_cmake/pull/448 is merged - type: git - url: https://github.com/autowarefoundation/ament_cmake.git - version: feat/faster_ament_libraries_deduplicate universe/external/glog: # TODO(Horibe): to use isGoogleInitialized() API in v0.6.0. Remove when the rosdep glog version is updated to v0.6.0 (already updated in Ubuntu 24.04) type: git url: https://github.com/tier4/glog.git From 71c87896fb06cb929f7d0d4f1f65cb0b3a19c9e1 Mon Sep 17 00:00:00 2001 From: SakodaShintaro Date: Wed, 6 Nov 2024 14:04:32 +0900 Subject: [PATCH 286/380] fix: remove `ndt_omp` (#5390) Removed ndt_omp Signed-off-by: Shintaro Sakoda --- autoware.repos | 4 ---- 1 file changed, 4 deletions(-) diff --git a/autoware.repos b/autoware.repos index 68d623199ee..65425f55b93 100644 --- a/autoware.repos +++ b/autoware.repos @@ -55,10 +55,6 @@ repositories: type: git url: https://github.com/tier4/muSSP.git version: tier4/main - universe/external/ndt_omp: - type: git - url: https://github.com/tier4/ndt_omp.git - version: tier4/main universe/external/pointcloud_to_laserscan: type: git url: https://github.com/tier4/pointcloud_to_laserscan.git From 4db1eff03cdd4dc5616d4bff994ecfc9b88e7d5f Mon Sep 17 00:00:00 2001 From: SakodaShintaro Date: Thu, 7 Nov 2024 14:11:53 +0900 Subject: [PATCH 287/380] fix: change the organization of `awsim_sensor_kit_launch` from RobotecAI to tier4 (#5403) Fixed organization of `awsim_sensor_kit_launch` from RobotecAI to tier4 Signed-off-by: Shintaro Sakoda --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 65425f55b93..66feaa178b2 100644 --- a/autoware.repos +++ b/autoware.repos @@ -110,7 +110,7 @@ repositories: version: main sensor_kit/external/awsim_sensor_kit_launch: # TODO: Integrate into sample_sensor_kit_launch type: git - url: https://github.com/RobotecAI/awsim_sensor_kit_launch.git + url: https://github.com/tier4/awsim_sensor_kit_launch.git version: main sensor_kit/awsim_labs_sensor_kit_launch: type: git From 06d386abd9423482de838d28e8d53741807fead8 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 7 Nov 2024 17:30:08 +0900 Subject: [PATCH 288/380] chore(.devcontainer): rename `.devcontainer` directories (#5407) rename .devcontainer dirs Signed-off-by: Yutaka Kondo --- .devcontainer/{cuda => universe-devel-cuda}/devcontainer.json | 0 .devcontainer/{base => universe-devel}/devcontainer.json | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename .devcontainer/{cuda => universe-devel-cuda}/devcontainer.json (100%) rename .devcontainer/{base => universe-devel}/devcontainer.json (100%) diff --git a/.devcontainer/cuda/devcontainer.json b/.devcontainer/universe-devel-cuda/devcontainer.json similarity index 100% rename from .devcontainer/cuda/devcontainer.json rename to .devcontainer/universe-devel-cuda/devcontainer.json diff --git a/.devcontainer/base/devcontainer.json b/.devcontainer/universe-devel/devcontainer.json similarity index 100% rename from .devcontainer/base/devcontainer.json rename to .devcontainer/universe-devel/devcontainer.json From 9dca3044ef48fc5913d9d5cd23aff9b68313671d Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 8 Nov 2024 07:39:44 +0900 Subject: [PATCH 289/380] feat(docker): integrate `cuda`/`no-cuda` jobs into single job (#5363) --- .../docker-build-and-push-cuda/action.yaml | 121 ++++ .../actions/docker-build-and-push/action.yaml | 60 +- .github/actions/docker-build/action.yaml | 25 +- .../docker-build-and-push-arm64.yaml | 54 +- .github/workflows/docker-build-and-push.yaml | 54 +- .github/workflows/health-check-arm64.yaml | 24 +- .github/workflows/health-check.yaml | 22 +- docker/Dockerfile | 145 ++++- docker/Dockerfile.svg | 531 ++++++++++-------- docker/docker-bake-cuda.hcl | 38 ++ 10 files changed, 673 insertions(+), 401 deletions(-) create mode 100644 .github/actions/docker-build-and-push-cuda/action.yaml create mode 100644 docker/docker-bake-cuda.hcl diff --git a/.github/actions/docker-build-and-push-cuda/action.yaml b/.github/actions/docker-build-and-push-cuda/action.yaml new file mode 100644 index 00000000000..59f5ccc3569 --- /dev/null +++ b/.github/actions/docker-build-and-push-cuda/action.yaml @@ -0,0 +1,121 @@ +name: docker-build-and-push-cuda +description: Workflow do build and push CUDA images to registry. + +inputs: + platform: + description: "" + required: true + bake-target: + description: "" + required: true + build-args: + description: "" + required: false + +runs: + using: composite + steps: + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Restore ccache + uses: actions/cache/restore@v4 + with: + path: | + root-ccache + key: ccache-${{ inputs.platform }}-${{ hashFiles('src/**/*.cpp') }} + restore-keys: | + ccache-${{ inputs.platform }}- + + - name: Restore apt-get + uses: actions/cache/restore@v4 + with: + path: | + var-cache-apt + key: apt-get-${{ inputs.platform }}-${{ hashFiles('src/**/package.xml') }} + restore-keys: | + apt-get-${{ inputs.platform }}- + + - name: Inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.2 + with: + cache-map: | + { + "root-ccache": "/root/.ccache", + "var-cache-apt": "/var/cache/apt" + } + skip-extraction: true + + - name: Get current date + id: date + run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT + shell: bash + + - name: Docker meta for autoware:universe-sensing-perception-devel-cuda + id: meta-universe-sensing-perception-devel-cuda + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: | + type=raw,value=universe-sensing-perception-devel-cuda-${{ inputs.platform }} + type=raw,value=universe-sensing-perception-devel-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + bake-target: docker-metadata-action-universe-sensing-perception-devel-cuda + flavor: | + latest=false + + - name: Docker meta for autoware:universe-sensing-perception-cuda + id: meta-universe-sensing-perception-cuda + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: | + type=raw,value=universe-sensing-perception-cuda-${{ inputs.platform }} + type=raw,value=universe-sensing-perception-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + bake-target: docker-metadata-action-universe-sensing-perception-cuda + flavor: | + latest=false + + - name: Docker meta for autoware:universe-devel-cuda + id: meta-universe-devel-cuda + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: | + type=raw,value=universe-devel-cuda-${{ inputs.platform }} + type=raw,value=universe-devel-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + bake-target: docker-metadata-action-universe-devel-cuda + flavor: | + latest=false + + - name: Docker meta for autoware:universe-cuda + id: meta-universe-cuda + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: | + type=raw,value=universe-cuda-${{ inputs.platform }} + type=raw,value=universe-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + bake-target: docker-metadata-action-universe-cuda + flavor: | + latest=auto + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ github.token }} + + - name: Build and Push to GitHub Container Registry + uses: docker/bake-action@v5 + with: + push: true + files: | + docker/docker-bake-cuda.hcl + ${{ steps.meta-universe-sensing-perception-devel-cuda.outputs.bake-file }} + ${{ steps.meta-universe-sensing-perception-cuda.outputs.bake-file }} + ${{ steps.meta-universe-devel-cuda.outputs.bake-file }} + ${{ steps.meta-universe-cuda.outputs.bake-file }} + provenance: false + set: | + ${{ inputs.build-args }} diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 728d52b9376..0a064ee1acf 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -2,9 +2,6 @@ name: docker-build-and-push description: "" inputs: - name: - description: "" - required: true platform: description: "" required: true @@ -14,9 +11,6 @@ inputs: build-args: description: "" required: false - tag-suffix: - description: "" - required: false runs: using: composite @@ -42,9 +36,8 @@ runs: with: path: | root-ccache - key: ccache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }} + key: ccache-${{ inputs.platform }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | - ccache-${{ inputs.platform }}-${{ inputs.name }}- ccache-${{ inputs.platform }}- - name: Restore apt-get @@ -52,9 +45,8 @@ runs: with: path: | var-cache-apt - key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} + key: apt-get-${{ inputs.platform }}-${{ hashFiles('src/**/package.xml') }} restore-keys: | - apt-get-${{ inputs.platform }}-${{ inputs.name }}- apt-get-${{ inputs.platform }}- - name: Inject cache into docker @@ -78,8 +70,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=base${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=base${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=base-${{ inputs.platform }} + type=raw,value=base-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-base flavor: | latest=false @@ -90,8 +82,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=core-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=core-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=core-devel-${{ inputs.platform }} + type=raw,value=core-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-core-devel flavor: | latest=false @@ -102,8 +94,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-sensing-perception-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-sensing-perception-devel-${{ inputs.platform }} + type=raw,value=universe-sensing-perception-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception-devel flavor: | latest=false @@ -114,8 +106,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-sensing-perception${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-sensing-perception-${{ inputs.platform }} + type=raw,value=universe-sensing-perception-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception flavor: | latest=false @@ -126,8 +118,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-localization-mapping-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-localization-mapping-devel-${{ inputs.platform }} + type=raw,value=universe-localization-mapping-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-localization-mapping-devel flavor: | latest=false @@ -138,8 +130,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-localization-mapping${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-localization-mapping-${{ inputs.platform }} + type=raw,value=universe-localization-mapping-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-localization-mapping flavor: | latest=false @@ -150,8 +142,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-planning-control-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-planning-control-devel-${{ inputs.platform }} + type=raw,value=universe-planning-control-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-planning-control-devel flavor: | latest=false @@ -162,8 +154,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-planning-control${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-planning-control${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-planning-control-${{ inputs.platform }} + type=raw,value=universe-planning-control-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-planning-control flavor: | latest=false @@ -174,8 +166,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-vehicle-system-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-vehicle-system-devel-${{ inputs.platform }} + type=raw,value=universe-vehicle-system-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-vehicle-system-devel flavor: | latest=false @@ -186,8 +178,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-vehicle-system${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-vehicle-system${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-vehicle-system-${{ inputs.platform }} + type=raw,value=universe-vehicle-system-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-vehicle-system flavor: | latest=false @@ -198,8 +190,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe-devel${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe-devel${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-devel-${{ inputs.platform }} + type=raw,value=universe-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe-devel flavor: | latest=false @@ -210,8 +202,8 @@ runs: with: images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} tags: | - type=raw,value=universe${{ inputs.tag-suffix }}-${{ inputs.platform }} - type=raw,value=universe${{ inputs.tag-suffix }}-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=raw,value=universe-${{ inputs.platform }} + type=raw,value=universe-${{ steps.date.outputs.date }}-${{ inputs.platform }} bake-target: docker-metadata-action-universe flavor: | latest=auto diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index de582611886..bfb6383c208 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -2,9 +2,6 @@ name: docker-build description: "" inputs: - name: - description: "" - required: true platform: description: "" required: true @@ -36,48 +33,44 @@ runs: - name: Cache ccache uses: actions/cache@v4 - if: ${{ inputs.name == 'no-cuda' && github.ref == 'refs/heads/main' }} + if: ${{ github.ref == 'refs/heads/main' }} id: cache-ccache with: path: | root-ccache - key: ccache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }} + key: ccache-${{ inputs.platform }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | - ccache-${{ inputs.platform }}-${{ inputs.name }}- ccache-${{ inputs.platform }}- - name: Cache apt-get uses: actions/cache@v4 - if: ${{ inputs.name == 'no-cuda' && github.ref == 'refs/heads/main' }} + if: ${{ github.ref == 'refs/heads/main' }} id: cache-apt-get with: path: | var-cache-apt - key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} + key: apt-get-${{ inputs.platform }}-${{ hashFiles('src/**/package.xml') }} restore-keys: | - apt-get-${{ inputs.platform }}-${{ inputs.name }}- apt-get-${{ inputs.platform }}- - name: Restore ccache uses: actions/cache/restore@v4 - if: ${{ inputs.name != 'no-cuda' || github.ref != 'refs/heads/main' }} + if: ${{ github.ref != 'refs/heads/main' }} with: path: | root-ccache - key: ccache-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/*.cpp') }} + key: ccache-${{ inputs.platform }}-${{ hashFiles('src/**/*.cpp') }} restore-keys: | - ccache-${{ inputs.platform }}-${{ inputs.name }}- ccache-${{ inputs.platform }}- - name: Restore apt-get uses: actions/cache/restore@v4 - if: ${{ inputs.name != 'no-cuda' || github.ref != 'refs/heads/main' }} + if: ${{ github.ref != 'refs/heads/main' }} with: path: | var-cache-apt - key: apt-get-${{ inputs.platform }}-${{ inputs.name }}-${{ hashFiles('src/**/package.xml') }} + key: apt-get-${{ inputs.platform }}-${{ hashFiles('src/**/package.xml') }} restore-keys: | - apt-get-${{ inputs.platform }}-${{ inputs.name }}- apt-get-${{ inputs.platform }}- - name: Inject cache into docker @@ -104,4 +97,4 @@ runs: context: . push: false build-args: ${{ inputs.build-args }} - cache-from: type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ inputs.name }}-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }} + cache-from: type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ inputs.platform }}-${{ inputs.cache-tag-suffix }} diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index 75a51b48581..01d6be45f59 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -14,24 +14,6 @@ jobs: docker-build-and-push: needs: load-env runs-on: [self-hosted, linux, ARM64] - strategy: - fail-fast: false - matrix: - name: - - no-cuda - - cuda - include: - - name: no-cuda - platform: arm64 - base_image_env: base_image - lib_dir: aarch64 - setup-args: --no-nvidia - tag-suffix: "" - - name: cuda - platform: arm64 - base_image_env: base_image - lib_dir: aarch64 - tag-suffix: -cuda steps: # https://github.com/actions/checkout/issues/211 - name: Change permission of workspace @@ -62,25 +44,39 @@ jobs: ansible/** docker/** - - name: Build 'Autoware' + - name: Build 'Autoware' without CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag') }} uses: ./.github/actions/docker-build-and-push with: - name: ${{ matrix.name }} - platform: ${{ matrix.platform }} + platform: arm64 bake-target: autoware build-args: | - *.platform=linux/${{ matrix.platform }} + *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} - *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} - *.args.SETUP_ARGS=${{ matrix.setup-args }} - *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max - tag-suffix: ${{ matrix.tag-suffix }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.LIB_DIR=aarch64 + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-${{ github.ref_name }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-${{ github.ref_name }},mode=max + + - name: Build 'Autoware' with CUDA + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} + uses: ./.github/actions/docker-build-and-push-cuda + with: + platform: arm64 + bake-target: autoware + build-args: | + *.platform=linux/arm64 + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.LIB_DIR=aarch64 + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-${{ github.ref_name }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-${{ github.ref_name }},mode=max - name: Show disk space if: always() diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index d81db3f4a19..232b78c6569 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -14,24 +14,6 @@ jobs: docker-build-and-push: needs: load-env runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - name: - - no-cuda - - cuda - include: - - name: no-cuda - platform: amd64 - base_image_env: base_image - lib_dir: x86_64 - setup-args: --no-nvidia - tag-suffix: "" - - name: cuda - platform: amd64 - base_image_env: base_image - lib_dir: x86_64 - tag-suffix: -cuda steps: - name: Check out repository uses: actions/checkout@v4 @@ -57,25 +39,39 @@ jobs: ansible/** docker/** - - name: Build 'Autoware' + - name: Build 'Autoware' without CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag') }} uses: ./.github/actions/docker-build-and-push with: - name: ${{ matrix.name }} - platform: ${{ matrix.platform }} + platform: amd64 bake-target: autoware build-args: | - *.platform=linux/${{ matrix.platform }} + *.platform=linux/amd64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} - *.args.BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} - *.args.SETUP_ARGS=${{ matrix.setup-args }} - *.args.LIB_DIR=${{ matrix.lib_dir }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }} - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-main - *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.name }}-${{ matrix.platform }}-${{ github.ref_name }},mode=max - tag-suffix: ${{ matrix.tag-suffix }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.LIB_DIR=x86_64 + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-${{ github.ref_name }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-${{ github.ref_name }},mode=max + + - name: Build 'Autoware' with CUDA + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} + uses: ./.github/actions/docker-build-and-push-cuda + with: + platform: amd64 + bake-target: autoware + build-args: | + *.platform=linux/amd64 + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.LIB_DIR=x86_64 + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-${{ github.ref_name }} + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-main + *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-${{ github.ref_name }},mode=max - name: Show disk space if: always() diff --git a/.github/workflows/health-check-arm64.yaml b/.github/workflows/health-check-arm64.yaml index eca18a45bd3..d487e3c6ffd 100644 --- a/.github/workflows/health-check-arm64.yaml +++ b/.github/workflows/health-check-arm64.yaml @@ -12,22 +12,6 @@ jobs: docker-build: needs: load-env runs-on: [self-hosted, linux, ARM64] - strategy: - fail-fast: false - matrix: - name: - - no-cuda - - cuda - include: - - name: no-cuda - platform: arm64 - base_image_env: base_image - lib_dir: aarch64 - setup-args: --no-nvidia - - name: cuda - platform: arm64 - base_image_env: base_image - lib_dir: aarch64 steps: # https://github.com/actions/checkout/issues/211 - name: Change permission of workspace @@ -48,14 +32,12 @@ jobs: - name: Build 'Autoware' uses: ./.github/actions/docker-build with: - name: ${{ matrix.name }} - platform: ${{ matrix.platform }} + platform: arm64 cache-tag-suffix: main build-args: | ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} - BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} - SETUP_ARGS=${{ matrix.setup-args }} - LIB_DIR=${{ matrix.lib_dir }} + BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + LIB_DIR=aarch64 - name: Show disk space if: always() diff --git a/.github/workflows/health-check.yaml b/.github/workflows/health-check.yaml index 9a54be6cb77..55894881a4d 100644 --- a/.github/workflows/health-check.yaml +++ b/.github/workflows/health-check.yaml @@ -29,20 +29,6 @@ jobs: runs-on: ubuntu-22.04 strategy: fail-fast: false - matrix: - name: - - no-cuda - - cuda - include: - - name: no-cuda - platform: amd64 - base_image_env: base_image - lib_dir: x86_64 - setup-args: --no-nvidia - - name: cuda - platform: amd64 - base_image_env: base_image - lib_dir: x86_64 steps: - name: Check out repository uses: actions/checkout@v4 @@ -58,14 +44,12 @@ jobs: - name: Build 'Autoware' uses: ./.github/actions/docker-build with: - name: ${{ matrix.name }} - platform: ${{ matrix.platform }} + platform: amd64 cache-tag-suffix: main build-args: | ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} - BASE_IMAGE=${{ needs.load-env.outputs[format('{0}', matrix.base_image_env)] }} - SETUP_ARGS=${{ matrix.setup-args }} - LIB_DIR=${{ matrix.lib_dir }} + BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + LIB_DIR=x86_64 - name: Show disk space if: always() diff --git a/docker/Dockerfile b/docker/Dockerfile index eda2e415942..19bb14cf97d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,6 @@ ARG BASE_IMAGE FROM $BASE_IMAGE AS base SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO -ARG SETUP_ARGS # Install apt packages and add GitHub to known hosts for private repositories RUN rm -f /etc/apt/apt.conf.d/docker-clean \ @@ -25,7 +24,7 @@ WORKDIR /autoware # Set up base environment RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module base ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + ./setup-dev-env.sh -y --module base --no-nvidia --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc @@ -193,13 +192,12 @@ RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ FROM base AS core-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO -ARG SETUP_ARGS ENV CCACHE_DIR="/root/.ccache" # Set up development environment and tools RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --no-cuda-drivers openadkit \ + ./setup-dev-env.sh -y --module all --no-nvidia --no-cuda-drivers openadkit \ && ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ && apt-get autoremove -y && rm -rf "$HOME"/.cache @@ -292,6 +290,47 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM universe-sensing-perception-devel AS universe-sensing-perception-devel-cuda +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ENV CCACHE_DIR="/root/.ccache" + +# Set up CUDA development environment +RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + ./setup-dev-env.sh -y --module all --no-cuda-drivers openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache + +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + # TODO(youtalk): Move CUDA related packages into a dedicated directory + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_bytetrack,target=/autoware/src/universe/autoware.universe/perception/autoware_bytetrack \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_lidar_apollo_instance_segmentation,target=/autoware/src/universe/autoware.universe/perception/autoware_lidar_apollo_instance_segmentation \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_lidar_centerpoint,target=/autoware/src/universe/autoware.universe/perception/autoware_lidar_centerpoint \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_lidar_transfusion,target=/autoware/src/universe/autoware.universe/perception/autoware_lidar_transfusion \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_shape_estimation,target=/autoware/src/universe/autoware.universe/perception/autoware_shape_estimation \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_classifier,target=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_classifier \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_common,target=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_common \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_yolox,target=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_yolox \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_classifier,target=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_classifier \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_fine_detector,target=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_fine_detector \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_cuda_utils,target=/autoware/src/universe/autoware.universe/sensing/autoware_cuda_utils \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && colcon build --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + --merge-install \ + --install-base /opt/autoware \ + --mixin release compile-commands ccache \ + && du -sh ${CCACHE_DIR} && ccache -s \ + && rm -rf /autoware/build + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM universe-common-devel AS universe-localization-mapping-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -435,18 +474,32 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM universe-devel AS universe-devel-cuda +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Set up CUDA development environment +RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + ./setup-dev-env.sh -y --module all --no-cuda-drivers openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache + +COPY --from=universe-sensing-perception-devel-cuda /opt/autoware /opt/autoware + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM base AS universe-sensing-perception SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR -ARG SETUP_ARGS -# Set up runtime environment and artifacts +# Set up runtime environment COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-exec-depend-packages.txt /tmp/rosdep-universe-sensing-perception-exec-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 ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadkit \ + ./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-universe-sensing-perception-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ @@ -455,8 +508,7 @@ RUN --mount=type=ssh \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + && rm -rf /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* @@ -469,18 +521,43 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM universe-sensing-perception AS universe-sensing-perception-cuda +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR + +# Set up CUDA runtime environment and artifacts +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + ./setup-dev-env.sh -y --module all --download-artifacts --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ + && find / -name "*.o" -type f -delete \ + && find / -name "*.h" -type f -delete \ + && find / -name "*.hpp" -type f -delete \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + /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 --from=universe-sensing-perception-devel-cuda /opt/autoware /opt/autoware + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM base AS universe-localization-mapping SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR -ARG SETUP_ARGS -# Set up runtime environment and artifacts +# Set up runtime environment COPY --from=rosdep-universe-localization-mapping-depend /rosdep-universe-localization-mapping-exec-depend-packages.txt /tmp/rosdep-universe-localization-mapping-exec-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 ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + ./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-universe-localization-mapping-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ @@ -507,14 +584,13 @@ FROM base AS universe-planning-control SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR -ARG SETUP_ARGS -# Set up runtime environment and artifacts +# Set up runtime environment COPY --from=rosdep-universe-planning-control-depend /rosdep-universe-planning-control-exec-depend-packages.txt /tmp/rosdep-universe-planning-control-exec-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 ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + ./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-universe-planning-control-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ @@ -541,14 +617,13 @@ FROM base AS universe-vehicle-system SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR -ARG SETUP_ARGS -# Set up runtime environment and artifacts +# Set up runtime environment COPY --from=rosdep-universe-vehicle-system-depend /rosdep-universe-vehicle-system-exec-depend-packages.txt /tmp/rosdep-universe-vehicle-system-exec-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 ${SETUP_ARGS} --no-cuda-drivers --runtime openadkit \ + ./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-universe-vehicle-system-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ @@ -575,14 +650,13 @@ FROM base AS universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR -ARG SETUP_ARGS -# Set up runtime environment and artifacts +# Set up runtime environment COPY --from=rosdep-universe-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 \ - ./setup-dev-env.sh -y --module all ${SETUP_ARGS} --download-artifacts --no-cuda-drivers --runtime openadkit \ + ./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-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ @@ -591,8 +665,7 @@ RUN --mount=type=ssh \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + && rm -rf /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* @@ -604,3 +677,29 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] + +FROM universe AS universe-cuda +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR + +# Set up CUDA runtime environment and artifacts +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + ./setup-dev-env.sh -y --module all --download-artifacts --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ + && find / -name "*.o" -type f -delete \ + && find / -name "*.h" -type f -delete \ + && find / -name "*.hpp" -type f -delete \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + /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 --from=universe-devel-cuda /opt/autoware /opt/autoware + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index a8d5d4e1d37..5d983ab1436 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -1,414 +1,485 @@ - - - + + G - + cluster_legend - + key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  key2 -  -  -  +  +  +  key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + external_image_0 - -$BASE_IMAGE + +$BASE_IMAGE stage_0 - -base + +base external_image_0->stage_0 - - + + stage_1 - -rosdep-depend + +rosdep-depend external_image_0->stage_1 - - + + stage_7 - -core-devel + +core-devel stage_0->stage_7 - - + + - + -stage_14 - -universe-sensing-perception +stage_16 + +universe-sensing-perception - + -stage_0->stage_14 - - - +stage_0->stage_16 + + - + -stage_15 - -universe-localization-mapping +stage_18 + +universe-localization-mapping - + -stage_0->stage_15 - - +stage_0->stage_18 + + - + -stage_16 - -universe-planning-control +stage_19 + +universe-planning-control - + -stage_0->stage_16 - - - - +stage_0->stage_19 + + - + -stage_17 - -universe-vehicle-system +stage_20 + +universe-vehicle-system - + -stage_0->stage_17 - +stage_0->stage_20 + + - + -stage_18 - -universe +stage_21 + +universe - + -stage_0->stage_18 - - +stage_0->stage_21 + + + + + stage_1->stage_7 - - + + stage_2 - -rosdep-universe-sensing-perception-depend + +rosdep-universe-sensing-perception-depend stage_1->stage_2 - - + + stage_3 - -rosdep-universe-localization-mapping-depend + +rosdep-universe-localization-mapping-depend stage_1->stage_3 - - + + + stage_4 - -rosdep-universe-planning-control-depend + +rosdep-universe-planning-control-depend stage_1->stage_4 - - - + + stage_5 - -rosdep-universe-vehicle-system-depend + +rosdep-universe-vehicle-system-depend stage_1->stage_5 - - + + stage_6 - -rosdep-universe-depend + +rosdep-universe-depend stage_1->stage_6 - - - + + stage_8 - -universe-common-devel + +universe-common-devel stage_1->stage_8 - - + + - + stage_7->stage_8 - - + + - - -stage_2->stage_14 - - + + +stage_17 + +universe-sensing-perception-cuda + + + +stage_16->stage_17 + + + + + +stage_22 + +universe-cuda + + + +stage_21->stage_22 + + + + + +stage_2->stage_16 + + stage_9 - -universe-sensing-perception-devel + +universe-sensing-perception-devel stage_2->stage_9 - - - - - -stage_3->stage_15 - - + + stage_10 - -universe-localization-mapping-devel + +universe-sensing-perception-devel-cuda - - -stage_3->stage_10 - - + + +stage_2->stage_10 + + + - - -stage_4->stage_16 - - + + +stage_3->stage_18 + + stage_11 - -universe-planning-control-devel - - - -stage_4->stage_11 - - - - - -stage_5->stage_17 - - - + +universe-localization-mapping-devel + + + +stage_3->stage_11 + + + + + +stage_4->stage_19 + + stage_12 - -universe-vehicle-system-devel + +universe-planning-control-devel - - -stage_5->stage_12 - - + + +stage_4->stage_12 + + - + -stage_6->stage_18 - - +stage_5->stage_20 + + stage_13 - -universe-devel + +universe-vehicle-system-devel + + + +stage_5->stage_13 + + + + + +stage_6->stage_21 + - - -stage_6->stage_13 - - + + +stage_14 + +universe-devel + + + +stage_6->stage_14 + + - + stage_8->stage_9 - - - - - -stage_8->stage_10 - - + + - + stage_8->stage_11 - - + + - + stage_8->stage_12 - - + + - + stage_8->stage_13 - - + + + + + +stage_8->stage_14 + + + + + +stage_9->stage_16 + + + + + +stage_9->stage_10 + + - + stage_9->stage_14 - - + + - - -stage_9->stage_13 - - + + +stage_15 + +universe-devel-cuda - + stage_10->stage_15 - - - - - -stage_10->stage_13 - - - - - -stage_11->stage_16 - - - - - -stage_11->stage_13 - - - - - -stage_12->stage_17 - - - - - -stage_12->stage_13 - - - - - -stage_13->stage_18 - - + + + + + +stage_10->stage_17 + + + + + +stage_11->stage_18 + + + + + +stage_11->stage_14 + + + + + +stage_12->stage_19 + + + + + +stage_12->stage_14 + + + + + +stage_13->stage_20 + + + + + +stage_13->stage_14 + + + + + +stage_14->stage_21 + + + + + +stage_14->stage_15 + + + + + +stage_15->stage_22 + + diff --git a/docker/docker-bake-cuda.hcl b/docker/docker-bake-cuda.hcl new file mode 100644 index 00000000000..87aa27df879 --- /dev/null +++ b/docker/docker-bake-cuda.hcl @@ -0,0 +1,38 @@ +group "default" { + targets = [ + "universe-sensing-perception-devel-cuda", + "universe-sensing-perception-cuda", + "universe-devel-cuda", + "universe-cuda" + ] +} + +// For docker/metadata-action +target "docker-metadata-action-universe-sensing-perception-devel-cuda" {} +target "docker-metadata-action-universe-sensing-perception-cuda" {} +target "docker-metadata-action-universe-devel-cuda" {} +target "docker-metadata-action-universe-cuda" {} + +target "universe-sensing-perception-devel-cuda" { + inherits = ["docker-metadata-action-universe-sensing-perception-devel-cuda"] + dockerfile = "docker/Dockerfile" + target = "universe-sensing-perception-devel-cuda" +} + +target "universe-sensing-perception-cuda" { + inherits = ["docker-metadata-action-universe-sensing-perception-cuda"] + dockerfile = "docker/Dockerfile" + target = "universe-sensing-perception-cuda" +} + +target "universe-devel-cuda" { + inherits = ["docker-metadata-action-universe-devel-cuda"] + dockerfile = "docker/Dockerfile" + target = "universe-devel-cuda" +} + +target "universe-cuda" { + inherits = ["docker-metadata-action-universe-cuda"] + dockerfile = "docker/Dockerfile" + target = "universe-cuda" +} From a0d3fca30590e1172fb63fda2c0acfadb296770b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 11 Nov 2024 22:29:11 +0900 Subject: [PATCH 290/380] chore(.github): rename `bake-target` to `target-image` and add descriptions to args (#5413) * rename target-image and add descriptions Signed-off-by: Yutaka Kondo * fix feedback Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../docker-build-and-push-cuda/action.yaml | 18 +++++----- .../actions/docker-build-and-push/action.yaml | 34 +++++++++---------- .github/actions/docker-build/action.yaml | 10 +++--- .../docker-build-and-push-arm64.yaml | 4 +-- .github/workflows/docker-build-and-push.yaml | 4 +-- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.github/actions/docker-build-and-push-cuda/action.yaml b/.github/actions/docker-build-and-push-cuda/action.yaml index 59f5ccc3569..5bf46d0cc17 100644 --- a/.github/actions/docker-build-and-push-cuda/action.yaml +++ b/.github/actions/docker-build-and-push-cuda/action.yaml @@ -1,15 +1,15 @@ name: docker-build-and-push-cuda -description: Workflow do build and push CUDA images to registry. +description: Composite action to build and push CUDA images to registry. inputs: platform: - description: "" + description: Target platform. required: true - bake-target: - description: "" + target-image: + description: Target docker image name in the registry. required: true build-args: - description: "" + description: Additional build args. required: false runs: @@ -55,7 +55,7 @@ runs: id: meta-universe-sensing-perception-devel-cuda uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-sensing-perception-devel-cuda-${{ inputs.platform }} type=raw,value=universe-sensing-perception-devel-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -67,7 +67,7 @@ runs: id: meta-universe-sensing-perception-cuda uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-sensing-perception-cuda-${{ inputs.platform }} type=raw,value=universe-sensing-perception-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -79,7 +79,7 @@ runs: id: meta-universe-devel-cuda uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-devel-cuda-${{ inputs.platform }} type=raw,value=universe-devel-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -91,7 +91,7 @@ runs: id: meta-universe-cuda uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-cuda-${{ inputs.platform }} type=raw,value=universe-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 0a064ee1acf..3e3bc857fea 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -1,15 +1,15 @@ name: docker-build-and-push -description: "" +description: Composite action to build and push non CUDA images to registry. inputs: platform: - description: "" + description: Target platform. required: true - bake-target: - description: "" + target-image: + description: Target docker image name in the registry. required: true build-args: - description: "" + description: Additional build args. required: false runs: @@ -68,7 +68,7 @@ runs: id: meta-base uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=base-${{ inputs.platform }} type=raw,value=base-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -80,7 +80,7 @@ runs: id: meta-core-devel uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=core-devel-${{ inputs.platform }} type=raw,value=core-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -92,7 +92,7 @@ runs: id: meta-universe-sensing-perception-devel uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-sensing-perception-devel-${{ inputs.platform }} type=raw,value=universe-sensing-perception-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -104,7 +104,7 @@ runs: id: meta-universe-sensing-perception uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-sensing-perception-${{ inputs.platform }} type=raw,value=universe-sensing-perception-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -116,7 +116,7 @@ runs: id: meta-universe-localization-mapping-devel uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-localization-mapping-devel-${{ inputs.platform }} type=raw,value=universe-localization-mapping-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -128,7 +128,7 @@ runs: id: meta-universe-localization-mapping uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-localization-mapping-${{ inputs.platform }} type=raw,value=universe-localization-mapping-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -140,7 +140,7 @@ runs: id: meta-universe-planning-control-devel uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-planning-control-devel-${{ inputs.platform }} type=raw,value=universe-planning-control-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -152,7 +152,7 @@ runs: id: meta-universe-planning-control uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-planning-control-${{ inputs.platform }} type=raw,value=universe-planning-control-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -164,7 +164,7 @@ runs: id: meta-universe-vehicle-system-devel uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-vehicle-system-devel-${{ inputs.platform }} type=raw,value=universe-vehicle-system-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -176,7 +176,7 @@ runs: id: meta-universe-vehicle-system uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-vehicle-system-${{ inputs.platform }} type=raw,value=universe-vehicle-system-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -188,7 +188,7 @@ runs: id: meta-universe-devel uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-devel-${{ inputs.platform }} type=raw,value=universe-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -200,7 +200,7 @@ runs: id: meta-universe uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-${{ inputs.platform }} type=raw,value=universe-${{ steps.date.outputs.date }}-${{ inputs.platform }} diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index bfb6383c208..9a6a6e7e140 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -1,16 +1,16 @@ name: docker-build -description: "" +description: Composite action to build images only. inputs: platform: - description: "" + description: Target platform. required: true cache-tag-suffix: - description: "" + description: Suffix of the target cache tag. required: true build-args: - description: "" - required: true + description: Additional build args. + required: false runs: using: composite diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index 01d6be45f59..5fd899aaac1 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -51,7 +51,7 @@ jobs: uses: ./.github/actions/docker-build-and-push with: platform: arm64 - bake-target: autoware + target-image: autoware build-args: | *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} @@ -68,7 +68,7 @@ jobs: uses: ./.github/actions/docker-build-and-push-cuda with: platform: arm64 - bake-target: autoware + target-image: autoware build-args: | *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 232b78c6569..9815aa170f3 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -46,7 +46,7 @@ jobs: uses: ./.github/actions/docker-build-and-push with: platform: amd64 - bake-target: autoware + target-image: autoware build-args: | *.platform=linux/amd64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} @@ -63,7 +63,7 @@ jobs: uses: ./.github/actions/docker-build-and-push-cuda with: platform: amd64 - bake-target: autoware + target-image: autoware build-args: | *.platform=linux/amd64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} From 21aa0693d1e5b5856e3095f81536531c273fff5e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 12 Nov 2024 13:19:59 +0900 Subject: [PATCH 291/380] feat(docker): install CUDA development/runtime libraries only 1 time (#5419) * add base-cuda Signed-off-by: Yutaka Kondo * update svg Signed-off-by: Yutaka Kondo * not cache cuda packages Signed-off-by: Yutaka Kondo * push base-cuda image Signed-off-by: Yutaka Kondo * Update docker-build-and-push.yaml * Update docker-build-and-push-arm64.yaml * separate jobs Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../docker-build-and-push-cuda/action.yaml | 26 + .../docker-build-and-push-arm64.yaml | 33 + .github/workflows/docker-build-and-push.yaml | 33 + docker/Dockerfile | 76 +- docker/Dockerfile.svg | 704 ++++++++++-------- docker/docker-bake-cuda.hcl | 8 + 6 files changed, 536 insertions(+), 344 deletions(-) diff --git a/.github/actions/docker-build-and-push-cuda/action.yaml b/.github/actions/docker-build-and-push-cuda/action.yaml index 5bf46d0cc17..c64be7e3786 100644 --- a/.github/actions/docker-build-and-push-cuda/action.yaml +++ b/.github/actions/docker-build-and-push-cuda/action.yaml @@ -15,6 +15,19 @@ inputs: runs: using: composite steps: + - name: Install jq and vcstool + run: | + sudo apt-get -y update + sudo apt-get -y install jq python3-pip + pip install --no-cache-dir vcstool + shell: bash + + - name: Run vcs import + run: | + mkdir src + vcs import src < autoware.repos + shell: bash + - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 @@ -51,6 +64,18 @@ runs: run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT shell: bash + - name: Docker meta for autoware:base-cuda + id: meta-base-cuda + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + tags: | + type=raw,value=base-cuda-${{ inputs.platform }} + type=raw,value=base-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + bake-target: docker-metadata-action-base-cuda + flavor: | + latest=false + - name: Docker meta for autoware:universe-sensing-perception-devel-cuda id: meta-universe-sensing-perception-devel-cuda uses: docker/metadata-action@v5 @@ -112,6 +137,7 @@ runs: push: true files: | docker/docker-bake-cuda.hcl + ${{ steps.meta-base-cuda.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception-devel-cuda.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception-cuda.outputs.bake-file }} ${{ steps.meta-universe-devel-cuda.outputs.bake-file }} diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index 5fd899aaac1..e8eba9440fe 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -61,6 +61,39 @@ jobs: *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-${{ github.ref_name }},mode=max + - name: Show disk space + if: always() + run: | + df -h + + docker-build-and-push-cuda: + needs: [load-env, docker-build-and-push] + runs-on: [self-hosted, linux, ARM64] + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Free disk space + uses: ./.github/actions/free-disk-space + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + *.env + *.repos + .github/actions/docker-build-and-push/action.yaml + .github/workflows/docker-build-and-push*.yaml + ansible-galaxy-requirements.yaml + ansible/** + docker/** + - name: Build 'Autoware' with CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 9815aa170f3..ad185aac5c5 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -56,6 +56,39 @@ jobs: *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-main *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-${{ github.ref_name }},mode=max + - name: Show disk space + if: always() + run: | + df -h + + docker-build-and-push-cuda: + needs: [load-env, docker-build-and-push] + runs-on: ubuntu-22.04 + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Free disk space + uses: ./.github/actions/free-disk-space + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + *.env + *.repos + .github/actions/docker-build-and-push/action.yaml + .github/workflows/docker-build-and-push*.yaml + ansible-galaxy-requirements.yaml + ansible/** + docker/** + - name: Build 'Autoware' with CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || diff --git a/docker/Dockerfile b/docker/Dockerfile index 19bb14cf97d..e5025e5d38a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -35,6 +35,16 @@ RUN chmod +x /ros_entrypoint.sh ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM base AS base-cuda +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Set up CUDA runtime environment and artifacts +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y --module base --download-artifacts --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache + # hadolint ignore=DL3006 FROM $BASE_IMAGE AS rosdep-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -258,6 +268,19 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM universe-common-devel AS universe-common-devel-cuda +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Set up CUDA development environment +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y --module all --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && apt-get autoremove -y && rm -rf "$HOME"/.cache + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM universe-common-devel AS universe-sensing-perception-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -290,17 +313,18 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM universe-sensing-perception-devel AS universe-sensing-perception-devel-cuda +FROM universe-common-devel-cuda AS universe-sensing-perception-devel-cuda SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" -# Set up CUDA development environment +# Install rosdep dependencies +COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-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-cuda-drivers openadkit \ - && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + apt-get update \ + && cat /tmp/rosdep-universe-sensing-perception-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 # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ @@ -328,6 +352,8 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && du -sh ${CCACHE_DIR} && ccache -s \ && rm -rf /autoware/build +COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware + ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -474,17 +500,19 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM universe-devel AS universe-devel-cuda +FROM universe-common-devel-cuda AS universe-devel-cuda SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Set up CUDA development environment +# Install rosdep dependencies +COPY --from=rosdep-universe-depend /rosdep-universe-depend-packages.txt /tmp/rosdep-universe-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-cuda-drivers openadkit \ - && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + 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 COPY --from=universe-sensing-perception-devel-cuda /opt/autoware /opt/autoware +COPY --from=universe-devel /opt/autoware /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -508,7 +536,8 @@ RUN --mount=type=ssh \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* @@ -521,17 +550,20 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM universe-sensing-perception AS universe-sensing-perception-cuda +FROM base-cuda AS universe-sensing-perception-cuda SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR -# Set up CUDA runtime environment and artifacts +# Set up runtime environment +COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-exec-depend-packages.txt /tmp/rosdep-universe-sensing-perception-exec-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 --download-artifacts --no-cuda-drivers --runtime openadkit \ + ./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-universe-sensing-perception-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ && find / -name "*.o" -type f -delete \ @@ -665,7 +697,8 @@ RUN --mount=type=ssh \ && find / -name "*.o" -type f -delete \ && find / -name "*.h" -type f -delete \ && find / -name "*.hpp" -type f -delete \ - && rm -rf /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ + && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ + /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ /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* @@ -678,17 +711,20 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM universe AS universe-cuda +FROM base-cuda AS universe-cuda SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR -# Set up CUDA runtime environment and artifacts +# Set up runtime environment +COPY --from=rosdep-universe-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 \ - ./setup-dev-env.sh -y --module all --download-artifacts --no-cuda-drivers --runtime openadkit \ + ./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-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ && apt-get autoremove -y && rm -rf "$HOME"/.cache \ && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ && find / -name "*.o" -type f -delete \ diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index 5d983ab1436..7ad00076c97 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -4,482 +4,538 @@ - - + + G - + cluster_legend - + key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  +FROM ...  +COPY --from=...  +RUN --mount=(.*)from=...  key2 -  -  -  +  +  +  key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + external_image_0 - -$BASE_IMAGE + +$BASE_IMAGE stage_0 - -base + +base external_image_0->stage_0 - - + + - + -stage_1 - -rosdep-depend +stage_2 + +rosdep-depend - + -external_image_0->stage_1 - - +external_image_0->stage_2 + + - + -stage_7 - -core-devel +stage_1 + +base-cuda - + -stage_0->stage_7 - - +stage_0->stage_1 + + - + -stage_16 - -universe-sensing-perception +stage_8 + +core-devel - + -stage_0->stage_16 - - +stage_0->stage_8 + + stage_18 - -universe-localization-mapping + +universe-sensing-perception stage_0->stage_18 - - - - - -stage_19 - -universe-planning-control - - - -stage_0->stage_19 - - + + + - + stage_20 - -universe-vehicle-system + +universe-localization-mapping - + stage_0->stage_20 - - + - + stage_21 - -universe + +universe-planning-control - + stage_0->stage_21 - - - - - + + - - -stage_1->stage_7 - - + + +stage_22 + +universe-vehicle-system - + + +stage_0->stage_22 + + + + -stage_2 - -rosdep-universe-sensing-perception-depend +stage_23 + +universe - + -stage_1->stage_2 - - +stage_0->stage_23 + + + + + + +stage_2->stage_8 + + - + stage_3 - -rosdep-universe-localization-mapping-depend + +rosdep-universe-sensing-perception-depend - - -stage_1->stage_3 - - - + + +stage_2->stage_3 + + - + stage_4 - -rosdep-universe-planning-control-depend + +rosdep-universe-localization-mapping-depend - - -stage_1->stage_4 - - + + +stage_2->stage_4 + + - + stage_5 - -rosdep-universe-vehicle-system-depend + +rosdep-universe-planning-control-depend - - -stage_1->stage_5 - - + + +stage_2->stage_5 + + - + stage_6 - -rosdep-universe-depend + +rosdep-universe-vehicle-system-depend - - -stage_1->stage_6 - - + + +stage_2->stage_6 + + - - -stage_8 - -universe-common-devel + + +stage_7 + +rosdep-universe-depend - + -stage_1->stage_8 - - - - - -stage_7->stage_8 - - - - - -stage_17 - -universe-sensing-perception-cuda - - - -stage_16->stage_17 - - - - - -stage_22 - -universe-cuda - - - -stage_21->stage_22 - - - - - -stage_2->stage_16 - - +stage_2->stage_7 + + + - + stage_9 - -universe-sensing-perception-devel + +universe-common-devel stage_2->stage_9 - - + + - - -stage_10 - -universe-sensing-perception-devel-cuda + + +stage_19 + +universe-sensing-perception-cuda - - -stage_2->stage_10 - - - + + +stage_1->stage_19 + + + + + +stage_24 + +universe-cuda + + + +stage_1->stage_24 + + + + + +stage_8->stage_9 + + stage_3->stage_18 - - + + + + + +stage_3->stage_19 + + - + stage_11 - -universe-localization-mapping-devel + +universe-sensing-perception-devel - + stage_3->stage_11 - - - - - -stage_4->stage_19 - - + + - + stage_12 - -universe-planning-control-devel - - - -stage_4->stage_12 - - - - - -stage_5->stage_20 - - + +universe-sensing-perception-devel-cuda + + + +stage_3->stage_12 + + + + + + +stage_4->stage_20 + + + - + stage_13 - -universe-vehicle-system-devel + +universe-localization-mapping-devel - - -stage_5->stage_13 - - + + +stage_4->stage_13 + + - - -stage_6->stage_21 - + + +stage_5->stage_21 + + - + stage_14 - -universe-devel + +universe-planning-control-devel + + + +stage_5->stage_14 + + + + + +stage_6->stage_22 + + + - - -stage_6->stage_14 - - + + +stage_15 + +universe-vehicle-system-devel - - -stage_8->stage_9 - - - - - -stage_8->stage_11 - - - - - -stage_8->stage_12 - - - - - -stage_8->stage_13 - - + + +stage_6->stage_15 + + - + -stage_8->stage_14 - - +stage_7->stage_23 + + - - -stage_9->stage_16 - - - - + -stage_9->stage_10 - - +stage_7->stage_24 + + + - - -stage_9->stage_14 - - + + +stage_16 + +universe-devel - - -stage_15 - -universe-devel-cuda + + +stage_7->stage_16 + + - + + +stage_17 + +universe-devel-cuda + + + +stage_7->stage_17 + + + + -stage_10->stage_15 - - +stage_9->stage_11 + + - + -stage_10->stage_17 - - +stage_9->stage_13 + + - + + +stage_9->stage_14 + + + + +stage_9->stage_15 + + + + + +stage_9->stage_16 + + + + + +stage_10 + +universe-common-devel-cuda + + + +stage_9->stage_10 + + + + + stage_11->stage_18 - - + + - - -stage_11->stage_14 - - + + +stage_11->stage_12 + + + + + +stage_11->stage_16 + + - + stage_12->stage_19 - - + + - - -stage_12->stage_14 - - + + +stage_12->stage_17 + + - + stage_13->stage_20 - - + + - - -stage_13->stage_14 - - + + +stage_13->stage_16 + + - + stage_14->stage_21 - - + + - - -stage_14->stage_15 - - + + +stage_14->stage_16 + + - + stage_15->stage_22 - - + + + + + +stage_15->stage_16 + + + + + +stage_16->stage_23 + + + + + +stage_16->stage_17 + + + + + +stage_17->stage_24 + + + + + +stage_10->stage_12 + + + + + +stage_10->stage_17 + + diff --git a/docker/docker-bake-cuda.hcl b/docker/docker-bake-cuda.hcl index 87aa27df879..44ec1142178 100644 --- a/docker/docker-bake-cuda.hcl +++ b/docker/docker-bake-cuda.hcl @@ -1,5 +1,6 @@ group "default" { targets = [ + "base-cuda", "universe-sensing-perception-devel-cuda", "universe-sensing-perception-cuda", "universe-devel-cuda", @@ -8,11 +9,18 @@ group "default" { } // For docker/metadata-action +target "docker-metadata-action-base-cuda" {} target "docker-metadata-action-universe-sensing-perception-devel-cuda" {} target "docker-metadata-action-universe-sensing-perception-cuda" {} target "docker-metadata-action-universe-devel-cuda" {} target "docker-metadata-action-universe-cuda" {} +target "base-cuda" { + inherits = ["docker-metadata-action-base-cuda"] + dockerfile = "docker/Dockerfile" + target = "base-cuda" +} + target "universe-sensing-perception-devel-cuda" { inherits = ["docker-metadata-action-universe-sensing-perception-devel-cuda"] dockerfile = "docker/Dockerfile" From e637867f30c970358abba99e8f058a2ad696d04d Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 12 Nov 2024 17:23:04 +0900 Subject: [PATCH 292/380] refactor(docker): replace the multiple `rosdep` commands with `resolve_rosdep_keys.sh`. (#5424) * run resolve_rosdep_keys.sh Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * update .dockerignore Signed-off-by: Yutaka Kondo * chmod +x Signed-off-by: Yutaka Kondo * fix location Signed-off-by: Yutaka Kondo * remove rosdep update Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .dockerignore | 1 + docker/Dockerfile | 74 +++++---------------------- docker/scripts/resolve_rosdep_keys.sh | 14 +++++ 3 files changed, 29 insertions(+), 60 deletions(-) create mode 100755 docker/scripts/resolve_rosdep_keys.sh diff --git a/.dockerignore b/.dockerignore index ac26bde50a1..679e11b25ef 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,6 +9,7 @@ # Ignore Docker files docker !docker/etc +!docker/scripts # Ignore a part of files under src src/**/.* diff --git a/docker/Dockerfile b/docker/Dockerfile index e5025e5d38a..846b8e63d7b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -52,6 +52,8 @@ ARG ROS_DISTRO COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ COPY ansible/ /autoware/ansible/ +COPY docker/scripts/resolve_rosdep_keys.sh /autoware/resolve_rosdep_keys.sh +RUN chmod +x /autoware/resolve_rosdep_keys.sh WORKDIR /autoware RUN rm -f /etc/apt/apt.conf.d/docker-clean \ @@ -64,21 +66,13 @@ RUN --mount=type=ssh \ # 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 \ +RUN rosdep update && /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-core-depend-packages.txt \ && cat /rosdep-core-depend-packages.txt COPY src/universe/external /autoware/src/universe/external COPY src/universe/autoware.universe/common /autoware/src/universe/autoware.universe/common -RUN rosdep keys --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-common-depend-packages.txt \ && cat /rosdep-universe-common-depend-packages.txt @@ -88,18 +82,10 @@ ARG ROS_DISTRO COPY src/universe/autoware.universe/perception /autoware/src/universe/autoware.universe/perception COPY src/universe/autoware.universe/sensing /autoware/src/universe/autoware.universe/sensing -RUN rosdep keys --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-sensing-perception-depend-packages.txt \ && cat /rosdep-universe-sensing-perception-depend-packages.txt -RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-sensing-perception-exec-depend-packages.txt \ && cat /rosdep-universe-sensing-perception-exec-depend-packages.txt @@ -109,18 +95,10 @@ ARG ROS_DISTRO COPY src/universe/autoware.universe/localization /autoware/src/universe/autoware.universe/localization COPY src/universe/autoware.universe/map /autoware/src/universe/autoware.universe/map -RUN rosdep keys --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-localization-mapping-depend-packages.txt \ && cat /rosdep-universe-localization-mapping-depend-packages.txt -RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-localization-mapping-exec-depend-packages.txt \ && cat /rosdep-universe-localization-mapping-exec-depend-packages.txt @@ -135,18 +113,10 @@ COPY src/universe/autoware.universe/map/map_loader /autoware/src/universe/autowa COPY src/universe/autoware.universe/map/autoware_map_projection_loader /autoware/src/universe/autoware.universe/map/autoware_map_projection_loader COPY src/universe/autoware.universe/sensing/autoware_pcl_extensions /autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions COPY src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor /autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor -RUN rosdep keys --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-planning-control-depend-packages.txt \ && cat /rosdep-universe-planning-control-depend-packages.txt -RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-planning-control-exec-depend-packages.txt \ && cat /rosdep-universe-planning-control-exec-depend-packages.txt @@ -158,18 +128,10 @@ COPY src/universe/autoware.universe/vehicle /autoware/src/universe/autoware.univ COPY src/universe/autoware.universe/system /autoware/src/universe/autoware.universe/system COPY src/universe/autoware.universe/map/autoware_map_height_fitter /autoware/src/universe/autoware.universe/map/autoware_map_height_fitter COPY src/universe/autoware.universe/localization/autoware_pose2twist /autoware/src/universe/autoware.universe/localization/autoware_pose2twist -RUN rosdep keys --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-vehicle-system-depend-packages.txt \ && cat /rosdep-universe-vehicle-system-depend-packages.txt -RUN rosdep keys --dependency-types=exec --ignore-src --from-paths src \ - | xargs rosdep resolve --rosdistro ${ROS_DISTRO} \ - | grep -v '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-vehicle-system-exec-depend-packages.txt \ && cat /rosdep-universe-vehicle-system-exec-depend-packages.txt @@ -183,19 +145,11 @@ 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 \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /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 '^#' \ - | sed 's/ \+/\n/g'\ - | sort \ +RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-exec-depend-packages.txt \ && cat /rosdep-exec-depend-packages.txt diff --git a/docker/scripts/resolve_rosdep_keys.sh b/docker/scripts/resolve_rosdep_keys.sh new file mode 100755 index 00000000000..1615e9f68fe --- /dev/null +++ b/docker/scripts/resolve_rosdep_keys.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +function resolve_rosdep_keys() { + local src_path=$1 + local ros_distro=$2 + + rosdep keys --ignore-src --from-paths "$src_path" | + xargs rosdep resolve --rosdistro "$ros_distro" | + grep -v '^#' | + sed 's/ \+/\n/g' | + sort +} + +resolve_rosdep_keys "$@" From 7aed5b59a40dd2c1e963df3e26d752c8cc4efe7e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 12 Nov 2024 18:14:01 +0900 Subject: [PATCH 293/380] refactor(docker): replace the multiple `colcon` commands with `build_and_clean.sh`. (#5425) * run resolve_rosdep_keys.sh Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * update .dockerignore Signed-off-by: Yutaka Kondo * chmod +x Signed-off-by: Yutaka Kondo * fix location Signed-off-by: Yutaka Kondo * remove rosdep update Signed-off-by: Yutaka Kondo * run build_and_clean.sh Signed-off-by: Yutaka Kondo * style(pre-commit): autofix --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docker/Dockerfile | 83 ++++--------------------------- docker/scripts/build_and_clean.sh | 18 +++++++ 2 files changed, 29 insertions(+), 72 deletions(-) create mode 100755 docker/scripts/build_and_clean.sh diff --git a/docker/Dockerfile b/docker/Dockerfile index 846b8e63d7b..40165e5c5f8 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -158,6 +158,9 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" +COPY docker/scripts/build_and_clean.sh /autoware/build_and_clean.sh +RUN chmod +x /autoware/build_and_clean.sh + # Set up development environment and tools RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ @@ -177,15 +180,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/core,target=/autoware/src/core \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build /autoware/log + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -209,15 +204,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-depend,source=/autoware/src/universe/external,target=/autoware/src/universe/external \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build /autoware/log + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -254,15 +241,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build /autoware/log + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -296,15 +275,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_cuda_utils,target=/autoware/src/universe/autoware.universe/sensing/autoware_cuda_utils \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware @@ -330,15 +301,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-localization-mapping-depend,source=/autoware/src/universe/autoware.universe/map,target=/autoware/src/universe/autoware.universe/map \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build /autoware/log + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware FROM universe-common-devel AS universe-planning-control-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -364,15 +327,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor,target=/autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build /autoware/log + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -398,15 +353,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-vehicle-system-depend,source=/autoware/src/universe/autoware.universe/localization/autoware_pose2twist,target=/autoware/src/universe/autoware.universe/localization/autoware_pose2twist \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build /autoware/log + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -441,15 +388,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/vehicle,target=/autoware/src/vehicle \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && colcon build --cmake-args \ - " -Wno-dev" \ - " --no-warn-unused-cli" \ - --merge-install \ - --install-base /opt/autoware \ - --mixin release compile-commands ccache \ - && du -sh ${CCACHE_DIR} && ccache -s \ - && rm -rf /autoware/build /autoware/log + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] diff --git a/docker/scripts/build_and_clean.sh b/docker/scripts/build_and_clean.sh new file mode 100755 index 00000000000..53c968ef722 --- /dev/null +++ b/docker/scripts/build_and_clean.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +function build_and_clean() { + local ccache_dir=$1 + local install_base=$2 + + du -sh "$ccache_dir" && ccache -s && + colcon build --cmake-args \ + " -Wno-dev" \ + " --no-warn-unused-cli" \ + --merge-install \ + --install-base "$install_base" \ + --mixin release compile-commands ccache && + du -sh "$ccache_dir" && ccache -s && + rm -rf /autoware/build /autoware/log +} + +build_and_clean "$@" From fb38f169b2d9b3b514f1ee10599882c06be56c76 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 12 Nov 2024 20:11:50 +0900 Subject: [PATCH 294/380] refactor(docker): replace the multiple `rm -rf` commands with `cleanup_system.sh`. (#5426) --- docker/Dockerfile | 72 ++++---------------------------- docker/scripts/cleanup_system.sh | 18 ++++++++ 2 files changed, 27 insertions(+), 63 deletions(-) create mode 100755 docker/scripts/cleanup_system.sh diff --git a/docker/Dockerfile b/docker/Dockerfile index 40165e5c5f8..5534205363e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,6 +19,8 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ # Copy files COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ COPY ansible/ /autoware/ansible/ +COPY docker/scripts/cleanup_system.sh /autoware/cleanup_system.sh +RUN chmod +x /autoware/cleanup_system.sh WORKDIR /autoware # Set up base environment @@ -424,15 +426,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-universe-sensing-perception-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ - && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ - && find / -name "*.o" -type f -delete \ - && find / -name "*.h" -type f -delete \ - && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ - /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* + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware @@ -457,15 +451,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-universe-sensing-perception-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ - && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ - && find / -name "*.o" -type f -delete \ - && find / -name "*.h" -type f -delete \ - && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ - /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* + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO COPY --from=universe-sensing-perception-devel-cuda /opt/autoware /opt/autoware @@ -486,15 +472,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-universe-localization-mapping-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ - && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ - && find / -name "*.o" -type f -delete \ - && find / -name "*.h" -type f -delete \ - && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ - /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* + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO COPY --from=universe-localization-mapping-devel /opt/autoware /opt/autoware @@ -519,15 +497,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-universe-planning-control-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ - && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ - && find / -name "*.o" -type f -delete \ - && find / -name "*.h" -type f -delete \ - && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ - /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* + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO COPY --from=universe-planning-control-devel /opt/autoware /opt/autoware @@ -552,15 +522,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-universe-vehicle-system-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ - && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ - && find / -name "*.o" -type f -delete \ - && find / -name "*.h" -type f -delete \ - && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ - /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* + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO COPY --from=universe-vehicle-system-devel /opt/autoware /opt/autoware @@ -585,15 +547,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ - && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ - && find / -name "*.o" -type f -delete \ - && find / -name "*.h" -type f -delete \ - && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ - /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* + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO COPY --from=universe-devel /opt/autoware /opt/autoware @@ -618,15 +572,7 @@ RUN --mount=type=ssh \ && pip uninstall -y ansible ansible-core \ && apt-get update \ && cat /tmp/rosdep-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ - && find /usr/lib/$LIB_DIR-linux-gnu -name "*.a" -type f -delete \ - && find / -name "*.o" -type f -delete \ - && find / -name "*.h" -type f -delete \ - && find / -name "*.hpp" -type f -delete \ - && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ROS_DISTRO"/include /etc/apt/sources.list.d/cuda*.list \ - /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* + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO COPY --from=universe-devel-cuda /opt/autoware /opt/autoware diff --git a/docker/scripts/cleanup_system.sh b/docker/scripts/cleanup_system.sh new file mode 100755 index 00000000000..1e8d911becc --- /dev/null +++ b/docker/scripts/cleanup_system.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +function cleanup_system() { + local lib_dir=$1 + local ros_distro=$2 + + apt-get autoremove -y && rm -rf "$HOME"/.cache && + find /usr/lib/"$lib_dir"-linux-gnu -name "*.a" -type f -delete && + find / -name "*.o" -type f -delete && + find / -name "*.h" -type f -delete && + find / -name "*.hpp" -type f -delete && + rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ + /root/.local/pipx /opt/ros/"$ros_distro"/include /etc/apt/sources.list.d/cuda*.list \ + /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* +} + +cleanup_system "$@" From 98a9ab5417f5b800508d001316c82776d09565af Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 12 Nov 2024 21:11:02 +0900 Subject: [PATCH 295/380] fix(.github): fix `target-image` (#5428) fix target-image Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push-cuda/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/docker-build-and-push-cuda/action.yaml b/.github/actions/docker-build-and-push-cuda/action.yaml index c64be7e3786..fc28683d892 100644 --- a/.github/actions/docker-build-and-push-cuda/action.yaml +++ b/.github/actions/docker-build-and-push-cuda/action.yaml @@ -68,7 +68,7 @@ runs: id: meta-base-cuda uses: docker/metadata-action@v5 with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.bake-target }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=base-cuda-${{ inputs.platform }} type=raw,value=base-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} From 4408c542be1d6b0d40fb6ab7247850dbc7ac670f Mon Sep 17 00:00:00 2001 From: Esteve Fernandez <33620+esteve@users.noreply.github.com> Date: Tue, 12 Nov 2024 16:15:28 +0100 Subject: [PATCH 296/380] chore: remove tvm_utility artifacts from Ansible tasks (#5427) Signed-off-by: Esteve Fernandez --- ansible/roles/artifacts/tasks/main.yaml | 26 ------------------------- 1 file changed, 26 deletions(-) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index 02825a0d041..c4f7ede0089 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -402,29 +402,3 @@ dest: "{{ data_dir }}/traffic_light_fine_detector/tlr_labels.txt" mode: "644" checksum: sha256:a2a91f5fe9c2e68e3e3647a272bb9bb25cd07631a1990a3fb15efddce7691131 - -# tvm_utility -- name: Create tvm_utility/models directory inside {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/tvm_utility/models" - mode: "755" - state: directory - -- name: Download yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz - become: true - ansible.builtin.get_url: - url: https://autoware-modelzoo.s3.us-east-2.amazonaws.com/models/3.0.0-20221221/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz - dest: "{{ data_dir }}/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz" - mode: "644" - checksum: sha256:66b3ca668e577393b657fbe1ed626538d89ca3adccd5862de6c7fa190238dbca - -- name: Create yolo_v2_tiny folder in tvm_utility/models of {{ data_dir }} - ansible.builtin.file: - path: "{{ data_dir }}/tvm_utility/models/yolo_v2_tiny" - mode: "755" - state: directory - -- name: Extract yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz - ansible.builtin.unarchive: - src: "{{ data_dir }}/tvm_utility/yolo_v2_tiny-x86_64-llvm-3.0.0-20221221.tar.gz" - dest: "{{ data_dir }}/tvm_utility/models/yolo_v2_tiny" From 35911067370ca0130608f1fec3eafaab2a4ce8e6 Mon Sep 17 00:00:00 2001 From: Yukinari Hisaki <42021302+yhisaki@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:17:28 +0900 Subject: [PATCH 297/380] feat(.clang-tidy): add ExtraArgs (#5439) Signed-off-by: Y.Hisaki --- .clang-tidy | 3 +++ .clang-tidy-ci | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.clang-tidy b/.clang-tidy index 06c54854b5d..f5eccdf3cc7 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -202,6 +202,9 @@ WarningsAsErrors: " HeaderFilterRegex: ^(?!\/usr)(?!\/opt) +ExtraArgs: + - -std=c++17 + FormatStyle: none CheckOptions: diff --git a/.clang-tidy-ci b/.clang-tidy-ci index 04a9f8bacce..c6dfcdb37c7 100644 --- a/.clang-tidy-ci +++ b/.clang-tidy-ci @@ -225,6 +225,9 @@ WarningsAsErrors: " HeaderFilterRegex: ^(?!\/usr)(?!\/opt) +ExtraArgs: + - -std=c++17 + CheckOptions: - key: bugprone-argument-comment.CommentBoolLiterals value: "0" From d1cae7e0a35bdead9619a859738be17d1387f148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Mon, 18 Nov 2024 12:01:17 +0300 Subject: [PATCH 298/380] docs(ansible): update role readme files (#5443) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- ansible/roles/cuda/README.md | 34 +++++++++++++++++++++++-------- ansible/roles/dev_tools/README.md | 25 ++++++++--------------- ansible/roles/tensorrt/README.md | 22 +++++++------------- 3 files changed, 42 insertions(+), 39 deletions(-) diff --git a/ansible/roles/cuda/README.md b/ansible/roles/cuda/README.md index 57d638d1187..d669c573e91 100644 --- a/ansible/roles/cuda/README.md +++ b/ansible/roles/cuda/README.md @@ -1,6 +1,6 @@ # cuda -This role installs [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) following [this page](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network) and [this page](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions). +This role installs [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) following [this page](https://developer.nvidia.com/cuda-12-3-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network) and [this page](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions). This role also registers Vulkan, OpenGL, and OpenCL GPU vendors for future use. @@ -13,22 +13,36 @@ This role also registers Vulkan, OpenGL, and OpenCL GPU vendors for future use. ## Manual Installation -Follow these instructions to download and install the CUDA Toolkit and the corresponding NVIDIA Driver for Ubuntu 20.04. +### Version compatibility -For Universe, the `cuda_version` version can also be found in: -[../../playbooks/universe.yaml](../../playbooks/universe.yaml) +Autoware currently uses CUDA `12.3` and from this [CUDA Application Compatibility Support Matrix](https://docs.nvidia.com/deploy/cuda-compatibility/#use-the-right-compat-package) that only the NVIDIA driver version `545` is compatible with this version of CUDA. + +#### 🛠️ For Advanced Users + +⚠️ **Proceed with caution**: Avoid removing essential system components. + +To prevent conflicts during NVIDIA installation, we recommend completely removing old NVIDIA Drivers and CUDA by following this guide: [How can I uninstall a NVIDIA driver completely?](https://askubuntu.com/a/206289/761440). + +- **Important**: If you remove the previous NVIDIA drivers, ensure you install the recommended versions listed below **before restarting your system**. + +Once the drivers are installed correctly, you may safely restart your system. + +### CUDA Toolkit and Driver + +Follow these instructions to download and install the CUDA Toolkit. + +From: ```bash wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# From: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#network-repo-installation-for-ubuntu - os=ubuntu2204 wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$(uname -m)/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}") -sudo apt-get -y install cuda-${cuda_version_dashed} +sudo apt-get -y install cuda-toolkit-${cuda_version_dashed} +sudo apt-get install -y cuda-drivers-545 ``` Perform the post installation actions: @@ -37,9 +51,13 @@ Perform the post installation actions: # Taken from: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc +``` + +### GPU Vendors -# Register Vulkan, OpenGL, and OpenCL GPU vendors +Register Vulkan, OpenGL, and OpenCL GPU vendors following the instructions below. +```bash # Create Vulkan directory sudo mkdir -p /etc/vulkan/icd.d sudo chmod 0755 /etc/vulkan/icd.d diff --git a/ansible/roles/dev_tools/README.md b/ansible/roles/dev_tools/README.md index 145c70f020b..89d51fbdc3b 100644 --- a/ansible/roles/dev_tools/README.md +++ b/ansible/roles/dev_tools/README.md @@ -12,34 +12,27 @@ This role installs optional development tools for Autoware. ## Inputs -| Name | Required | Description | -| ------------- | -------- | --------------------------------------- | -| clang-version | true | The version of clang-format to install. | -| ros-distro | true | The ROS distribution. | +| Name | Required | Description | +| ------------------------------- | -------- | --------------------------------------- | +| pre_commit_clang_format_version | true | The version of clang-format to install. | +| rosdistro | true | The ROS distribution. | ## Manual Installation ```bash -#!/bin/bash +# For the environment variables +wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# Update package lists sudo apt-get update -# Install Git LFS +sudo apt install python3-pip +sudo apt-get install -y golang +sudo apt-get install -y ros-${rosdistro}-plotjuggler-ros sudo apt-get install -y git-lfs # Setup Git LFS git lfs install -# Install pre-commit using pip3 pip3 install pre-commit - -# Install a specific version of clang-format using pip3 pip3 install clang-format==${pre_commit_clang_format_version} - -# Install Go -sudo apt-get install -y golang - -# Install PlotJuggler -sudo apt-get install -y ros-${ROS_DISTRO}-plotjuggler-ros ``` diff --git a/ansible/roles/tensorrt/README.md b/ansible/roles/tensorrt/README.md index 1df87cad89e..2a6c7d39232 100644 --- a/ansible/roles/tensorrt/README.md +++ b/ansible/roles/tensorrt/README.md @@ -1,6 +1,6 @@ # tensorrt -This role installs TensorRT and cuDNN following [this page](https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing). +This role installs TensorRT and cuDNN following [the official NVIDIA TensorRT Installation Guide](https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing). ## Inputs @@ -11,29 +11,16 @@ This role installs TensorRT and cuDNN following [this page](https://docs.nvidia. ## Manual Installation -For Universe, the `cudnn_version` and `tensorrt_version` variables should be copied from -[amd64.env](../../../amd64.env) or [arm64.env](../../../arm64.env) depending on the architecture used. - ```bash +# For the environment variables wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env -# Can also be found at: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing - sudo apt-get install -y \ libcudnn8=${cudnn_version} \ libnvinfer8=${tensorrt_version} \ libnvinfer-plugin8=${tensorrt_version} \ libnvparsers8=${tensorrt_version} \ libnvonnxparsers8=${tensorrt_version} \ - -sudo apt-mark hold \ -libcudnn8 \ -libnvinfer8 \ -libnvinfer-plugin8 \ -libnvparsers8 \ -libnvonnxparsers8 - -sudo apt-get install -y \ libcudnn8-dev=${cudnn_version} \ libnvinfer-dev=${tensorrt_version} \ libnvinfer-plugin-dev=${tensorrt_version} \ @@ -43,6 +30,11 @@ libnvparsers-dev=${tensorrt_version} \ libnvonnxparsers-dev=${tensorrt_version} sudo apt-mark hold \ +libcudnn8 \ +libnvinfer8 \ +libnvinfer-plugin8 \ +libnvparsers8 \ +libnvonnxparsers8 \ libcudnn8-dev \ libnvinfer-dev \ libnvinfer-plugin-dev \ From ef7a992c52f54269a8b7773f6d26c218ec6081dd Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 18 Nov 2024 18:14:38 +0900 Subject: [PATCH 299/380] refactor(docker): replace the multiple `apt-get autoremove` commands with `cleanup_apt.sh`. (#5447) --- docker/Dockerfile | 56 +++++++++++++++++++++-------------- docker/scripts/cleanup_apt.sh | 11 +++++++ 2 files changed, 45 insertions(+), 22 deletions(-) create mode 100755 docker/scripts/cleanup_apt.sh diff --git a/docker/Dockerfile b/docker/Dockerfile index 5534205363e..1bf5b246c4b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -5,6 +5,15 @@ FROM $BASE_IMAGE AS base 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/ +COPY docker/scripts/cleanup_apt.sh /autoware/cleanup_apt.sh +RUN chmod +x /autoware/cleanup_apt.sh +COPY docker/scripts/cleanup_system.sh /autoware/cleanup_system.sh +RUN chmod +x /autoware/cleanup_system.sh +WORKDIR /autoware + # Install apt packages and add GitHub to known hosts for private repositories 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 @@ -12,23 +21,16 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ gosu \ ssh \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && /autoware/cleanup_apt.sh \ && mkdir -p ~/.ssh \ && ssh-keyscan github.com >> ~/.ssh/known_hosts -# Copy files -COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ -COPY ansible/ /autoware/ansible/ -COPY docker/scripts/cleanup_system.sh /autoware/cleanup_system.sh -RUN chmod +x /autoware/cleanup_system.sh -WORKDIR /autoware - # Set up base environment RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ ./setup-dev-env.sh -y --module base --no-nvidia --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache \ + && /autoware/cleanup_apt.sh \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc # Create entrypoint @@ -45,7 +47,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module base --download-artifacts --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && /autoware/cleanup_apt.sh true # hadolint ignore=DL3006 FROM $BASE_IMAGE AS rosdep-depend @@ -54,6 +56,8 @@ ARG ROS_DISTRO COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /autoware/ COPY ansible/ /autoware/ansible/ +COPY docker/scripts/cleanup_apt.sh /autoware/cleanup_apt.sh +RUN chmod +x /autoware/cleanup_apt.sh COPY docker/scripts/resolve_rosdep_keys.sh /autoware/resolve_rosdep_keys.sh RUN chmod +x /autoware/resolve_rosdep_keys.sh WORKDIR /autoware @@ -64,7 +68,7 @@ RUN --mount=type=ssh \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ ./setup-dev-env.sh -y rosdep \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && /autoware/cleanup_apt.sh # Generate install package lists COPY src/core /autoware/src/core @@ -169,7 +173,7 @@ RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module all --no-nvidia --no-cuda-drivers openadkit \ && ./setup-dev-env.sh -y --module dev-tools openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && /autoware/cleanup_apt.sh # Install rosdep dependencies COPY --from=rosdep-depend /rosdep-core-depend-packages.txt /tmp/rosdep-core-depend-packages.txt @@ -177,7 +181,7 @@ COPY --from=rosdep-depend /rosdep-core-depend-packages.txt /tmp/rosdep-core-depe RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && cat /tmp/rosdep-core-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && /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 \ @@ -196,9 +200,10 @@ ENV CCACHE_DIR="/root/.ccache" COPY --from=rosdep-depend /rosdep-universe-common-depend-packages.txt /tmp/rosdep-universe-common-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && cat /tmp/rosdep-universe-common-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 + && /autoware/cleanup_apt.sh # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ @@ -219,7 +224,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN --mount=type=ssh \ ./setup-dev-env.sh -y --module all --no-cuda-drivers --runtime openadkit \ && pip uninstall -y ansible ansible-core \ - && apt-get autoremove -y && rm -rf "$HOME"/.cache + && /autoware/cleanup_apt.sh true ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] @@ -233,9 +238,10 @@ ENV CCACHE_DIR="/root/.ccache" COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && cat /tmp/rosdep-universe-sensing-perception-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 + && /autoware/cleanup_apt.sh # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ @@ -257,9 +263,10 @@ ENV CCACHE_DIR="/root/.ccache" COPY --from=rosdep-universe-sensing-perception-depend /rosdep-universe-sensing-perception-depend-packages.txt /tmp/rosdep-universe-sensing-perception-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && cat /tmp/rosdep-universe-sensing-perception-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 + && /autoware/cleanup_apt.sh # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ @@ -293,9 +300,10 @@ ENV CCACHE_DIR="/root/.ccache" COPY --from=rosdep-universe-localization-mapping-depend /rosdep-universe-localization-mapping-depend-packages.txt /tmp/rosdep-universe-localization-mapping-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && cat /tmp/rosdep-universe-localization-mapping-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 + && /autoware/cleanup_apt.sh # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ @@ -314,9 +322,10 @@ ENV CCACHE_DIR="/root/.ccache" COPY --from=rosdep-universe-planning-control-depend /rosdep-universe-planning-control-depend-packages.txt /tmp/rosdep-universe-planning-control-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && cat /tmp/rosdep-universe-planning-control-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 + && /autoware/cleanup_apt.sh # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ @@ -343,9 +352,10 @@ ENV CCACHE_DIR="/root/.ccache" COPY --from=rosdep-universe-vehicle-system-depend /rosdep-universe-vehicle-system-depend-packages.txt /tmp/rosdep-universe-vehicle-system-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ apt-get update \ && cat /tmp/rosdep-universe-vehicle-system-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 + && /autoware/cleanup_apt.sh # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ @@ -369,9 +379,10 @@ ENV CCACHE_DIR="/root/.ccache" COPY --from=rosdep-universe-depend /rosdep-universe-depend-packages.txt /tmp/rosdep-universe-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ 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 + && /autoware/cleanup_apt.sh COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware COPY --from=universe-localization-mapping-devel /opt/autoware /opt/autoware @@ -402,9 +413,10 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] COPY --from=rosdep-universe-depend /rosdep-universe-depend-packages.txt /tmp/rosdep-universe-depend-packages.txt # hadolint ignore=SC2002 RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ 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 + && /autoware/cleanup_apt.sh COPY --from=universe-sensing-perception-devel-cuda /opt/autoware /opt/autoware COPY --from=universe-devel /opt/autoware /opt/autoware diff --git a/docker/scripts/cleanup_apt.sh b/docker/scripts/cleanup_apt.sh new file mode 100755 index 00000000000..883df9ba8af --- /dev/null +++ b/docker/scripts/cleanup_apt.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +function cleanup() { + local remove_var_lib_apt_lists=false + apt-get autoremove -y && rm -rf "$HOME"/.cache + if "$remove_var_lib_apt_lists"; then + rm -rf /var/lib/apt/lists/* + fi +} + +cleanup "$@" From 0dd08838d0ebc154bf698ee1b8d157a456eb044f Mon Sep 17 00:00:00 2001 From: oguzkaganozt Date: Mon, 18 Nov 2024 16:49:04 +0300 Subject: [PATCH 300/380] fix(docker): add autoware prefix to map_loader (#5451) add autoware prefix to map_loader Signed-off-by: Oguz Ozturk --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 1bf5b246c4b..f6338b4a171 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -115,7 +115,7 @@ ARG ROS_DISTRO COPY src/universe/autoware.universe/control /autoware/src/universe/autoware.universe/control COPY src/universe/autoware.universe/planning /autoware/src/universe/autoware.universe/planning # TODO(youtalk): Remove COPYs when https://github.com/autowarefoundation/autoware.universe/issues/8805 is resolved -COPY src/universe/autoware.universe/map/map_loader /autoware/src/universe/autoware.universe/map/map_loader +COPY src/universe/autoware.universe/map/autoware_map_loader /autoware/src/universe/autoware.universe/map/autoware_map_loader COPY src/universe/autoware.universe/map/autoware_map_projection_loader /autoware/src/universe/autoware.universe/map/autoware_map_projection_loader COPY src/universe/autoware.universe/sensing/autoware_pcl_extensions /autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions COPY src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor /autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor @@ -332,7 +332,7 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/control,target=/autoware/src/universe/autoware.universe/control \ --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/planning,target=/autoware/src/universe/autoware.universe/planning \ # TODO(youtalk): Remove --mount options when https://github.com/autowarefoundation/autoware.universe/issues/8805 is resolved - --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/map/map_loader,target=/autoware/src/universe/autoware.universe/map/map_loader \ + --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/map/autoware_map_loader,target=/autoware/src/universe/autoware.universe/map/autoware_map_loader \ --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/map/autoware_map_projection_loader,target=/autoware/src/universe/autoware.universe/map/autoware_map_projection_loader \ --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions,target=/autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions \ --mount=type=bind,from=rosdep-universe-planning-control-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor,target=/autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor \ From 39f266a55269e8cfa1ad7d04d8495bded13da48a Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 19 Nov 2024 11:56:12 +0900 Subject: [PATCH 301/380] fix(docker): install CUDA developement libraries into `-devel-cuda` images (#5446) * remove --runtime option Signed-off-by: Yutaka Kondo * add cleanup_aptget Signed-off-by: Yutaka Kondo * chmod +x Signed-off-by: Yutaka Kondo * use script Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * install to rosdep stage Signed-off-by: Yutaka Kondo * fix spell check Signed-off-by: Yutaka Kondo * MUST REVERT Signed-off-by: Yutaka Kondo * change order Signed-off-by: Yutaka Kondo * Revert "MUST REVERT" This reverts commit 3fb57f620876b2a7f8f00a797370d52eaa25d1dd. --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index f6338b4a171..8e9c9532a98 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -222,7 +222,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Set up CUDA development environment # hadolint ignore=SC2002 RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module all --no-cuda-drivers --runtime openadkit \ + ./setup-dev-env.sh -y --module all --no-cuda-drivers openadkit \ && pip uninstall -y ansible ansible-core \ && /autoware/cleanup_apt.sh true @@ -268,6 +268,8 @@ RUN --mount=type=ssh \ && cat /tmp/rosdep-universe-sensing-perception-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ && /autoware/cleanup_apt.sh +COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware + # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ # TODO(youtalk): Move CUDA related packages into a dedicated directory @@ -286,8 +288,6 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ && source /opt/autoware/setup.bash \ && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware -COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware - ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] From abb6b8d3061b5416f0b02ec41d57069aca289ef5 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 19 Nov 2024 21:05:57 +0900 Subject: [PATCH 302/380] feat: introduce `autoware-nightly.repos` (#5440) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add autoware-nightly.repos Signed-off-by: Yutaka Kondo * add health-check-nightly Signed-off-by: Yutaka Kondo * fix inputs Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * change chache condition Signed-off-by: Yutaka Kondo * update .repos Signed-off-by: Yutaka Kondo * vcs import with multiple repos files Signed-off-by: Yutaka Kondo * fix conditions Signed-off-by: Yutaka Kondo * refine Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * remove comment Signed-off-by: Yutaka Kondo * wip Signed-off-by: Yutaka Kondo * Revert "wip" This reverts commit 65e89d1e32a1f591204d5004b1dddd87af99950f. * wip Signed-off-by: Yutaka Kondo * Update action.yaml Co-authored-by: M. Fatih Cırıt --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: M. Fatih Cırıt --- .github/actions/docker-build/action.yaml | 18 +++++-- .github/workflows/health-check-nightly.yaml | 58 +++++++++++++++++++++ autoware-nightly.repos | 37 +++++++++++++ 3 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/health-check-nightly.yaml create mode 100644 autoware-nightly.repos diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 9a6a6e7e140..df338a836d0 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -8,6 +8,10 @@ inputs: cache-tag-suffix: description: Suffix of the target cache tag. required: true + additional-repos: + description: Additional target .repos file. + default: "" + required: false build-args: description: Additional build args. required: false @@ -31,9 +35,15 @@ runs: vcs import src < autoware.repos shell: bash + - name: Import additional repositories + if: ${{ inputs.additional-repos != '' }} + run: | + vcs import src < ${{ inputs.additional-repos }} + shell: bash + - name: Cache ccache uses: actions/cache@v4 - if: ${{ github.ref == 'refs/heads/main' }} + if: ${{ github.ref == 'refs/heads/main' && inputs.additional-repos == '' }} id: cache-ccache with: path: | @@ -44,7 +54,7 @@ runs: - name: Cache apt-get uses: actions/cache@v4 - if: ${{ github.ref == 'refs/heads/main' }} + if: ${{ github.ref == 'refs/heads/main' && inputs.additional-repos == '' }} id: cache-apt-get with: path: | @@ -55,7 +65,7 @@ runs: - name: Restore ccache uses: actions/cache/restore@v4 - if: ${{ github.ref != 'refs/heads/main' }} + if: ${{ github.ref != 'refs/heads/main' || inputs.additional-repos != '' }} with: path: | root-ccache @@ -65,7 +75,7 @@ runs: - name: Restore apt-get uses: actions/cache/restore@v4 - if: ${{ github.ref != 'refs/heads/main' }} + if: ${{ github.ref != 'refs/heads/main' || inputs.additional-repos != '' }} with: path: | var-cache-apt diff --git a/.github/workflows/health-check-nightly.yaml b/.github/workflows/health-check-nightly.yaml new file mode 100644 index 00000000000..f38836e5d1b --- /dev/null +++ b/.github/workflows/health-check-nightly.yaml @@ -0,0 +1,58 @@ +name: health-check-nightly + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - labeled + schedule: + - cron: 0 6 * * * + workflow_dispatch: + +jobs: + label-check: + uses: autowarefoundation/autoware-github-actions/.github/workflows/make-sure-label-is-present.yaml@v1 + with: + label: tag:run-health-check + + load-env: + needs: label-check + if: ${{ needs.label-check.outputs.result == 'true' || + github.event_name == 'schedule' || + github.event_name == 'workflow_dispatch' }} + uses: ./.github/workflows/load-env.yaml + + docker-build-nightly: + needs: load-env + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set git config + uses: autowarefoundation/autoware-github-actions/set-git-config@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Free disk space + uses: ./.github/actions/free-disk-space + + - name: Build 'Autoware' + uses: ./.github/actions/docker-build + with: + platform: amd64 + cache-tag-suffix: nightly + additional-repos: autoware-nightly.repos + build-args: | + ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + LIB_DIR=x86_64 + + - name: Show disk space + if: always() + run: | + df -h diff --git a/autoware-nightly.repos b/autoware-nightly.repos new file mode 100644 index 00000000000..0b58999fd41 --- /dev/null +++ b/autoware-nightly.repos @@ -0,0 +1,37 @@ +repositories: + core/autoware.core: + type: git + url: https://github.com/autowarefoundation/autoware.core.git + version: main + universe/autoware.universe: + type: git + url: https://github.com/autowarefoundation/autoware.universe.git + version: main + launcher/autoware_launch: + type: git + url: https://github.com/autowarefoundation/autoware_launch.git + version: main + sensor_kit/sample_sensor_kit_launch: + type: git + url: https://github.com/autowarefoundation/sample_sensor_kit_launch.git + version: main + sensor_kit/external/awsim_sensor_kit_launch: # TODO: Integrate into sample_sensor_kit_launch + type: git + url: https://github.com/tier4/awsim_sensor_kit_launch.git + version: main + sensor_kit/awsim_labs_sensor_kit_launch: + type: git + url: https://github.com/autowarefoundation/awsim_labs_sensor_kit_launch.git + version: main + sensor_kit/single_lidar_sensor_kit_launch: + type: git + url: https://github.com/autowarefoundation/single_lidar_sensor_kit_launch.git + version: main + vehicle/sample_vehicle_launch: + type: git + url: https://github.com/autowarefoundation/sample_vehicle_launch.git + version: main + vehicle/awsim_labs_vehicle_launch: + type: git + url: https://github.com/autowarefoundation/awsim_labs_vehicle_launch.git + version: main From 821f488ce93ec40d9e5560b85f9723421a6a4658 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 20 Nov 2024 22:32:07 +0900 Subject: [PATCH 303/380] refactor(docker): refine CUDA related packages build (#5458) * refine cuda related pkgs build Signed-off-by: Yutaka Kondo * fix '' Signed-off-by: Yutaka Kondo * fix option Signed-off-by: Yutaka Kondo * disable shellcheck Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 16 +++------------- docker/scripts/build_and_clean.sh | 5 ++++- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8e9c9532a98..2a9047076ca 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -272,21 +272,11 @@ COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ - # TODO(youtalk): Move CUDA related packages into a dedicated directory - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_bytetrack,target=/autoware/src/universe/autoware.universe/perception/autoware_bytetrack \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_lidar_apollo_instance_segmentation,target=/autoware/src/universe/autoware.universe/perception/autoware_lidar_apollo_instance_segmentation \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_lidar_centerpoint,target=/autoware/src/universe/autoware.universe/perception/autoware_lidar_centerpoint \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_lidar_transfusion,target=/autoware/src/universe/autoware.universe/perception/autoware_lidar_transfusion \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_shape_estimation,target=/autoware/src/universe/autoware.universe/perception/autoware_shape_estimation \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_classifier,target=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_classifier \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_common,target=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_common \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_yolox,target=/autoware/src/universe/autoware.universe/perception/autoware_tensorrt_yolox \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_classifier,target=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_classifier \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_fine_detector,target=/autoware/src/universe/autoware.universe/perception/autoware_traffic_light_fine_detector \ - --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/sensing/autoware_cuda_utils,target=/autoware/src/universe/autoware.universe/sensing/autoware_cuda_utils \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/perception,target=/autoware/src/universe/autoware.universe/perception \ + --mount=type=bind,from=rosdep-universe-sensing-perception-depend,source=/autoware/src/universe/autoware.universe/sensing,target=/autoware/src/universe/autoware.universe/sensing \ source /opt/ros/"$ROS_DISTRO"/setup.bash \ && source /opt/autoware/setup.bash \ - && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware "--packages-above-and-dependencies autoware_tensorrt_common" ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] diff --git a/docker/scripts/build_and_clean.sh b/docker/scripts/build_and_clean.sh index 53c968ef722..e9d5ec6168f 100755 --- a/docker/scripts/build_and_clean.sh +++ b/docker/scripts/build_and_clean.sh @@ -3,14 +3,17 @@ function build_and_clean() { local ccache_dir=$1 local install_base=$2 + local colcon_build_args=$3 + # shellcheck disable=SC2086 du -sh "$ccache_dir" && ccache -s && colcon build --cmake-args \ " -Wno-dev" \ " --no-warn-unused-cli" \ --merge-install \ --install-base "$install_base" \ - --mixin release compile-commands ccache && + --mixin release compile-commands ccache \ + $colcon_build_args && du -sh "$ccache_dir" && ccache -s && rm -rf /autoware/build /autoware/log } From 6a284d00c0db05cb9ee67a3cfd792d357b711c7b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 21 Nov 2024 10:34:42 +0900 Subject: [PATCH 304/380] chore(autoware.repos): update TODO comment (#5463) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove todo Signed-off-by: Yutaka Kondo * Update autoware.repos Co-authored-by: M. Fatih Cırıt --------- Signed-off-by: Yutaka Kondo Co-authored-by: M. Fatih Cırıt --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 66feaa178b2..2ad1eb7bbe1 100644 --- a/autoware.repos +++ b/autoware.repos @@ -38,7 +38,7 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware.universe.git version: main - universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API + universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API and remove this repository entry. type: git url: https://github.com/tier4/tier4_ad_api_adaptor.git version: tier4/universe From 6ae172a9938af8ee0726e6d5e45b06a840aaface Mon Sep 17 00:00:00 2001 From: "Takagi, Isamu" <43976882+isamu-takagi@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:59:12 +0900 Subject: [PATCH 305/380] feat(autoware.repos): change autoware_adapi_msgs version (#5459) Signed-off-by: Takagi, Isamu --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 2ad1eb7bbe1..17d2e85d8b3 100644 --- a/autoware.repos +++ b/autoware.repos @@ -7,7 +7,7 @@ repositories: core/autoware_adapi_msgs: type: git url: https://github.com/autowarefoundation/autoware_adapi_msgs.git - version: 1.3.0 + version: beta/1.7.0 core/autoware_internal_msgs: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git From 4a479b1a3959be71d7e8855bd2a616f218690f58 Mon Sep 17 00:00:00 2001 From: "Takagi, Isamu" <43976882+isamu-takagi@users.noreply.github.com> Date: Thu, 21 Nov 2024 15:38:18 +0900 Subject: [PATCH 306/380] feat: add autoware_adapi_msgs to nightly.repos (#5466) Signed-off-by: Takagi, Isamu --- autoware-nightly.repos | 4 ++++ autoware.repos | 1 + 2 files changed, 5 insertions(+) diff --git a/autoware-nightly.repos b/autoware-nightly.repos index 0b58999fd41..49da4fee814 100644 --- a/autoware-nightly.repos +++ b/autoware-nightly.repos @@ -1,4 +1,8 @@ repositories: + core/autoware_adapi_msgs: + type: git + url: https://github.com/autowarefoundation/autoware_adapi_msgs.git + version: main core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git diff --git a/autoware.repos b/autoware.repos index 17d2e85d8b3..17ad277cf94 100644 --- a/autoware.repos +++ b/autoware.repos @@ -4,6 +4,7 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_msgs.git version: 1.2.0 + # TODO (isamu-takagi): Use a released version when autoware.universe uses a released version. core/autoware_adapi_msgs: type: git url: https://github.com/autowarefoundation/autoware_adapi_msgs.git From ef74e19c5a60027146e49e83341d5639038e048b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 21 Nov 2024 16:59:46 +0900 Subject: [PATCH 307/380] fix(docker): fix `cleanup_apt.sh` (#5467) * echo Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * remove echo Signed-off-by: Yutaka Kondo * style(pre-commit): autofix --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docker/scripts/cleanup_apt.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/scripts/cleanup_apt.sh b/docker/scripts/cleanup_apt.sh index 883df9ba8af..0b0d43fea14 100755 --- a/docker/scripts/cleanup_apt.sh +++ b/docker/scripts/cleanup_apt.sh @@ -1,11 +1,11 @@ #!/bin/bash -function cleanup() { - local remove_var_lib_apt_lists=false +function cleanup_apt() { + local remove_var_lib_apt_lists=$1 apt-get autoremove -y && rm -rf "$HOME"/.cache - if "$remove_var_lib_apt_lists"; then + if [[ $remove_var_lib_apt_lists == true ]]; then rm -rf /var/lib/apt/lists/* fi } -cleanup "$@" +cleanup_apt "$@" From f3d27bf6fcaea810320ccf2297207ee7f76ffdd3 Mon Sep 17 00:00:00 2001 From: Ryuta Kambe Date: Thu, 21 Nov 2024 17:36:08 +0900 Subject: [PATCH 308/380] ci(clang-tidy): use minimum clang-tidy configuration for CI (#5465) Signed-off-by: veqcc --- .clang-tidy-ci | 480 +------------------------------------------------ 1 file changed, 3 insertions(+), 477 deletions(-) diff --git a/.clang-tidy-ci b/.clang-tidy-ci index c6dfcdb37c7..b5928f04733 100644 --- a/.clang-tidy-ci +++ b/.clang-tidy-ci @@ -1,483 +1,9 @@ Checks: " -*, - boost-use-to-string, - bugprone-argument-comment, - bugprone-assert-side-effect, - bugprone-bad-signal-to-kill-thread, - bugprone-bool-pointer-implicit-conversion, - bugprone-branch-clone, - bugprone-copy-constructor-init, - bugprone-dangling-handle, - bugprone-dynamic-static-initializers, - bugprone-exception-escape, - bugprone-fold-init-type, - bugprone-forward-declaration-namespace, - bugprone-forwarding-reference-overload, - bugprone-inaccurate-erase, - bugprone-incorrect-roundings, - bugprone-integer-division, - bugprone-lambda-function-name, - bugprone-macro-parentheses, - bugprone-macro-repeated-side-effects, - bugprone-misplaced-operator-in-strlen-in-alloc, - bugprone-misplaced-widening-cast, - bugprone-move-forwarding-reference, - bugprone-multiple-statement-macro, - bugprone-not-null-terminated-result, - bugprone-parent-virtual-call, - bugprone-posix-return, - bugprone-signed-char-misuse, - bugprone-sizeof-container, - bugprone-sizeof-expression, - bugprone-string-constructor, - bugprone-string-integer-assignment, - bugprone-string-literal-with-embedded-nul, - bugprone-suspicious-enum-usage, - bugprone-suspicious-memset-usage, - bugprone-suspicious-missing-comma, - bugprone-suspicious-semicolon, - bugprone-suspicious-string-compare, - bugprone-swapped-arguments, - bugprone-terminating-continue, - bugprone-throw-keyword-missing, - bugprone-too-small-loop-variable, - bugprone-unchecked-optional-access, - bugprone-undefined-memory-manipulation, - bugprone-undelegated-constructor, - bugprone-unhandled-self-assignment, - bugprone-unused-raii, - bugprone-unused-return-value, - bugprone-use-after-move, - bugprone-virtual-near-miss, - cppcoreguidelines-avoid-goto, - cppcoreguidelines-init-variables, - cppcoreguidelines-interfaces-global-init, - cppcoreguidelines-macro-usage, - cppcoreguidelines-narrowing-conversions, - cppcoreguidelines-no-malloc, - cppcoreguidelines-pro-bounds-pointer-arithmetic, - cppcoreguidelines-pro-type-const-cast, - cppcoreguidelines-pro-type-cstyle-cast, - cppcoreguidelines-pro-type-member-init, - cppcoreguidelines-pro-type-reinterpret-cast, - cppcoreguidelines-pro-type-static-cast-downcast, - cppcoreguidelines-pro-type-union-access, - cppcoreguidelines-slicing, - cppcoreguidelines-special-member-functions, - google-build-explicit-make-pair, - google-build-namespaces, - google-build-using-namespace, - google-explicit-constructor, - google-global-names-in-headers, - google-upgrade-googletest-case, - hicpp-exception-baseclass, - hicpp-multiway-paths-covered, - hicpp-no-assembler, - hicpp-signed-bitwise, - llvm-namespace-comment, - misc-definitions-in-headers, - misc-misplaced-const, - misc-new-delete-overloads, - misc-non-copyable-objects, - misc-redundant-expression, - misc-static-assert, - misc-throw-by-value-catch-by-reference, - misc-unconventional-assign-operator, - misc-uniqueptr-reset-release, - misc-unused-alias-decls, - misc-unused-parameters, - misc-unused-using-decls, - modernize-concat-nested-namespaces, - modernize-deprecated-headers, - modernize-deprecated-ios-base-aliases, - modernize-loop-convert, - modernize-make-shared, - modernize-make-unique, - modernize-pass-by-value, - modernize-raw-string-literal, - modernize-redundant-void-arg, - modernize-replace-auto-ptr, - modernize-replace-disallow-copy-and-assign-macro, - modernize-replace-random-shuffle, - modernize-return-braced-init-list, - modernize-shrink-to-fit, - modernize-unary-static-assert, - modernize-use-auto, - modernize-use-bool-literals, - modernize-use-default-member-init, - modernize-use-emplace, - modernize-use-equals-default, - modernize-use-equals-delete, - modernize-use-nodiscard, - modernize-use-noexcept, - modernize-use-nullptr, - modernize-use-override, - modernize-use-transparent-functors, - modernize-use-uncaught-exceptions, - modernize-use-using, - openmp-use-default-none, - performance-faster-string-find, - performance-for-range-copy, - performance-implicit-conversion-in-loop, - performance-inefficient-algorithm, - performance-inefficient-string-concatenation, - performance-inefficient-vector-operation, - performance-move-const-arg, - performance-move-constructor-init, - performance-no-automatic-move, - performance-no-int-to-ptr, - performance-noexcept-move-constructor, - performance-trivially-destructible, - performance-type-promotion-in-math-fn, - performance-unnecessary-copy-initialization, - performance-unnecessary-value-param, - portability-simd-intrinsics, - readability-const-return-type, - readability-container-size-empty, - readability-convert-member-functions-to-static, - readability-delete-null-pointer, - readability-else-after-return, - readability-function-cognitive-complexity, - readability-identifier-naming, - readability-inconsistent-declaration-parameter-name, - readability-isolate-declaration, - readability-make-member-function-const, - readability-misleading-indentation, - readability-misplaced-array-index, - readability-non-const-parameter, - readability-redundant-access-specifiers, - readability-redundant-control-flow, - readability-redundant-declaration, - readability-redundant-function-ptr-dereference, - readability-redundant-member-init, - readability-redundant-smartptr-get, - readability-redundant-string-cstr, - readability-redundant-string-init, - readability-simplify-boolean-expr, - readability-simplify-subscript-expr, - readability-static-accessed-through-instance, - readability-static-definition-in-anonymous-namespace, - readability-string-compare, - readability-uniqueptr-delete-release" + bugprone-dangling-handle" -WarningsAsErrors: " - // severity: HIGH - bugprone-dangling-handle, - bugprone-fold-init-type, - bugprone-inaccurate-erase, - // bugprone-incorrect-roundings, - // bugprone-misplaced-widening-cast, - bugprone-sizeof-container, - bugprone-sizeof-expression, - bugprone-string-constructor, - bugprone-suspicious-enum-usage, - bugprone-suspicious-memset-usage, - bugprone-suspicious-missing-comma, - bugprone-suspicious-semicolon, - bugprone-swapped-arguments, - bugprone-unchecked-optional-access, - // bugprone-unused-raii, - bugprone-use-after-move, - misc-non-copyable-objects, - misc-throw-by-value-catch-by-reference, - - // severity: MEDIUM - bugprone-assert-side-effect, - bugprone-bad-signal-to-kill-thread, - bugprone-copy-constructor-init, - bugprone-dynamic-static-initializers, - // bugprone-exception-escape, - // bugprone-integer-division, - // bugprone-macro-parentheses, - bugprone-macro-repeated-side-effects, - bugprone-misplaced-operator-in-strlen-in-alloc, - bugprone-move-forwarding-reference, - bugprone-multiple-statement-macro, - bugprone-not-null-terminated-result, - // bugprone-parent-virtual-call, - bugprone-posix-return, - // bugprone-signed-char-misuse, - bugprone-string-literal-with-embedded-nul, - bugprone-suspicious-string-compare, - bugprone-terminating-continue, - // bugprone-throw-keyword-missing, - bugprone-too-small-loop-variable, - bugprone-undefined-memory-manipulation, - bugprone-undelegated-constructor, - bugprone-unhandled-self-assignment, - bugprone-unused-return-value, - bugprone-virtual-near-miss, - // cppcoreguidelines-init-variables, - // cppcoreguidelines-narrowing-conversions, - google-build-explicit-make-pair, - google-build-namespaces, - // google-explicit-constructor, - misc-definitions-in-headers, - misc-new-delete-overloads, - misc-redundant-expression, - misc-unconventional-assign-operator, - misc-uniqueptr-reset-release, - performance-inefficient-algorithm, - // performance-move-const-arg, - performance-move-constructor-init, - performance-noexcept-move-constructor, - // readability-simplify-boolean-expr" - -HeaderFilterRegex: ^(?!\/usr)(?!\/opt) +WarningsAsErrors: "*" ExtraArgs: - -std=c++17 - -CheckOptions: - - key: bugprone-argument-comment.CommentBoolLiterals - value: "0" - - key: bugprone-argument-comment.CommentCharacterLiterals - value: "0" - - key: bugprone-argument-comment.CommentFloatLiterals - value: "0" - - key: bugprone-argument-comment.CommentIntegerLiterals - value: "0" - - key: bugprone-argument-comment.CommentNullPtrs - value: "0" - - key: bugprone-argument-comment.CommentStringLiterals - value: "0" - - key: bugprone-argument-comment.CommentUserDefinedLiterals - value: "0" - - key: bugprone-argument-comment.IgnoreSingleArgument - value: "0" - - key: bugprone-argument-comment.StrictMode - value: "0" - - key: bugprone-assert-side-effect.AssertMacros - value: assert - - key: bugprone-assert-side-effect.CheckFunctionCalls - value: "0" - - key: bugprone-dangling-handle.HandleClasses - value: std::basic_string_view;std::experimental::basic_string_view - - key: bugprone-dynamic-static-initializers.HeaderFileExtensions - value: ",h,hh,hpp,hxx" - - key: bugprone-exception-escape.FunctionsThatShouldNotThrow - value: "" - - key: bugprone-exception-escape.IgnoredExceptions - value: "" - - key: bugprone-misplaced-widening-cast.CheckImplicitCasts - value: "0" - - key: bugprone-not-null-terminated-result.WantToUseSafeFunctions - value: "1" - - key: bugprone-signed-char-misuse.CharTypdefsToIgnore - value: "" - - key: bugprone-sizeof-expression.WarnOnSizeOfCompareToConstant - value: "1" - - key: bugprone-sizeof-expression.WarnOnSizeOfConstant - value: "1" - - key: bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression - value: "0" - - key: bugprone-sizeof-expression.WarnOnSizeOfThis - value: "1" - - key: bugprone-string-constructor.LargeLengthThreshold - value: "8388608" - - key: bugprone-string-constructor.WarnOnLargeLength - value: "1" - - key: bugprone-suspicious-enum-usage.StrictMode - value: "0" - - key: bugprone-suspicious-missing-comma.MaxConcatenatedTokens - value: "5" - - key: bugprone-suspicious-missing-comma.RatioThreshold - value: "0.200000" - - key: bugprone-suspicious-missing-comma.SizeThreshold - value: "5" - - key: bugprone-suspicious-string-compare.StringCompareLikeFunctions - value: "" - - key: bugprone-suspicious-string-compare.WarnOnImplicitComparison - value: "1" - - key: bugprone-suspicious-string-compare.WarnOnLogicalNotComparison - value: "0" - - key: bugprone-too-small-loop-variable.MagnitudeBitsUpperLimit - value: "16" - - key: bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField - value: "1" - - key: bugprone-unused-return-value.CheckedFunctions - value: ::std::async;::std::launder;::std::remove;::std::remove_if;::std::unique;::std::unique_ptr::release;::std::basic_string::empty;::std::vector::empty - - key: cert-dcl16-c.NewSuffixes - value: L;LL;LU;LLU - - key: cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField - value: "0" - - key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors - value: "1" - - key: cppcoreguidelines-macro-usage.AllowedRegexp - value: ^DEBUG_* - - key: cppcoreguidelines-macro-usage.CheckCapsOnly - value: "0" - - key: cppcoreguidelines-macro-usage.IgnoreCommandLineMacros - value: "1" - - key: cppcoreguidelines-no-malloc.Allocations - value: ::malloc;::calloc - - key: cppcoreguidelines-no-malloc.Deallocations - value: ::free - - key: cppcoreguidelines-no-malloc.Reallocations - value: ::realloc - - key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic - value: "1" - - key: cppcoreguidelines-pro-type-member-init.IgnoreArrays - value: "0" - - key: cppcoreguidelines-pro-type-member-init.UseAssignment - value: "0" - - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions - value: "0" - - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor - value: "0" - - key: google-readability-braces-around-statements.ShortStatementLines - value: "1" - - key: google-readability-function-size.StatementThreshold - value: "800" - - key: google-readability-namespace-comments.ShortNamespaceLines - value: "10" - - key: google-readability-namespace-comments.SpacesBeforeComments - value: "2" - - key: hicpp-multiway-paths-covered.WarnOnMissingElse - value: "0" - - key: hicpp-signed-bitwise.IgnorePositiveIntegerLiterals - value: "0" - - key: misc-definitions-in-headers.HeaderFileExtensions - value: ",h,hh,hpp,hxx" - - key: misc-definitions-in-headers.UseHeaderFileExtension - value: "1" - - key: misc-throw-by-value-catch-by-reference.CheckThrowTemporaries - value: "1" - - key: misc-unused-parameters.StrictMode - value: "0" - - key: modernize-loop-convert.MaxCopySize - value: "16" - - key: modernize-loop-convert.MinConfidence - value: reasonable - - key: modernize-loop-convert.NamingStyle - value: CamelCase - - key: modernize-make-shared.IgnoreMacros - value: "1" - - key: modernize-make-shared.IncludeStyle - value: google - - key: modernize-make-shared.MakeSmartPtrFunction - value: std::make_shared - - key: modernize-make-shared.MakeSmartPtrFunctionHeader - value: memory - - key: modernize-make-unique.IgnoreMacros - value: "1" - - key: modernize-make-unique.IncludeStyle - value: google - - key: modernize-make-unique.MakeSmartPtrFunction - value: std::make_unique - - key: modernize-make-unique.MakeSmartPtrFunctionHeader - value: memory - - key: modernize-pass-by-value.IncludeStyle - value: google - - key: modernize-pass-by-value.ValuesOnly - value: "0" - - key: modernize-raw-string-literal.ReplaceShorterLiterals - value: "0" - - key: modernize-replace-auto-ptr.IncludeStyle - value: google - - key: modernize-replace-random-shuffle.IncludeStyle - value: google - - key: modernize-use-auto.MinTypeNameLength - value: "5" - - key: modernize-use-auto.RemoveStars - value: "0" - - key: modernize-use-default-member-init.IgnoreMacros - value: "1" - - key: modernize-use-default-member-init.UseAssignment - value: "0" - - key: modernize-use-emplace.ContainersWithPushBack - value: ::std::vector;::std::list;::std::deque - - key: modernize-use-emplace.SmartPointers - value: ::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr - - key: modernize-use-emplace.TupleMakeFunctions - value: ::std::make_pair;::std::make_tuple - - key: modernize-use-emplace.TupleTypes - value: ::std::pair;::std::tuple - - key: modernize-use-equals-default.IgnoreMacros - value: "1" - - key: modernize-use-equals-delete.IgnoreMacros - value: "1" - - key: modernize-use-nodiscard.ReplacementString - value: "[[nodiscard]]" - - key: modernize-use-noexcept.ReplacementString - value: "" - - key: modernize-use-noexcept.UseNoexceptFalse - value: "1" - - key: modernize-use-nullptr.NullMacros - value: "NULL" - - key: modernize-use-override.AllowOverrideAndFinal - value: "0" - - key: modernize-use-override.FinalSpelling - value: final - - key: modernize-use-override.IgnoreDestructors - value: "0" - - key: modernize-use-override.OverrideSpelling - value: override - - key: modernize-use-transparent-functors.SafeMode - value: "0" - - key: modernize-use-using.IgnoreMacros - value: "1" - - key: performance-faster-string-find.StringLikeClasses - value: std::basic_string - - key: performance-for-range-copy.AllowedTypes - value: "" - - key: performance-for-range-copy.WarnOnAllAutoCopies - value: "0" - - key: performance-inefficient-string-concatenation.StrictMode - value: "0" - - key: performance-inefficient-vector-operation.EnableProto - value: "0" - - key: performance-inefficient-vector-operation.VectorLikeClasses - value: ::std::vector - - key: performance-move-const-arg.CheckTriviallyCopyableMove - value: "1" - - key: performance-move-constructor-init.IncludeStyle - value: google - - key: performance-no-automatic-move.AllowedTypes - value: "" - - key: performance-type-promotion-in-math-fn.IncludeStyle - value: google - - key: performance-unnecessary-copy-initialization.AllowedTypes - value: "" - - key: performance-unnecessary-value-param.AllowedTypes - value: .*Ptr;.*SharedFuture - - key: performance-unnecessary-value-param.IncludeStyle - value: google - - key: portability-simd-intrinsics.Std - value: "" - - key: portability-simd-intrinsics.Suggest - value: "0" - - key: readability-function-cognitive-complexity.IgnoreMacros - value: "1" - - key: readability-else-after-return.WarnOnUnfixable - value: "1" - - key: readability-identifier-naming.NamespaceCase - value: lower_case - - key: readability-identifier-naming.ClassCase - value: CamelCase - - key: readability-identifier-naming.PrivateMemberSuffix - value: _ - - key: readability-identifier-naming.StructCase - value: CamelCase - - key: readability-identifier-naming.FunctionCase - value: lower_case - - key: readability-identifier-naming.VariableCase - value: lower_case - - key: readability-identifier-naming.GlobalConstantCase - value: lower_case - - key: readability-identifier-naming.GlobalConstantPrefix - value: g_ - - key: readability-identifier-naming.ConstexprVariableCase - value: lower_case - - key: readability-inconsistent-declaration-parameter-name.IgnoreMacros - value: "1" - - key: readability-inconsistent-declaration-parameter-name.Strict - value: "0" - - key: readability-redundant-smartptr-get.IgnoreMacros - value: "1" - - key: readability-redundant-string-init.StringNames - value: ::std::basic_string - - key: readability-simplify-subscript-expr.Types - value: ::std::basic_string;::std::basic_string_view;::std::vector;::std::array - - key: readability-static-accessed-through-instance.NameSpecifierNestingThreshold - value: "3" + - -Wno-c11-extensions From 497c9c4a0b276db3e6722efeca95ae0bb6a20c31 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:20:28 +0000 Subject: [PATCH 309/380] feat(autoware.repos): patch update autowarefoundation/autoware_lanelet2_extension to 0.6.2 (#5470) Signed-off-by: github-actions Co-authored-by: github-actions --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 17ad277cf94..ede2fa655c6 100644 --- a/autoware.repos +++ b/autoware.repos @@ -29,7 +29,7 @@ repositories: core/autoware_lanelet2_extension: type: git url: https://github.com/autowarefoundation/autoware_lanelet2_extension.git - version: 0.6.1 + version: 0.6.2 core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git From bf7552483e8ad0346e934dcd0624b302c9959e56 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:46:41 +0900 Subject: [PATCH 310/380] ci: use AWS CodeBuild to run docker-build-and-push-cuda (#5475) Signed-off-by: Ryohsuke Mitsudome --- .github/workflows/docker-build-and-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index ad185aac5c5..a2a96872d12 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -63,7 +63,7 @@ jobs: docker-build-and-push-cuda: needs: [load-env, docker-build-and-push] - runs-on: ubuntu-22.04 + runs-on: codebuild-autoware-us-east-1-${{ github.run_id }}-${{ github.run_attempt }}-ubuntu-7.0-large steps: - name: Check out repository uses: actions/checkout@v4 From 413912769a3417e576b0f45b40dc9c57e29a2967 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 25 Nov 2024 14:34:37 +0900 Subject: [PATCH 311/380] feat(docker): introduce `autoware-base` images (#5476) * add base image workflow Signed-off-by: Yutaka Kondo * MUST REVERT Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * rename Signed-off-by: Yutaka Kondo * fix with Signed-off-by: Yutaka Kondo * change run Signed-off-by: Yutaka Kondo * fix hcl Signed-off-by: Yutaka Kondo * add platform Signed-off-by: Yutaka Kondo * fix description Signed-off-by: Yutaka Kondo * remove checkout Signed-off-by: Yutaka Kondo * Revert "MUST REVERT" This reverts commit bb9f18a787535831d1bbe162774b2f3328311229. * set schedule Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * use ubuntu-22.04 Signed-off-by: Yutaka Kondo * remove entrypoint Signed-off-by: Yutaka Kondo * remove entrypoint Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../docker-build-and-push-base/action.yaml | 63 +++++++++++++++++++ .github/workflows/autoware-base.yaml | 29 +++++++++ docker/Dockerfile | 1 - docker/Dockerfile.base | 47 ++++++++++++++ docker/docker-bake-base.hcl | 22 +++++++ 5 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 .github/actions/docker-build-and-push-base/action.yaml create mode 100644 .github/workflows/autoware-base.yaml create mode 100644 docker/Dockerfile.base create mode 100644 docker/docker-bake-base.hcl diff --git a/.github/actions/docker-build-and-push-base/action.yaml b/.github/actions/docker-build-and-push-base/action.yaml new file mode 100644 index 00000000000..8a5a779904a --- /dev/null +++ b/.github/actions/docker-build-and-push-base/action.yaml @@ -0,0 +1,63 @@ +name: docker-build-and-push-base +description: Composite action to build and push base images to registry. + +inputs: + target-image: + description: Target docker image name in the registry. + required: true + build-args: + description: Additional build args. + required: false + +runs: + using: composite + steps: + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Get current date + id: date + run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT + shell: bash + + - name: Docker meta for autoware-base:latest + id: meta-base + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} + tags: | + type=raw,value=${{ steps.date.outputs.date }} + bake-target: docker-metadata-action-base + flavor: | + latest=true + + - name: Docker meta for autoware-base:cuda-latest + id: meta-base-cuda + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} + tags: | + type=raw,value=cuda-latest + type=raw,value=cuda-${{ steps.date.outputs.date }} + bake-target: docker-metadata-action-base-cuda + flavor: | + latest=false + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ github.token }} + + - name: Build and Push to GitHub Container Registry + uses: docker/bake-action@v5 + with: + push: true + files: | + docker/docker-bake-base.hcl + ${{ steps.meta-base.outputs.bake-file }} + ${{ steps.meta-base-cuda.outputs.bake-file }} + provenance: false + set: | + ${{ inputs.build-args }} diff --git a/.github/workflows/autoware-base.yaml b/.github/workflows/autoware-base.yaml new file mode 100644 index 00000000000..c4ec32e1890 --- /dev/null +++ b/.github/workflows/autoware-base.yaml @@ -0,0 +1,29 @@ +name: autoware-base + +on: + schedule: + - cron: 0 0 15 * * # every 15th of the month + workflow_dispatch: + +jobs: + load-env: + uses: ./.github/workflows/load-env.yaml + + docker-build-and-push-base: + needs: load-env + runs-on: ubuntu-22.04 + steps: + - name: Check out this repository + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Build Autoware's base images + uses: ./.github/actions/docker-build-and-push-base + with: + target-image: autoware-base + build-args: | + *.platform=linux/amd64,linux/arm64 + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} diff --git a/docker/Dockerfile b/docker/Dockerfile index 2a9047076ca..8a82503b6dd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -36,7 +36,6 @@ RUN --mount=type=ssh \ # Create entrypoint COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh RUN chmod +x /ros_entrypoint.sh -ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] FROM base AS base-cuda diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base new file mode 100644 index 00000000000..dca6fb8a0fd --- /dev/null +++ b/docker/Dockerfile.base @@ -0,0 +1,47 @@ +ARG BASE_IMAGE + +# hadolint ignore=DL3006 +FROM $BASE_IMAGE AS base +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/ +COPY docker/scripts/cleanup_apt.sh /autoware/cleanup_apt.sh +RUN chmod +x /autoware/cleanup_apt.sh +WORKDIR /autoware + +# Install apt packages and add GitHub to known hosts for private repositories +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 +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ + gosu \ + ssh \ + && /autoware/cleanup_apt.sh \ + && mkdir -p ~/.ssh \ + && ssh-keyscan github.com >> ~/.ssh/known_hosts + +# Set up base environment +RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + ./setup-dev-env.sh -y --module base --no-nvidia --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && /autoware/cleanup_apt.sh \ + && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc + +# Create entrypoint +COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh +RUN chmod +x /ros_entrypoint.sh +CMD ["/bin/bash"] + +FROM base AS base-cuda +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Set up CUDA runtime environment and artifacts +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + ./setup-dev-env.sh -y --module base --download-artifacts --no-cuda-drivers --runtime openadkit \ + && pip uninstall -y ansible ansible-core \ + && /autoware/cleanup_apt.sh true diff --git a/docker/docker-bake-base.hcl b/docker/docker-bake-base.hcl new file mode 100644 index 00000000000..43cb7facc00 --- /dev/null +++ b/docker/docker-bake-base.hcl @@ -0,0 +1,22 @@ +group "default" { + targets = [ + "base", + "base-cuda" + ] +} + +// For docker/metadata-action +target "docker-metadata-action-base" {} +target "docker-metadata-action-base-cuda" {} + +target "base" { + inherits = ["docker-metadata-action-base"] + dockerfile = "docker/Dockerfile.base" + target = "base" +} + +target "base-cuda" { + inherits = ["docker-metadata-action-base-cuda"] + dockerfile = "docker/Dockerfile.base" + target = "base-cuda" +} From 0fd30c529b692529e5a7055cbd0bc1b2dd976dea Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 25 Nov 2024 14:35:03 +0900 Subject: [PATCH 312/380] fix(.github): add `--force` option to `vcs import` (#5478) add force option Signed-off-by: Yutaka Kondo --- .github/actions/docker-build/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index df338a836d0..d5bda73b4f3 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -38,7 +38,7 @@ runs: - name: Import additional repositories if: ${{ inputs.additional-repos != '' }} run: | - vcs import src < ${{ inputs.additional-repos }} + vcs import --force src < ${{ inputs.additional-repos }} shell: bash - name: Cache ccache From c5c37e487e5e94c0d45b921be33e82b7ed8c2f06 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 26 Nov 2024 13:13:29 +0900 Subject: [PATCH 313/380] chore(.github): update changed files list to include `docker-build-and-push-cuda` files (#5472) update changed candidates Signed-off-by: Yutaka Kondo --- .github/workflows/docker-build-and-push-arm64.yaml | 4 ++-- .github/workflows/docker-build-and-push.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index e8eba9440fe..afdeabd76ea 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -38,7 +38,7 @@ jobs: files: | *.env *.repos - .github/actions/docker-build-and-push/action.yaml + .github/actions/docker-build-and-push*/action.yaml .github/workflows/docker-build-and-push*.yaml ansible-galaxy-requirements.yaml ansible/** @@ -88,7 +88,7 @@ jobs: files: | *.env *.repos - .github/actions/docker-build-and-push/action.yaml + .github/actions/docker-build-and-push*/action.yaml .github/workflows/docker-build-and-push*.yaml ansible-galaxy-requirements.yaml ansible/** diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index a2a96872d12..d36b24cf98e 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -33,7 +33,7 @@ jobs: files: | *.env *.repos - .github/actions/docker-build-and-push/action.yaml + .github/actions/docker-build-and-push*/action.yaml .github/workflows/docker-build-and-push*.yaml ansible-galaxy-requirements.yaml ansible/** @@ -83,7 +83,7 @@ jobs: files: | *.env *.repos - .github/actions/docker-build-and-push/action.yaml + .github/actions/docker-build-and-push*/action.yaml .github/workflows/docker-build-and-push*.yaml ansible-galaxy-requirements.yaml ansible/** From cab53fc7d9cb2ba543e85aead082bc920832ab54 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 26 Nov 2024 13:15:38 +0900 Subject: [PATCH 314/380] feat(docker): copy `cleanup_system.sh` to `autoware-base` images (#5482) copy cleanup_system.sh Signed-off-by: Yutaka Kondo --- docker/Dockerfile.base | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base index dca6fb8a0fd..516870c7bb5 100644 --- a/docker/Dockerfile.base +++ b/docker/Dockerfile.base @@ -10,6 +10,8 @@ COPY setup-dev-env.sh ansible-galaxy-requirements.yaml amd64.env arm64.env /auto COPY ansible/ /autoware/ansible/ COPY docker/scripts/cleanup_apt.sh /autoware/cleanup_apt.sh RUN chmod +x /autoware/cleanup_apt.sh +COPY docker/scripts/cleanup_system.sh /autoware/cleanup_system.sh +RUN chmod +x /autoware/cleanup_system.sh WORKDIR /autoware # Install apt packages and add GitHub to known hosts for private repositories From 9266f10335beeb998b3293870d9f3d7fd64811a8 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 26 Nov 2024 13:16:04 +0900 Subject: [PATCH 315/380] feat(.github): separate `autoware-base` jobs (#5487) * copy cleanup_system.sh Signed-off-by: Yutaka Kondo * separate jobs Signed-off-by: Yutaka Kondo * free disk space Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/workflows/autoware-base.yaml | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/autoware-base.yaml b/.github/workflows/autoware-base.yaml index c4ec32e1890..e3d9720bcc4 100644 --- a/.github/workflows/autoware-base.yaml +++ b/.github/workflows/autoware-base.yaml @@ -9,13 +9,35 @@ jobs: load-env: uses: ./.github/workflows/load-env.yaml - docker-build-and-push-base: + autoware-base-amd64: needs: load-env runs-on: ubuntu-22.04 steps: - name: Check out this repository uses: actions/checkout@v4 + - name: Free disk space + uses: ./.github/actions/free-disk-space + + - name: Build Autoware's base images + uses: ./.github/actions/docker-build-and-push-base + with: + target-image: autoware-base + build-args: | + *.platform=linux/amd64 + *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} + *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + + autoware-base-arm64: + needs: [load-env, autoware-base-amd64] + runs-on: ubuntu-22.04 + steps: + - name: Check out this repository + uses: actions/checkout@v4 + + - name: Free disk space + uses: ./.github/actions/free-disk-space + - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -24,6 +46,6 @@ jobs: with: target-image: autoware-base build-args: | - *.platform=linux/amd64,linux/arm64 + *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} From 0e44b14187196ab0fd75a69bf0eee27b086d3b47 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 15:38:58 +0900 Subject: [PATCH 316/380] feat(autoware.repos): minor update autowarefoundation/autoware_msgs to 1.3.0 (#5491) Signed-off-by: github-actions Co-authored-by: github-actions --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index ede2fa655c6..cbe72148e27 100644 --- a/autoware.repos +++ b/autoware.repos @@ -3,7 +3,7 @@ repositories: core/autoware_msgs: type: git url: https://github.com/autowarefoundation/autoware_msgs.git - version: 1.2.0 + version: 1.3.0 # TODO (isamu-takagi): Use a released version when autoware.universe uses a released version. core/autoware_adapi_msgs: type: git From 4148d655b4709b0e062a4f68fa01bb716d3b1112 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 27 Nov 2024 18:22:54 +0900 Subject: [PATCH 317/380] feat(docker): inherit `autoware-base` images (#5492) * change run Signed-off-by: Yutaka Kondo * use autoware-base images Signed-off-by: Yutaka Kondo * update health-check Signed-off-by: Yutaka Kondo * update load-env Signed-off-by: Yutaka Kondo * update load-env Signed-off-by: Yutaka Kondo * fix rebase Signed-off-by: Yutaka Kondo * add build-args Signed-off-by: Yutaka Kondo * fix hcl Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../docker-build-and-push-cuda/action.yaml | 13 ---- .../actions/docker-build-and-push/action.yaml | 13 ---- .../docker-build-and-push-arm64.yaml | 4 + .github/workflows/docker-build-and-push.yaml | 4 + .github/workflows/health-check-arm64.yaml | 2 + .github/workflows/health-check-nightly.yaml | 2 + .github/workflows/health-check.yaml | 2 + .github/workflows/load-env.yaml | 16 +++- amd64.env | 2 + docker/Dockerfile | 74 +++++-------------- docker/docker-bake-cuda.hcl | 8 -- docker/docker-bake.hcl | 8 -- 12 files changed, 46 insertions(+), 102 deletions(-) diff --git a/.github/actions/docker-build-and-push-cuda/action.yaml b/.github/actions/docker-build-and-push-cuda/action.yaml index fc28683d892..bf9d9ca0854 100644 --- a/.github/actions/docker-build-and-push-cuda/action.yaml +++ b/.github/actions/docker-build-and-push-cuda/action.yaml @@ -64,18 +64,6 @@ runs: run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT shell: bash - - name: Docker meta for autoware:base-cuda - id: meta-base-cuda - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} - tags: | - type=raw,value=base-cuda-${{ inputs.platform }} - type=raw,value=base-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} - bake-target: docker-metadata-action-base-cuda - flavor: | - latest=false - - name: Docker meta for autoware:universe-sensing-perception-devel-cuda id: meta-universe-sensing-perception-devel-cuda uses: docker/metadata-action@v5 @@ -137,7 +125,6 @@ runs: push: true files: | docker/docker-bake-cuda.hcl - ${{ steps.meta-base-cuda.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception-devel-cuda.outputs.bake-file }} ${{ steps.meta-universe-sensing-perception-cuda.outputs.bake-file }} ${{ steps.meta-universe-devel-cuda.outputs.bake-file }} diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 3e3bc857fea..c028eede588 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -64,18 +64,6 @@ runs: run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT shell: bash - - name: Docker meta for autoware:base - id: meta-base - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} - tags: | - type=raw,value=base-${{ inputs.platform }} - type=raw,value=base-${{ steps.date.outputs.date }}-${{ inputs.platform }} - bake-target: docker-metadata-action-base - flavor: | - latest=false - - name: Docker meta for autoware:core-devel id: meta-core-devel uses: docker/metadata-action@v5 @@ -221,7 +209,6 @@ runs: push: true files: | docker/docker-bake.hcl - ${{ steps.meta-base.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/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index afdeabd76ea..ee50b263616 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -56,6 +56,8 @@ jobs: *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }} + *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }} *.args.LIB_DIR=aarch64 *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-main @@ -106,6 +108,8 @@ jobs: *.platform=linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }} + *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }} *.args.LIB_DIR=aarch64 *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:arm64-main diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index d36b24cf98e..4fbcb666b0f 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -51,6 +51,8 @@ jobs: *.platform=linux/amd64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }} + *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }} *.args.LIB_DIR=x86_64 *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-main @@ -101,6 +103,8 @@ jobs: *.platform=linux/amd64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }} + *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }} *.args.LIB_DIR=x86_64 *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-${{ github.ref_name }} *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:amd64-main diff --git a/.github/workflows/health-check-arm64.yaml b/.github/workflows/health-check-arm64.yaml index d487e3c6ffd..9508abc3b1c 100644 --- a/.github/workflows/health-check-arm64.yaml +++ b/.github/workflows/health-check-arm64.yaml @@ -37,6 +37,8 @@ jobs: build-args: | ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }} + AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }} LIB_DIR=aarch64 - name: Show disk space diff --git a/.github/workflows/health-check-nightly.yaml b/.github/workflows/health-check-nightly.yaml index f38836e5d1b..d3e3ee74c7a 100644 --- a/.github/workflows/health-check-nightly.yaml +++ b/.github/workflows/health-check-nightly.yaml @@ -50,6 +50,8 @@ jobs: build-args: | ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }} + AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }} LIB_DIR=x86_64 - name: Show disk space diff --git a/.github/workflows/health-check.yaml b/.github/workflows/health-check.yaml index 55894881a4d..c51d8a320e4 100644 --- a/.github/workflows/health-check.yaml +++ b/.github/workflows/health-check.yaml @@ -49,6 +49,8 @@ jobs: build-args: | ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} BASE_IMAGE=${{ needs.load-env.outputs.base_image }} + AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }} + AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }} LIB_DIR=x86_64 - name: Show disk space diff --git a/.github/workflows/load-env.yaml b/.github/workflows/load-env.yaml index ff7f24b6887..48af4b3a145 100644 --- a/.github/workflows/load-env.yaml +++ b/.github/workflows/load-env.yaml @@ -3,17 +3,23 @@ name: load-env on: workflow_call: outputs: - base_image: - value: ${{ jobs.load-env.outputs.base_image }} rosdistro: value: ${{ jobs.load-env.outputs.rosdistro }} + base_image: + value: ${{ jobs.load-env.outputs.base_image }} + autoware_base_image: + value: ${{ jobs.load-env.outputs.autoware_base_image }} + autoware_base_cuda_image: + value: ${{ jobs.load-env.outputs.autoware_base_cuda_image }} jobs: load-env: runs-on: ubuntu-22.04 outputs: - base_image: ${{ steps.set-env.outputs.base_image }} rosdistro: ${{ steps.set-env.outputs.rosdistro }} + base_image: ${{ steps.set-env.outputs.base_image }} + autoware_base_image: ${{ steps.set-env.outputs.autoware_base_image }} + autoware_base_cuda_image: ${{ steps.set-env.outputs.autoware_base_cuda_image }} steps: - name: Check out repository uses: actions/checkout@v4 @@ -28,5 +34,7 @@ jobs: - name: Set env id: set-env run: | - echo "base_image=${{ env.base_image }}" >> $GITHUB_OUTPUT echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT + echo "base_image=${{ env.base_image }}" >> $GITHUB_OUTPUT + echo "autoware_base_image=${{ env.autoware_base_image }}" >> $GITHUB_OUTPUT + echo "autoware_base_cuda_image=${{ env.autoware_base_cuda_image }}" >> $GITHUB_OUTPUT diff --git a/amd64.env b/amd64.env index 38eadee0a91..f1a068d50b7 100644 --- a/amd64.env +++ b/amd64.env @@ -1,6 +1,8 @@ rosdistro=humble rmw_implementation=rmw_cyclonedds_cpp base_image=ros:humble-ros-base-jammy +autoware_base_image=ghcr.io/autowarefoundation/autoware-base:latest +autoware_base_cuda_image=ghcr.io/autowarefoundation/autoware-base:cuda-latest cuda_version=12.3 cudnn_version=8.9.5.29-1+cuda12.2 tensorrt_version=8.6.1.6-1+cuda12.0 diff --git a/docker/Dockerfile b/docker/Dockerfile index 8a82503b6dd..d2ba84d017c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,52 +1,6 @@ ARG BASE_IMAGE - -# hadolint ignore=DL3006 -FROM $BASE_IMAGE AS base -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/ -COPY docker/scripts/cleanup_apt.sh /autoware/cleanup_apt.sh -RUN chmod +x /autoware/cleanup_apt.sh -COPY docker/scripts/cleanup_system.sh /autoware/cleanup_system.sh -RUN chmod +x /autoware/cleanup_system.sh -WORKDIR /autoware - -# Install apt packages and add GitHub to known hosts for private repositories -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 -RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ - gosu \ - ssh \ - && /autoware/cleanup_apt.sh \ - && mkdir -p ~/.ssh \ - && ssh-keyscan github.com >> ~/.ssh/known_hosts - -# Set up base environment -RUN --mount=type=ssh \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - ./setup-dev-env.sh -y --module base --no-nvidia --no-cuda-drivers --runtime openadkit \ - && pip uninstall -y ansible ansible-core \ - && /autoware/cleanup_apt.sh \ - && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" > /etc/bash.bashrc - -# Create entrypoint -COPY docker/etc/ros_entrypoint.sh /ros_entrypoint.sh -RUN chmod +x /ros_entrypoint.sh -CMD ["/bin/bash"] - -FROM base AS base-cuda -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -# Set up CUDA runtime environment and artifacts -# hadolint ignore=SC2002 -RUN --mount=type=ssh \ - ./setup-dev-env.sh -y --module base --download-artifacts --no-cuda-drivers --runtime openadkit \ - && pip uninstall -y ansible ansible-core \ - && /autoware/cleanup_apt.sh true +ARG AUTOWARE_BASE_IMAGE +ARG AUTOWARE_BASE_CUDA_IMAGE # hadolint ignore=DL3006 FROM $BASE_IMAGE AS rosdep-depend @@ -158,7 +112,8 @@ RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-exec-depend-packages.txt \ && cat /rosdep-exec-depend-packages.txt -FROM base AS core-devel +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_IMAGE AS core-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ENV CCACHE_DIR="/root/.ccache" @@ -413,7 +368,8 @@ COPY --from=universe-devel /opt/autoware /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base AS universe-sensing-perception +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_IMAGE AS universe-sensing-perception SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR @@ -438,7 +394,8 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base-cuda AS universe-sensing-perception-cuda +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_CUDA_IMAGE AS universe-sensing-perception-cuda SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR @@ -459,7 +416,8 @@ COPY --from=universe-sensing-perception-devel-cuda /opt/autoware /opt/autoware ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base AS universe-localization-mapping +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_IMAGE AS universe-localization-mapping SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR @@ -484,7 +442,8 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base AS universe-planning-control +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_IMAGE AS universe-planning-control SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR @@ -509,7 +468,8 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base AS universe-vehicle-system +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_IMAGE AS universe-vehicle-system SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR @@ -534,7 +494,8 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base AS universe +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_IMAGE AS universe SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR @@ -559,7 +520,8 @@ RUN echo "source /opt/autoware/setup.bash" > /etc/bash.bashrc ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] -FROM base-cuda AS universe-cuda +# hadolint ignore=DL3006 +FROM $AUTOWARE_BASE_CUDA_IMAGE AS universe-cuda SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO ARG LIB_DIR diff --git a/docker/docker-bake-cuda.hcl b/docker/docker-bake-cuda.hcl index 44ec1142178..87aa27df879 100644 --- a/docker/docker-bake-cuda.hcl +++ b/docker/docker-bake-cuda.hcl @@ -1,6 +1,5 @@ group "default" { targets = [ - "base-cuda", "universe-sensing-perception-devel-cuda", "universe-sensing-perception-cuda", "universe-devel-cuda", @@ -9,18 +8,11 @@ group "default" { } // For docker/metadata-action -target "docker-metadata-action-base-cuda" {} target "docker-metadata-action-universe-sensing-perception-devel-cuda" {} target "docker-metadata-action-universe-sensing-perception-cuda" {} target "docker-metadata-action-universe-devel-cuda" {} target "docker-metadata-action-universe-cuda" {} -target "base-cuda" { - inherits = ["docker-metadata-action-base-cuda"] - dockerfile = "docker/Dockerfile" - target = "base-cuda" -} - target "universe-sensing-perception-devel-cuda" { inherits = ["docker-metadata-action-universe-sensing-perception-devel-cuda"] dockerfile = "docker/Dockerfile" diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index 35d0f7fdbfc..dcf79ffc115 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -1,6 +1,5 @@ group "default" { targets = [ - "base", "core-devel", "universe-sensing-perception-devel", "universe-sensing-perception", @@ -16,7 +15,6 @@ group "default" { } // For docker/metadata-action -target "docker-metadata-action-base" {} target "docker-metadata-action-core-devel" {} target "docker-metadata-action-universe-sensing-perception-devel" {} target "docker-metadata-action-universe-sensing-perception" {} @@ -29,12 +27,6 @@ target "docker-metadata-action-universe-vehicle-system" {} target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-universe" {} -target "base" { - inherits = ["docker-metadata-action-base"] - dockerfile = "docker/Dockerfile" - target = "base" -} - target "core-devel" { inherits = ["docker-metadata-action-core-devel"] dockerfile = "docker/Dockerfile" From 45ceb15b8e9c80880a04b9d99c1b7b85800f87d7 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 27 Nov 2024 20:14:51 +0900 Subject: [PATCH 318/380] chore(autoware.repos): fix `autoware.universe` and `autoware_launch` versions to `0.39.0` (#5479) --- autoware.repos | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoware.repos b/autoware.repos index cbe72148e27..c7e85183ed4 100644 --- a/autoware.repos +++ b/autoware.repos @@ -38,7 +38,7 @@ repositories: universe/autoware.universe: type: git url: https://github.com/autowarefoundation/autoware.universe.git - version: main + version: 0.39.0 universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API and remove this repository entry. type: git url: https://github.com/tier4/tier4_ad_api_adaptor.git @@ -80,7 +80,7 @@ repositories: launcher/autoware_launch: type: git url: https://github.com/autowarefoundation/autoware_launch.git - version: main + version: 0.39.0 # sensor_component sensor_component/external/sensor_component_description: type: git From b2f5c079cf13ae6a95322a33639f1a6ebd331327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Thu, 28 Nov 2024 02:45:57 +0300 Subject: [PATCH 319/380] ci: update the pr template and add comment-on-pr workflow (#5500) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/PULL_REQUEST_TEMPLATE.md | 8 --- .github/PULL_REQUEST_TEMPLATE/small-change.md | 44 ------------- .../PULL_REQUEST_TEMPLATE/standard-change.md | 63 ------------------- .github/pull_request_template.md | 23 +++++++ .github/workflows/comment-on-pr.yaml | 25 ++++++++ 5 files changed, 48 insertions(+), 115 deletions(-) delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/small-change.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/standard-change.md create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/comment-on-pr.yaml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 97b0e954524..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -**Note**: Confirm the [contribution guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/) before submitting a pull request. - -Click the `Preview` tab and select a PR template: - -- [Standard change](?expand=1&template=standard-change.md) -- [Small change](?expand=1&template=small-change.md) - -**Do NOT send a PR with this description.** diff --git a/.github/PULL_REQUEST_TEMPLATE/small-change.md b/.github/PULL_REQUEST_TEMPLATE/small-change.md deleted file mode 100644 index e15fdd992d1..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE/small-change.md +++ /dev/null @@ -1,44 +0,0 @@ -## Description - - - -## Tests performed - - - - -Not applicable. - -## Effects on system behavior - - - -Not applicable. - -## Interface changes - - - -## Pre-review checklist for the PR author - -The PR author **must** check the checkboxes below when creating the PR. - -- [ ] I've confirmed the [contribution guidelines]. -- [ ] The PR follows the [pull request guidelines]. - -## In-review checklist for the PR reviewers - -The PR reviewers **must** check the checkboxes below before approval. - -- [ ] The PR follows the [pull request guidelines]. - -## Post-review checklist for the PR author - -The PR author **must** check the checkboxes below before merging. - -- [ ] There are no open discussions or they are tracked via tickets. - -After all checkboxes are checked, anyone who has write access can merge the PR. - -[contribution guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/ -[pull request guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/ diff --git a/.github/PULL_REQUEST_TEMPLATE/standard-change.md b/.github/PULL_REQUEST_TEMPLATE/standard-change.md deleted file mode 100644 index 391af629751..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE/standard-change.md +++ /dev/null @@ -1,63 +0,0 @@ -## Description - - - -## Related links - - - -## Tests performed - - - -## Notes for reviewers - - - -## Interface changes - - - -### ROS Topic Changes - - - - - - -### ROS Parameter Changes - - - - - -## Effects on system behavior - - - -## Pre-review checklist for the PR author - -The PR author **must** check the checkboxes below when creating the PR. - -- [ ] I've confirmed the [contribution guidelines]. -- [ ] The PR follows the [pull request guidelines]. - -## In-review checklist for the PR reviewers - -The PR reviewers **must** check the checkboxes below before approval. - -- [ ] The PR follows the [pull request guidelines]. -- [ ] The PR has been properly tested. -- [ ] The PR has been reviewed by the code owners. - -## Post-review checklist for the PR author - -The PR author **must** check the checkboxes below before merging. - -- [ ] There are no open discussions or they are tracked via tickets. -- [ ] The PR is ready for merge. - -After all checkboxes are checked, anyone who has write access can merge the PR. - -[contribution guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/ -[pull request guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/ diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000000..a391e265016 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,23 @@ +## Description + +## Related links + +**Parent Issue:** + +- Link + + + +## How was this PR tested? + +## Notes for reviewers + +None. + +## Effects on system behavior + +None. diff --git a/.github/workflows/comment-on-pr.yaml b/.github/workflows/comment-on-pr.yaml new file mode 100644 index 00000000000..c80141ddac6 --- /dev/null +++ b/.github/workflows/comment-on-pr.yaml @@ -0,0 +1,25 @@ +name: comment-on-pr +on: + pull_request_target: + +jobs: + comment-on-pr: + runs-on: ubuntu-22.04 + permissions: + pull-requests: write + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Initial PR comment + uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Thank you for contributing to the Autoware project! + + 🚧 If your pull request is in progress, [switch it to draft mode](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft). + + Please ensure: + - You've checked our [contribution guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/). + - Your PR follows our [pull request guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/). + - All required CI checks pass before [marking the PR ready for review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review). From fdfd0a914afde4cb685fc64c33403f0cd3bacece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Thu, 28 Nov 2024 13:45:49 +0300 Subject: [PATCH 320/380] ci(spell-check): switch the repository to autowarefoundation (#5501) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/workflows/spell-check-differential.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spell-check-differential.yaml b/.github/workflows/spell-check-differential.yaml index f030a45251d..fdf819b035d 100644 --- a/.github/workflows/spell-check-differential.yaml +++ b/.github/workflows/spell-check-differential.yaml @@ -13,4 +13,4 @@ jobs: - name: Run spell-check uses: autowarefoundation/autoware-github-actions/spell-check@v1 with: - cspell-json-url: https://raw.githubusercontent.com/tier4/autoware-spell-check-dict/main/.cspell.json + cspell-json-url: https://raw.githubusercontent.com/autowarefoundation/autoware-spell-check-dict/main/.cspell.json From f88d9f8a6b69ecb82126433ed4f568d16cbf2c3a Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 14:09:23 +0300 Subject: [PATCH 321/380] ci(pre-commit-ansible): autoupdate (#5217) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index 4b8210eb003..161ab4efada 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v24.7.0 + rev: v24.10.0 hooks: - id: ansible-lint additional_dependencies: From 897faafbb11ff1f0f8a6e5bc4b1d1c5c39057661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Thu, 28 Nov 2024 15:01:14 +0300 Subject: [PATCH 322/380] ci(spell-check-diff): add explicit dict-packages (#5503) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/workflows/spell-check-differential.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/spell-check-differential.yaml b/.github/workflows/spell-check-differential.yaml index fdf819b035d..90d59626723 100644 --- a/.github/workflows/spell-check-differential.yaml +++ b/.github/workflows/spell-check-differential.yaml @@ -14,3 +14,6 @@ jobs: uses: autowarefoundation/autoware-github-actions/spell-check@v1 with: cspell-json-url: https://raw.githubusercontent.com/autowarefoundation/autoware-spell-check-dict/main/.cspell.json + dict-packages: | + https://github.com/autowarefoundation/autoware-spell-check-dict + https://github.com/tier4/cspell-dicts From 24908996a5bae524bf9eff9c6f7fa24c5915301b Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 28 Nov 2024 21:31:35 +0900 Subject: [PATCH 323/380] refactor(docker): fix `Dockerfile` indent (#5495) fix indent Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index d2ba84d017c..8857e43bc9e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -26,14 +26,14 @@ RUN --mount=type=ssh \ # Generate install package lists 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 + > /rosdep-core-depend-packages.txt \ + && cat /rosdep-core-depend-packages.txt COPY src/universe/external /autoware/src/universe/external COPY src/universe/autoware.universe/common /autoware/src/universe/autoware.universe/common RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-common-depend-packages.txt \ - && cat /rosdep-universe-common-depend-packages.txt + > /rosdep-universe-common-depend-packages.txt \ + && cat /rosdep-universe-common-depend-packages.txt FROM rosdep-depend AS rosdep-universe-sensing-perception-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -42,11 +42,11 @@ ARG ROS_DISTRO COPY src/universe/autoware.universe/perception /autoware/src/universe/autoware.universe/perception COPY src/universe/autoware.universe/sensing /autoware/src/universe/autoware.universe/sensing RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-sensing-perception-depend-packages.txt \ - && cat /rosdep-universe-sensing-perception-depend-packages.txt + > /rosdep-universe-sensing-perception-depend-packages.txt \ + && cat /rosdep-universe-sensing-perception-depend-packages.txt RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-sensing-perception-exec-depend-packages.txt \ - && cat /rosdep-universe-sensing-perception-exec-depend-packages.txt + > /rosdep-universe-sensing-perception-exec-depend-packages.txt \ + && cat /rosdep-universe-sensing-perception-exec-depend-packages.txt FROM rosdep-depend AS rosdep-universe-localization-mapping-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -55,11 +55,11 @@ ARG ROS_DISTRO COPY src/universe/autoware.universe/localization /autoware/src/universe/autoware.universe/localization COPY src/universe/autoware.universe/map /autoware/src/universe/autoware.universe/map RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-localization-mapping-depend-packages.txt \ - && cat /rosdep-universe-localization-mapping-depend-packages.txt + > /rosdep-universe-localization-mapping-depend-packages.txt \ + && cat /rosdep-universe-localization-mapping-depend-packages.txt RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-localization-mapping-exec-depend-packages.txt \ - && cat /rosdep-universe-localization-mapping-exec-depend-packages.txt + > /rosdep-universe-localization-mapping-exec-depend-packages.txt \ + && cat /rosdep-universe-localization-mapping-exec-depend-packages.txt FROM rosdep-depend AS rosdep-universe-planning-control-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -73,11 +73,11 @@ COPY src/universe/autoware.universe/map/autoware_map_projection_loader /autoware COPY src/universe/autoware.universe/sensing/autoware_pcl_extensions /autoware/src/universe/autoware.universe/sensing/autoware_pcl_extensions COPY src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor /autoware/src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-planning-control-depend-packages.txt \ - && cat /rosdep-universe-planning-control-depend-packages.txt + > /rosdep-universe-planning-control-depend-packages.txt \ + && cat /rosdep-universe-planning-control-depend-packages.txt RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-planning-control-exec-depend-packages.txt \ - && cat /rosdep-universe-planning-control-exec-depend-packages.txt + > /rosdep-universe-planning-control-exec-depend-packages.txt \ + && cat /rosdep-universe-planning-control-exec-depend-packages.txt FROM rosdep-depend AS rosdep-universe-vehicle-system-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -88,11 +88,11 @@ COPY src/universe/autoware.universe/system /autoware/src/universe/autoware.unive COPY src/universe/autoware.universe/map/autoware_map_height_fitter /autoware/src/universe/autoware.universe/map/autoware_map_height_fitter COPY src/universe/autoware.universe/localization/autoware_pose2twist /autoware/src/universe/autoware.universe/localization/autoware_pose2twist RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-vehicle-system-depend-packages.txt \ - && cat /rosdep-universe-vehicle-system-depend-packages.txt + > /rosdep-universe-vehicle-system-depend-packages.txt \ + && cat /rosdep-universe-vehicle-system-depend-packages.txt RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-vehicle-system-exec-depend-packages.txt \ - && cat /rosdep-universe-vehicle-system-exec-depend-packages.txt + > /rosdep-universe-vehicle-system-exec-depend-packages.txt \ + && cat /rosdep-universe-vehicle-system-exec-depend-packages.txt FROM rosdep-depend AS rosdep-universe-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -105,12 +105,12 @@ COPY src/sensor_kit /autoware/src/sensor_kit COPY src/universe /autoware/src/universe COPY src/vehicle /autoware/src/vehicle RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-universe-depend-packages.txt \ - && cat /rosdep-universe-depend-packages.txt + > /rosdep-universe-depend-packages.txt \ + && cat /rosdep-universe-depend-packages.txt RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ - > /rosdep-exec-depend-packages.txt \ - && cat /rosdep-exec-depend-packages.txt + > /rosdep-exec-depend-packages.txt \ + && cat /rosdep-exec-depend-packages.txt # hadolint ignore=DL3006 FROM $AUTOWARE_BASE_IMAGE AS core-devel From 09049a513963926f9dab533a07f892ebac7161cc Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 28 Nov 2024 21:45:08 +0900 Subject: [PATCH 324/380] feat(docker): update cleanup scripts (#5497) * update cleanup scripts Signed-off-by: Yutaka Kondo * revert to ubuntu-22.04 Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .github/workflows/docker-build-and-push.yaml | 2 +- docker/scripts/cleanup_apt.sh | 8 ++++---- docker/scripts/cleanup_system.sh | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 4fbcb666b0f..292b4753b51 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -65,7 +65,7 @@ jobs: docker-build-and-push-cuda: needs: [load-env, docker-build-and-push] - runs-on: codebuild-autoware-us-east-1-${{ github.run_id }}-${{ github.run_attempt }}-ubuntu-7.0-large + runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/docker/scripts/cleanup_apt.sh b/docker/scripts/cleanup_apt.sh index 0b0d43fea14..ad03c1f39e3 100755 --- a/docker/scripts/cleanup_apt.sh +++ b/docker/scripts/cleanup_apt.sh @@ -1,10 +1,10 @@ #!/bin/bash function cleanup_apt() { - local remove_var_lib_apt_lists=$1 - apt-get autoremove -y && rm -rf "$HOME"/.cache - if [[ $remove_var_lib_apt_lists == true ]]; then - rm -rf /var/lib/apt/lists/* + local apt_clean=$1 + apt-get autoremove -y && rm -rf /var/lib/apt/lists/* "$HOME"/.cache + if [[ $apt_clean == true ]]; then + apt-get clean fi } diff --git a/docker/scripts/cleanup_system.sh b/docker/scripts/cleanup_system.sh index 1e8d911becc..0833be2b3a4 100755 --- a/docker/scripts/cleanup_system.sh +++ b/docker/scripts/cleanup_system.sh @@ -4,15 +4,15 @@ function cleanup_system() { local lib_dir=$1 local ros_distro=$2 - apt-get autoremove -y && rm -rf "$HOME"/.cache && - find /usr/lib/"$lib_dir"-linux-gnu -name "*.a" -type f -delete && + find /usr/lib/"$lib_dir"-linux-gnu -name "*.a" -type f -delete && find / -name "*.o" -type f -delete && find / -name "*.h" -type f -delete && find / -name "*.hpp" -type f -delete && rm -rf /autoware/ansible /autoware/ansible-galaxy-requirements.yaml /autoware/setup-dev-env.sh /autoware/*.env \ - /root/.local/pipx /opt/ros/"$ros_distro"/include /etc/apt/sources.list.d/cuda*.list \ + /root/.local/pipx /opt/ros/"$ros_distro"/include /opt/autoware/include /etc/apt/sources.list.d/cuda*.list \ /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* } +./cleanup_apt.sh cleanup_system "$@" From 3054252d4f082165499c2cf2b61b81ecb5691c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 29 Nov 2024 05:34:00 +0300 Subject: [PATCH 325/380] ci(sync-files): make use of sync-files-templates repo (#5504) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/sync-files.yaml | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/.github/sync-files.yaml b/.github/sync-files.yaml index e69de29bb2d..aa720753cbf 100644 --- a/.github/sync-files.yaml +++ b/.github/sync-files.yaml @@ -0,0 +1,64 @@ +- repository: autowarefoundation/sync-file-templates + files: + - source: sources/.github/ISSUE_TEMPLATE/bug.yaml + dest: .github/ISSUE_TEMPLATE/bug.yaml + - source: sources/.github/ISSUE_TEMPLATE/config.yml + dest: .github/ISSUE_TEMPLATE/config.yml + - source: sources/.github/ISSUE_TEMPLATE/task.yaml + dest: .github/ISSUE_TEMPLATE/task.yaml + - source: sources/.github/dependabot.yaml + dest: .github/dependabot.yaml + - source: sources/.github/pull_request_template.md + dest: .github/pull_request_template.md + - source: sources/.github/stale.yml + dest: .github/stale.yml + - source: sources/.github/workflows/cancel-previous-workflows.yaml + dest: .github/workflows/cancel-previous-workflows.yaml + - source: sources/.github/workflows/comment-on-pr.yaml + dest: .github/workflows/comment-on-pr.yaml + - source: sources/.github/workflows/github-release.yaml + dest: .github/workflows/github-release.yaml + - source: sources/.github/workflows/pre-commit-optional.yaml + dest: .github/workflows/pre-commit-optional.yaml + - source: sources/.github/workflows/pre-commit-optional-autoupdate.yaml + dest: .github/workflows/pre-commit-optional-autoupdate.yaml + - source: sources/.github/workflows/pre-commit-autoupdate.yaml + dest: .github/workflows/pre-commit-autoupdate.yaml + - source: sources/.github/workflows/semantic-pull-request.yaml + dest: .github/workflows/semantic-pull-request.yaml + - source: sources/.github/workflows/spell-check-differential.yaml + dest: .github/workflows/spell-check-differential.yaml + - source: sources/.github/workflows/spell-check-daily.yaml + dest: .github/workflows/spell-check-daily.yaml + - source: sources/.github/workflows/sync-files.yaml + dest: .github/workflows/sync-files.yaml + - source: sources/.clang-format + dest: .clang-format + - source: sources/.clang-tidy + dest: .clang-tidy + - source: sources/.markdown-link-check.json + dest: .markdown-link-check.json + - source: sources/.markdownlint.yaml + dest: .markdownlint.yaml + - source: sources/.pre-commit-config-optional.yaml + dest: .pre-commit-config-optional.yaml + - source: sources/.pre-commit-config.yaml + dest: .pre-commit-config.yaml + - source: sources/.prettierignore + dest: .prettierignore + - source: sources/.prettierrc.yaml + dest: .prettierrc.yaml + - source: sources/.yamllint.yaml + dest: .yamllint.yaml + - source: sources/CODE_OF_CONDUCT.md + dest: CODE_OF_CONDUCT.md + - source: sources/CONTRIBUTING.md + dest: CONTRIBUTING.md + - source: sources/CPPLINT.cfg + dest: CPPLINT.cfg + - source: sources/DISCLAIMER.md + dest: DISCLAIMER.md + - source: sources/LICENSE + dest: LICENSE + - source: sources/setup.cfg + dest: setup.cfg From e46be0edcb2b6c5079431a9bb900a8d387c0ae40 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 29 Nov 2024 16:05:57 +0900 Subject: [PATCH 326/380] ci: use AWS CodeBuild to run docker-build-and-push-cuda (#5475) (#5509) Signed-off-by: Ryohsuke Mitsudome Co-authored-by: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> --- .github/workflows/docker-build-and-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 292b4753b51..4fbcb666b0f 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -65,7 +65,7 @@ jobs: docker-build-and-push-cuda: needs: [load-env, docker-build-and-push] - runs-on: ubuntu-22.04 + runs-on: codebuild-autoware-us-east-1-${{ github.run_id }}-${{ github.run_attempt }}-ubuntu-7.0-large steps: - name: Check out repository uses: actions/checkout@v4 From b8f9f30b6a15d5f8bfcc68c105afd37aa5dff0c0 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 29 Nov 2024 14:17:46 +0300 Subject: [PATCH 327/380] chore: sync files (#5506) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/pull_request_template.md | 12 - .github/workflows/spell-check-daily.yaml | 23 + .pre-commit-config.yaml | 54 +- .../autoware-rviz-icons/active/downarrow.svg | 32 +- .../autoware-rviz-icons/active/uparrow.svg | 32 +- .../disabled/branch-end.svg | 42 +- .../disabled/branch-more.svg | 42 +- .../disabled/downarrow.svg | 32 +- .../disabled/leftarrow.svg | 32 +- .../disabled/radiobutton_checked.svg | 43 +- .../disabled/radiobutton_unchecked.svg | 37 +- .../disabled/rightarrow.svg | 32 +- .../autoware-rviz-icons/disabled/uparrow.svg | 32 +- .../autoware-rviz-icons/disabled/vline.svg | 40 +- .../files/autoware-rviz-icons/primary/add.svg | 4 +- .../primary/branch-closed.svg | 4 +- .../primary/branch-end.svg | 42 +- .../primary/branch-more.svg | 42 +- .../primary/branch-open.svg | 4 +- .../primary/checkbox_checked_disabled.svg | 6 +- .../primary/checkbox_checked_enabled.svg | 6 +- .../primary/checkbox_checked_hovered.svg | 6 +- .../primary/checkbox_checked_pressed.svg | 6 +- .../checkbox_indeterminate_disabled.svg | 6 +- .../checkbox_indeterminate_enabled.svg | 6 +- .../checkbox_indeterminate_hovered.svg | 6 +- .../checkbox_indeterminate_pressed.svg | 6 +- .../primary/checkbox_unchecked_disabled.svg | 6 +- .../primary/checkbox_unchecked_enabled.svg | 6 +- .../primary/checkbox_unchecked_hovered.svg | 6 +- .../primary/checkbox_unchecked_pressed.svg | 6 +- .../autoware-rviz-icons/primary/close.svg | 4 +- .../autoware-rviz-icons/primary/downarrow.svg | 32 +- .../autoware-rviz-icons/primary/float.svg | 58 +- .../autoware-rviz-icons/primary/leftarrow.svg | 32 +- .../autoware-rviz-icons/primary/minus.svg | 4 +- .../autoware-rviz-icons/primary/more.svg | 6 +- .../primary/radiobutton_checked.svg | 43 +- .../primary/radiobutton_checked_invert.svg | 43 +- .../primary/radiobutton_unchecked.svg | 37 +- .../primary/radiobutton_unchecked_invert.svg | 37 +- .../primary/rightarrow.svg | 32 +- .../autoware-rviz-icons/primary/sizegrip.svg | 52 +- .../autoware-rviz-icons/primary/slider.svg | 37 +- .../primary/splitter-horizontal.svg | 2 +- .../autoware-rviz-icons/primary/tab_close.svg | 34 +- .../primary/toolbar-handle-horizontal.svg | 56 +- .../primary/toolbar-handle-vertical.svg | 56 +- .../autoware-rviz-icons/primary/uparrow.svg | 32 +- docker/Dockerfile.svg | 1223 +++++++++-------- 50 files changed, 1403 insertions(+), 1070 deletions(-) create mode 100644 .github/workflows/spell-check-daily.yaml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index a391e265016..4c4081a67e4 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,17 +1,5 @@ ## Description -## Related links - -**Parent Issue:** - -- Link - - - ## How was this PR tested? ## Notes for reviewers diff --git a/.github/workflows/spell-check-daily.yaml b/.github/workflows/spell-check-daily.yaml new file mode 100644 index 00000000000..f6a14d00d86 --- /dev/null +++ b/.github/workflows/spell-check-daily.yaml @@ -0,0 +1,23 @@ +name: spell-check-daily + +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: + +jobs: + spell-check-daily: + runs-on: ubuntu-22.04 + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Run spell-check + uses: autowarefoundation/autoware-github-actions/spell-check@v1 + with: + local-cspell-json: .cspell.json + incremental-files-only: false + cspell-json-url: https://raw.githubusercontent.com/tier4/autoware-spell-check-dict/main/.cspell.json + dict-packages: | + https://github.com/autowarefoundation/autoware-spell-check-dict + https://github.com/tier4/cspell-dicts diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e6c3aba177d..b99c5e1c20c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,6 +10,7 @@ repos: - id: check-toml - id: check-xml - id: check-yaml + args: [--unsafe] - id: detect-private-key - id: end-of-file-fixer - id: mixed-line-ending @@ -32,6 +33,16 @@ repos: hooks: - id: yamllint + - repo: https://github.com/tier4/pre-commit-hooks-ros + rev: v0.10.0 + hooks: + - id: flake8-ros + - id: prettier-xacro + - id: prettier-launch-xml + - id: prettier-package-xml + - id: ros-include-guard + - id: sort-package-xml + - repo: https://github.com/shellcheck-py/shellcheck-py rev: v0.10.0.1 hooks: @@ -43,9 +54,48 @@ repos: - id: shfmt args: [-w, -s, -i=4] + - repo: https://github.com/pycqa/isort + rev: 5.13.2 + hooks: + - id: isort + + - repo: https://github.com/psf/black + rev: 24.8.0 + hooks: + - id: black + args: [--line-length=100] + + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v18.1.8 + hooks: + - id: clang-format + types_or: [c++, c, cuda] + + - repo: https://github.com/cpplint/cpplint + rev: 1.6.1 + hooks: + - id: cpplint + args: [--quiet] + exclude: .cu + + - repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.29.2 + hooks: + - id: check-metaschema + files: ^.+/schema/.*schema\.json$ + + - repo: local + hooks: + - id: prettier-svg + name: prettier svg + description: Apply Prettier with plugin-xml to svg. + entry: prettier --write --list-different --ignore-unknown --print-width 200 --xml-self-closing-space false --xml-whitespace-sensitivity ignore + language: node + files: .svg$ + additional_dependencies: [prettier@2.7.1, "@prettier/plugin-xml@2.2.0"] + - repo: https://github.com/AleksaC/hadolint-py rev: v2.12.1b3 hooks: - id: hadolint - -exclude: .svg + exclude: .svg$ diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg index 22a70a5fbc9..eb6b3fa15e7 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg index b283329b32b..9df564b2f46 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg index decd600a806..3d57b5a8da4 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg @@ -1,24 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg index 669c8ee6b77..e5aa4c609e4 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg @@ -1,24 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg index 22a70a5fbc9..eb6b3fa15e7 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg index a1b5eb770c3..d0f92cb0cee 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg index 462030e6b75..253a3390f8b 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg @@ -1,22 +1,27 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg index 73e58ac050b..58f7a262cab 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg @@ -1,19 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg index 31224808311..3c0f7d75cb7 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg index b283329b32b..9df564b2f46 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg index 67f84120ce2..5881dc0f7da 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg @@ -1,23 +1,23 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg index c747fc89c49..71db35634be 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg index 43acdf27491..1ad9694e59c 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg index 87f7840f363..7c8f5274b22 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg @@ -1,24 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg index 9f8af0ba8c3..ae87542b2da 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg @@ -1,24 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg index d22353f4e9e..7faf29d632d 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg index f737c436438..4d209ef8ffb 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg index d9eee3a1e08..19a52b880ee 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg index b49a8cf315b..cdbfa0da561 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg index 5d3bccb1941..5470a4c58cd 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg index 8f9b9ae512c..31f5e4888aa 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg index 797fb421df9..aa801e4045a 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg index 43b20a76820..80a8df071f2 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg index a39172c056a..14b6fec7f85 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg index 873587b1985..8b3839bc244 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg index 265a55067f5..2992a9fdfac 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg index 27990330dc2..28745854522 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg index e9c0436eb7e..c7f3755b2d4 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg index fed396b0d88..9026603c977 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg index 8176e8f50b0..2481bf8acc0 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg index bb2383e4ec7..ba80019b97e 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg @@ -1,20 +1,44 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg index e595c0d652d..71678e2e693 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg index 7be3c893e40..7c87293e9b3 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg index c11e849e587..5ad31e749b1 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg index ea2d8183e3d..e5173e229fa 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg @@ -1,22 +1,27 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg index 92003b1b80c..61dd75ad404 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg @@ -1,22 +1,27 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg index ec6ee7a3213..8d9ce155419 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg @@ -1,19 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg index 5defd965a50..22590a0bff1 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg @@ -1,19 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg index 4845aa5975c..26bb041dc59 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg index 6a3d5ec4839..bbc7bd248c4 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg @@ -1,29 +1,29 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg index ecd7581285f..7caf04186da 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg @@ -1,19 +1,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg index 6be8cb04a16..cb95aa21dd8 100644 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg @@ -1,3 +1,3 @@ - \ No newline at end of file + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg index 3c758445d0a..45aa5d57777 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg @@ -1,20 +1,20 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg index 0d639307250..8e7e03463e6 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg @@ -1,31 +1,31 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg index b6b267ead6f..a6c19f370d7 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg @@ -1,31 +1,31 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg index cab8eba2ab5..6eb3e13f7ad 100755 --- a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index 7ad00076c97..a9465e1a552 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -1,541 +1,692 @@ - + - - -G - - -cluster_legend - - - - -key -FROM ...  -COPY --from=...  -RUN --mount=(.*)from=...  - - - -key2 -  -  -  - - - -key:e->key2:w - - - - - -key:e->key2:w - - - - - -key:e->key2:w - - - - - -external_image_0 - -$BASE_IMAGE - - - -stage_0 - -base - - - -external_image_0->stage_0 - - - - - -stage_2 - -rosdep-depend - - - -external_image_0->stage_2 - - - - - -stage_1 - -base-cuda - - - -stage_0->stage_1 - - - - - -stage_8 - -core-devel - - - -stage_0->stage_8 - - - - - -stage_18 - -universe-sensing-perception - - - -stage_0->stage_18 - - - - - - -stage_20 - -universe-localization-mapping - - - -stage_0->stage_20 - - - - -stage_21 - -universe-planning-control - - - -stage_0->stage_21 - - - - - -stage_22 - -universe-vehicle-system - - - -stage_0->stage_22 - - - - - -stage_23 - -universe - - - -stage_0->stage_23 - - - - - - -stage_2->stage_8 - - - - - -stage_3 - -rosdep-universe-sensing-perception-depend - - - -stage_2->stage_3 - - - - - -stage_4 - -rosdep-universe-localization-mapping-depend - - - -stage_2->stage_4 - - - - - -stage_5 - -rosdep-universe-planning-control-depend - - - -stage_2->stage_5 - - - - - -stage_6 - -rosdep-universe-vehicle-system-depend - - - -stage_2->stage_6 - - - - - -stage_7 - -rosdep-universe-depend - - - -stage_2->stage_7 - - - - - - -stage_9 - -universe-common-devel - - - -stage_2->stage_9 - - - - - -stage_19 - -universe-sensing-perception-cuda - - - -stage_1->stage_19 - - - - - -stage_24 - -universe-cuda - - - -stage_1->stage_24 - - - - - -stage_8->stage_9 - - - - - -stage_3->stage_18 - - - - - -stage_3->stage_19 - - - - - -stage_11 - -universe-sensing-perception-devel - - - -stage_3->stage_11 - - - - - -stage_12 - -universe-sensing-perception-devel-cuda - - - -stage_3->stage_12 - - - - - - -stage_4->stage_20 - - - - - - -stage_13 - -universe-localization-mapping-devel - - - -stage_4->stage_13 - - - - - -stage_5->stage_21 - - - - - -stage_14 - -universe-planning-control-devel - - - -stage_5->stage_14 - - - - - -stage_6->stage_22 - - - - - - -stage_15 - -universe-vehicle-system-devel - - - -stage_6->stage_15 - - - - - -stage_7->stage_23 - - - - - -stage_7->stage_24 - - - - - - -stage_16 - -universe-devel - - - -stage_7->stage_16 - - - - - -stage_17 - -universe-devel-cuda - - - -stage_7->stage_17 - - - - - -stage_9->stage_11 - - - - - -stage_9->stage_13 - - - - - -stage_9->stage_14 - - - - - -stage_9->stage_15 - - - - - -stage_9->stage_16 - - - - - -stage_10 - -universe-common-devel-cuda - - - -stage_9->stage_10 - - - - - -stage_11->stage_18 - - - - - -stage_11->stage_12 - - - - - -stage_11->stage_16 - - - - - -stage_12->stage_19 - - - - - -stage_12->stage_17 - - - - - -stage_13->stage_20 - - - - - -stage_13->stage_16 - - - - - -stage_14->stage_21 - - - - - -stage_14->stage_16 - - - - - -stage_15->stage_22 - - - - - -stage_15->stage_16 - - - - - -stage_16->stage_23 - - - - - -stage_16->stage_17 - - - - - -stage_17->stage_24 - - - - - -stage_10->stage_12 - - - - - -stage_10->stage_17 - - - - + + + G + + + cluster_legend + + + + + key + FROM ... + COPY --from=...  + RUN --mount=(.*)from=...  + + + + key2 + + + + + + + key:e->key2:w + + + + + + key:e->key2:w + + + + + + key:e->key2:w + + + + + + external_image_0 + + $BASE_IMAGE + + + + stage_0 + + base + + + + external_image_0->stage_0 + + + + + + stage_2 + + rosdep-depend + + + + external_image_0->stage_2 + + + + + + stage_1 + + base-cuda + + + + stage_0->stage_1 + + + + + + stage_8 + + core-devel + + + + stage_0->stage_8 + + + + + + stage_18 + + universe-sensing-perception + + + + stage_0->stage_18 + + + + + + + stage_20 + + universe-localization-mapping + + + + stage_0->stage_20 + + + + + stage_21 + + universe-planning-control + + + + stage_0->stage_21 + + + + + + stage_22 + + universe-vehicle-system + + + + stage_0->stage_22 + + + + + + stage_23 + + universe + + + + stage_0->stage_23 + + + + + + + stage_2->stage_8 + + + + + + stage_3 + + rosdep-universe-sensing-perception-depend + + + + stage_2->stage_3 + + + + + + stage_4 + + rosdep-universe-localization-mapping-depend + + + + stage_2->stage_4 + + + + + + stage_5 + + rosdep-universe-planning-control-depend + + + + stage_2->stage_5 + + + + + + stage_6 + + rosdep-universe-vehicle-system-depend + + + + stage_2->stage_6 + + + + + + stage_7 + + rosdep-universe-depend + + + + stage_2->stage_7 + + + + + + + stage_9 + + universe-common-devel + + + + stage_2->stage_9 + + + + + + stage_19 + + universe-sensing-perception-cuda + + + + stage_1->stage_19 + + + + + + stage_24 + + universe-cuda + + + + stage_1->stage_24 + + + + + + stage_8->stage_9 + + + + + + stage_3->stage_18 + + + + + + stage_3->stage_19 + + + + + + stage_11 + + universe-sensing-perception-devel + + + + stage_3->stage_11 + + + + + + stage_12 + + universe-sensing-perception-devel-cuda + + + + stage_3->stage_12 + + + + + + + stage_4->stage_20 + + + + + + + stage_13 + + universe-localization-mapping-devel + + + + stage_4->stage_13 + + + + + + stage_5->stage_21 + + + + + + stage_14 + + universe-planning-control-devel + + + + stage_5->stage_14 + + + + + + stage_6->stage_22 + + + + + + + stage_15 + + universe-vehicle-system-devel + + + + stage_6->stage_15 + + + + + + stage_7->stage_23 + + + + + + stage_7->stage_24 + + + + + + + stage_16 + + universe-devel + + + + stage_7->stage_16 + + + + + + stage_17 + + universe-devel-cuda + + + + stage_7->stage_17 + + + + + + stage_9->stage_11 + + + + + + stage_9->stage_13 + + + + + + stage_9->stage_14 + + + + + + stage_9->stage_15 + + + + + + stage_9->stage_16 + + + + + + stage_10 + + universe-common-devel-cuda + + + + stage_9->stage_10 + + + + + + stage_11->stage_18 + + + + + + stage_11->stage_12 + + + + + + stage_11->stage_16 + + + + + + stage_12->stage_19 + + + + + + stage_12->stage_17 + + + + + + stage_13->stage_20 + + + + + + stage_13->stage_16 + + + + + + stage_14->stage_21 + + + + + + stage_14->stage_16 + + + + + + stage_15->stage_22 + + + + + + stage_15->stage_16 + + + + + + stage_16->stage_23 + + + + + + stage_16->stage_17 + + + + + + stage_17->stage_24 + + + + + + stage_10->stage_12 + + + + + + stage_10->stage_17 + + + + From b57b7ea5207652f85a49c0a95ba1516a9bfd06b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Fatih=20C=C4=B1r=C4=B1t?= Date: Fri, 29 Nov 2024 14:45:46 +0300 Subject: [PATCH 328/380] ci(sync-files): simplify by utilizing source-dir param (#5511) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: M. Fatih Cırıt --- .github/sync-files.yaml | 94 ++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 62 deletions(-) diff --git a/.github/sync-files.yaml b/.github/sync-files.yaml index aa720753cbf..e8d63cde667 100644 --- a/.github/sync-files.yaml +++ b/.github/sync-files.yaml @@ -1,64 +1,34 @@ - repository: autowarefoundation/sync-file-templates + source-dir: sources files: - - source: sources/.github/ISSUE_TEMPLATE/bug.yaml - dest: .github/ISSUE_TEMPLATE/bug.yaml - - source: sources/.github/ISSUE_TEMPLATE/config.yml - dest: .github/ISSUE_TEMPLATE/config.yml - - source: sources/.github/ISSUE_TEMPLATE/task.yaml - dest: .github/ISSUE_TEMPLATE/task.yaml - - source: sources/.github/dependabot.yaml - dest: .github/dependabot.yaml - - source: sources/.github/pull_request_template.md - dest: .github/pull_request_template.md - - source: sources/.github/stale.yml - dest: .github/stale.yml - - source: sources/.github/workflows/cancel-previous-workflows.yaml - dest: .github/workflows/cancel-previous-workflows.yaml - - source: sources/.github/workflows/comment-on-pr.yaml - dest: .github/workflows/comment-on-pr.yaml - - source: sources/.github/workflows/github-release.yaml - dest: .github/workflows/github-release.yaml - - source: sources/.github/workflows/pre-commit-optional.yaml - dest: .github/workflows/pre-commit-optional.yaml - - source: sources/.github/workflows/pre-commit-optional-autoupdate.yaml - dest: .github/workflows/pre-commit-optional-autoupdate.yaml - - source: sources/.github/workflows/pre-commit-autoupdate.yaml - dest: .github/workflows/pre-commit-autoupdate.yaml - - source: sources/.github/workflows/semantic-pull-request.yaml - dest: .github/workflows/semantic-pull-request.yaml - - source: sources/.github/workflows/spell-check-differential.yaml - dest: .github/workflows/spell-check-differential.yaml - - source: sources/.github/workflows/spell-check-daily.yaml - dest: .github/workflows/spell-check-daily.yaml - - source: sources/.github/workflows/sync-files.yaml - dest: .github/workflows/sync-files.yaml - - source: sources/.clang-format - dest: .clang-format - - source: sources/.clang-tidy - dest: .clang-tidy - - source: sources/.markdown-link-check.json - dest: .markdown-link-check.json - - source: sources/.markdownlint.yaml - dest: .markdownlint.yaml - - source: sources/.pre-commit-config-optional.yaml - dest: .pre-commit-config-optional.yaml - - source: sources/.pre-commit-config.yaml - dest: .pre-commit-config.yaml - - source: sources/.prettierignore - dest: .prettierignore - - source: sources/.prettierrc.yaml - dest: .prettierrc.yaml - - source: sources/.yamllint.yaml - dest: .yamllint.yaml - - source: sources/CODE_OF_CONDUCT.md - dest: CODE_OF_CONDUCT.md - - source: sources/CONTRIBUTING.md - dest: CONTRIBUTING.md - - source: sources/CPPLINT.cfg - dest: CPPLINT.cfg - - source: sources/DISCLAIMER.md - dest: DISCLAIMER.md - - source: sources/LICENSE - dest: LICENSE - - source: sources/setup.cfg - dest: setup.cfg + - source: .github/ISSUE_TEMPLATE/bug.yaml + - source: .github/ISSUE_TEMPLATE/config.yml + - source: .github/ISSUE_TEMPLATE/task.yaml + - source: .github/dependabot.yaml + - source: .github/pull_request_template.md + - source: .github/stale.yml + - source: .github/workflows/cancel-previous-workflows.yaml + - source: .github/workflows/comment-on-pr.yaml + - source: .github/workflows/github-release.yaml + - source: .github/workflows/pre-commit-optional.yaml + - source: .github/workflows/pre-commit-optional-autoupdate.yaml + - source: .github/workflows/pre-commit-autoupdate.yaml + - source: .github/workflows/semantic-pull-request.yaml + - source: .github/workflows/spell-check-differential.yaml + - source: .github/workflows/spell-check-daily.yaml + - source: .github/workflows/sync-files.yaml + - source: .clang-format + - source: .clang-tidy + - source: .markdown-link-check.json + - source: .markdownlint.yaml + - source: .pre-commit-config-optional.yaml + - source: .pre-commit-config.yaml + - source: .prettierignore + - source: .prettierrc.yaml + - source: .yamllint.yaml + - source: CODE_OF_CONDUCT.md + - source: CONTRIBUTING.md + - source: CPPLINT.cfg + - source: DISCLAIMER.md + - source: LICENSE + - source: setup.cfg From 5bdf3d496bb4f7a6587d8c5635435572d727a244 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 29 Nov 2024 15:27:13 +0000 Subject: [PATCH 329/380] chore: sync files (#5513) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .clang-format | 4 ++++ .clang-tidy | 4 ++++ .github/ISSUE_TEMPLATE/bug.yaml | 4 ++++ .github/ISSUE_TEMPLATE/config.yml | 4 ++++ .github/ISSUE_TEMPLATE/task.yaml | 4 ++++ .github/dependabot.yaml | 4 ++++ .github/stale.yml | 4 ++++ .github/workflows/cancel-previous-workflows.yaml | 4 ++++ .github/workflows/comment-on-pr.yaml | 4 ++++ .github/workflows/github-release.yaml | 4 ++++ .github/workflows/pre-commit-autoupdate.yaml | 4 ++++ .github/workflows/pre-commit-optional-autoupdate.yaml | 4 ++++ .github/workflows/pre-commit-optional.yaml | 4 ++++ .github/workflows/semantic-pull-request.yaml | 4 ++++ .github/workflows/spell-check-daily.yaml | 5 ++++- .github/workflows/spell-check-differential.yaml | 4 ++++ .github/workflows/sync-files.yaml | 4 ++++ .markdownlint.yaml | 4 ++++ .pre-commit-config-optional.yaml | 4 ++++ .pre-commit-config.yaml | 4 ++++ .prettierignore | 4 ++++ .prettierrc.yaml | 4 ++++ .yamllint.yaml | 4 ++++ CPPLINT.cfg | 4 ++++ setup.cfg | 4 ++++ 25 files changed, 100 insertions(+), 1 deletion(-) diff --git a/.clang-format b/.clang-format index b41fae9129e..cd54eb45dde 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + # Modified from https://github.com/ament/ament_lint/blob/master/ament_clang_format/ament_clang_format/configuration/.clang-format Language: Cpp BasedOnStyle: Google diff --git a/.clang-tidy b/.clang-tidy index f5eccdf3cc7..de12fb605c8 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + Checks: " -*, boost-use-to-string, diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index 12a857998a0..5c74f7c5e4d 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: Bug description: Report a bug body: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 48765c24a7b..deccbf336f6 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + blank_issues_enabled: false contact_links: - name: Question diff --git a/.github/ISSUE_TEMPLATE/task.yaml b/.github/ISSUE_TEMPLATE/task.yaml index cd8322f5074..58307325ce4 100644 --- a/.github/ISSUE_TEMPLATE/task.yaml +++ b/.github/ISSUE_TEMPLATE/task.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: Task description: Plan a task body: diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 0264c035357..8fd9b7f4ae0 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + version: 2 updates: - package-ecosystem: github-actions diff --git a/.github/stale.yml b/.github/stale.yml index bc99e4383ca..ffce036c8d0 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + # Modified from https://github.com/probot/stale#usage # Number of days of inactivity before an Issue or Pull Request with the stale label is closed diff --git a/.github/workflows/cancel-previous-workflows.yaml b/.github/workflows/cancel-previous-workflows.yaml index bd2463d5a8e..ee79ce0e4d4 100644 --- a/.github/workflows/cancel-previous-workflows.yaml +++ b/.github/workflows/cancel-previous-workflows.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: cancel-previous-workflows on: diff --git a/.github/workflows/comment-on-pr.yaml b/.github/workflows/comment-on-pr.yaml index c80141ddac6..0f2ecf519db 100644 --- a/.github/workflows/comment-on-pr.yaml +++ b/.github/workflows/comment-on-pr.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: comment-on-pr on: pull_request_target: diff --git a/.github/workflows/github-release.yaml b/.github/workflows/github-release.yaml index 4b1d7f47c6c..bbe2ac512d7 100644 --- a/.github/workflows/github-release.yaml +++ b/.github/workflows/github-release.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: github-release on: diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml index 8d57a53b5cc..489e32a1de1 100644 --- a/.github/workflows/pre-commit-autoupdate.yaml +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: pre-commit-autoupdate on: diff --git a/.github/workflows/pre-commit-optional-autoupdate.yaml b/.github/workflows/pre-commit-optional-autoupdate.yaml index a9fe00401a1..be79ad481d1 100644 --- a/.github/workflows/pre-commit-optional-autoupdate.yaml +++ b/.github/workflows/pre-commit-optional-autoupdate.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: pre-commit-optional-autoupdate on: diff --git a/.github/workflows/pre-commit-optional.yaml b/.github/workflows/pre-commit-optional.yaml index 12f536c5516..3d0867028f7 100644 --- a/.github/workflows/pre-commit-optional.yaml +++ b/.github/workflows/pre-commit-optional.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: pre-commit-optional on: diff --git a/.github/workflows/semantic-pull-request.yaml b/.github/workflows/semantic-pull-request.yaml index 71224c224ec..b56040b084f 100644 --- a/.github/workflows/semantic-pull-request.yaml +++ b/.github/workflows/semantic-pull-request.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: semantic-pull-request on: diff --git a/.github/workflows/spell-check-daily.yaml b/.github/workflows/spell-check-daily.yaml index f6a14d00d86..2ff647acf03 100644 --- a/.github/workflows/spell-check-daily.yaml +++ b/.github/workflows/spell-check-daily.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: spell-check-daily on: @@ -15,7 +19,6 @@ jobs: - name: Run spell-check uses: autowarefoundation/autoware-github-actions/spell-check@v1 with: - local-cspell-json: .cspell.json incremental-files-only: false cspell-json-url: https://raw.githubusercontent.com/tier4/autoware-spell-check-dict/main/.cspell.json dict-packages: | diff --git a/.github/workflows/spell-check-differential.yaml b/.github/workflows/spell-check-differential.yaml index 90d59626723..e3af4327f21 100644 --- a/.github/workflows/spell-check-differential.yaml +++ b/.github/workflows/spell-check-differential.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: spell-check-differential on: diff --git a/.github/workflows/sync-files.yaml b/.github/workflows/sync-files.yaml index 0cffbcd2a26..9224c1503ed 100644 --- a/.github/workflows/sync-files.yaml +++ b/.github/workflows/sync-files.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + name: sync-files on: diff --git a/.markdownlint.yaml b/.markdownlint.yaml index 7b7359fe0cd..584154b2009 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + # See https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md for all rules. default: true MD013: false diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index 8c9345e15f0..ff325af5e87 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + repos: - repo: https://github.com/tcort/markdown-link-check rev: v3.12.2 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b99c5e1c20c..e6dcc3f464a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + ci: autofix_commit_msg: "style(pre-commit): autofix" diff --git a/.prettierignore b/.prettierignore index a3c34d00a13..3e96aacebba 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,6 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + *.param.yaml *.rviz diff --git a/.prettierrc.yaml b/.prettierrc.yaml index e29bf327627..fe476936f7b 100644 --- a/.prettierrc.yaml +++ b/.prettierrc.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + printWidth: 100 tabWidth: 2 overrides: diff --git a/.yamllint.yaml b/.yamllint.yaml index 2c7bd088e26..e0be62dbcb1 100644 --- a/.yamllint.yaml +++ b/.yamllint.yaml @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + extends: default ignore: | diff --git a/CPPLINT.cfg b/CPPLINT.cfg index ba6bdf08c10..81869c92be6 100644 --- a/CPPLINT.cfg +++ b/CPPLINT.cfg @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + # Modified from https://github.com/ament/ament_lint/blob/ebd524bb9973d5ec1dc48a670ce54f958a5a0243/ament_cpplint/ament_cpplint/main.py#L64-L120 set noparent linelength=100 diff --git a/setup.cfg b/setup.cfg index 5214751c7ba..4d7d5e5b959 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,7 @@ +# This file is automatically synced from: +# https://github.com/autowarefoundation/sync-file-templates +# To make changes, update the source repository and follow the guidelines in its README. + [flake8] # Modified from https://github.com/ament/ament_lint/blob/ebd524bb9973d5ec1dc48a670ce54f958a5a0243/ament_flake8/ament_flake8/configuration/ament_flake8.ini extend-ignore = B902,C816,D100,D101,D102,D103,D104,D105,D106,D107,D203,D212,D404,I202,CNL100,E203,E501,Q000 From d8367f9acea56c59fd64e1ec88027be3bf50baf1 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 2 Dec 2024 19:21:51 +0900 Subject: [PATCH 330/380] feat(.github): push version tag images (#5522) * add tag pattern Signed-off-by: Yutaka Kondo * fix syntax Signed-off-by: Yutaka Kondo * add tags Signed-off-by: Yutaka Kondo * fix prefix and suffix Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push-cuda/action.yaml | 6 +++++- .github/actions/docker-build-and-push/action.yaml | 11 +++++++++++ .github/workflows/docker-build-and-push-arm64.yaml | 1 + .github/workflows/docker-build-and-push.yaml | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/actions/docker-build-and-push-cuda/action.yaml b/.github/actions/docker-build-and-push-cuda/action.yaml index bf9d9ca0854..92e7fcf01ef 100644 --- a/.github/actions/docker-build-and-push-cuda/action.yaml +++ b/.github/actions/docker-build-and-push-cuda/action.yaml @@ -72,6 +72,7 @@ runs: tags: | type=raw,value=universe-sensing-perception-devel-cuda-${{ inputs.platform }} type=raw,value=universe-sensing-perception-devel-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-sensing-perception-devel-cuda-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception-devel-cuda flavor: | latest=false @@ -84,6 +85,7 @@ runs: tags: | type=raw,value=universe-sensing-perception-cuda-${{ inputs.platform }} type=raw,value=universe-sensing-perception-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-sensing-perception-cuda-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception-cuda flavor: | latest=false @@ -96,6 +98,7 @@ runs: tags: | type=raw,value=universe-devel-cuda-${{ inputs.platform }} type=raw,value=universe-devel-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-devel-cuda-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-devel-cuda flavor: | latest=false @@ -108,9 +111,10 @@ runs: tags: | type=raw,value=universe-cuda-${{ inputs.platform }} type=raw,value=universe-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-cuda-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-cuda flavor: | - latest=auto + latest=false - name: Login to GitHub Container Registry uses: docker/login-action@v3 diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index c028eede588..5feb1bcc419 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -72,6 +72,7 @@ runs: tags: | type=raw,value=core-devel-${{ inputs.platform }} type=raw,value=core-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=core-devel-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-core-devel flavor: | latest=false @@ -84,6 +85,7 @@ runs: tags: | type=raw,value=universe-sensing-perception-devel-${{ inputs.platform }} type=raw,value=universe-sensing-perception-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-sensing-perception-devel-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception-devel flavor: | latest=false @@ -96,6 +98,7 @@ runs: tags: | type=raw,value=universe-sensing-perception-${{ inputs.platform }} type=raw,value=universe-sensing-perception-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-sensing-perception-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-sensing-perception flavor: | latest=false @@ -108,6 +111,7 @@ runs: tags: | type=raw,value=universe-localization-mapping-devel-${{ inputs.platform }} type=raw,value=universe-localization-mapping-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-localization-mapping-devel-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-localization-mapping-devel flavor: | latest=false @@ -120,6 +124,7 @@ runs: tags: | type=raw,value=universe-localization-mapping-${{ inputs.platform }} type=raw,value=universe-localization-mapping-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-localization-mapping-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-localization-mapping flavor: | latest=false @@ -132,6 +137,7 @@ runs: tags: | type=raw,value=universe-planning-control-devel-${{ inputs.platform }} type=raw,value=universe-planning-control-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-planning-control-devel-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-planning-control-devel flavor: | latest=false @@ -144,6 +150,7 @@ runs: tags: | type=raw,value=universe-planning-control-${{ inputs.platform }} type=raw,value=universe-planning-control-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-planning-control-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-planning-control flavor: | latest=false @@ -156,6 +163,7 @@ runs: tags: | type=raw,value=universe-vehicle-system-devel-${{ inputs.platform }} type=raw,value=universe-vehicle-system-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-vehicle-system-devel-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-vehicle-system-devel flavor: | latest=false @@ -168,6 +176,7 @@ runs: tags: | type=raw,value=universe-vehicle-system-${{ inputs.platform }} type=raw,value=universe-vehicle-system-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-vehicle-system-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-vehicle-system flavor: | latest=false @@ -180,6 +189,7 @@ runs: tags: | type=raw,value=universe-devel-${{ inputs.platform }} type=raw,value=universe-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-devel-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe-devel flavor: | latest=false @@ -192,6 +202,7 @@ runs: tags: | type=raw,value=universe-${{ inputs.platform }} type=raw,value=universe-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-,suffix=-${{ inputs.platform }} bake-target: docker-metadata-action-universe flavor: | latest=auto diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index ee50b263616..7242629c590 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -5,6 +5,7 @@ on: branches: - main tags: + - "*.*.*" workflow_dispatch: jobs: diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 4fbcb666b0f..280fe2efbb3 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -5,6 +5,7 @@ on: branches: - main tags: + - "*.*.*" workflow_dispatch: jobs: From d5a18ba7d344cd4647136ea49b36ff28a1ac666e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 3 Dec 2024 10:57:30 +0900 Subject: [PATCH 331/380] feat(.github): add `on:push:branches:` condition to `autoware-base` workflow (#5524) add paths arg Signed-off-by: Yutaka Kondo --- .github/workflows/autoware-base.yaml | 31 +++++++++------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/.github/workflows/autoware-base.yaml b/.github/workflows/autoware-base.yaml index e3d9720bcc4..72daa21e9cd 100644 --- a/.github/workflows/autoware-base.yaml +++ b/.github/workflows/autoware-base.yaml @@ -1,6 +1,14 @@ name: autoware-base on: + push: + branches: + - main + paths: + - docker/Dockerfile.base + - docker/scripts/cleanup_*.sh + - .github/actions/docker-build-and-push-base/* + - .github/workflows/autoware-base.yaml schedule: - cron: 0 0 15 * * # every 15th of the month workflow_dispatch: @@ -9,28 +17,9 @@ jobs: load-env: uses: ./.github/workflows/load-env.yaml - autoware-base-amd64: + autoware-base: needs: load-env runs-on: ubuntu-22.04 - steps: - - name: Check out this repository - uses: actions/checkout@v4 - - - name: Free disk space - uses: ./.github/actions/free-disk-space - - - name: Build Autoware's base images - uses: ./.github/actions/docker-build-and-push-base - with: - target-image: autoware-base - build-args: | - *.platform=linux/amd64 - *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} - *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} - - autoware-base-arm64: - needs: [load-env, autoware-base-amd64] - runs-on: ubuntu-22.04 steps: - name: Check out this repository uses: actions/checkout@v4 @@ -46,6 +35,6 @@ jobs: with: target-image: autoware-base build-args: | - *.platform=linux/arm64 + *.platform=linux/amd64,linux/arm64 *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }} *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }} From 9185662fe8cf0810c6dee63a07378b304cde4c2e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 3 Dec 2024 10:58:17 +0900 Subject: [PATCH 332/380] fix(.github): not push manifest if eithor `amd64` or `arm64` image is missing (#5525) not push manifest if eithor amd64 or arm64 is missing Signed-off-by: Yutaka Kondo --- .github/actions/combine-multi-arch-images/action.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/combine-multi-arch-images/action.yaml b/.github/actions/combine-multi-arch-images/action.yaml index 8c446c5ff2c..43779450543 100644 --- a/.github/actions/combine-multi-arch-images/action.yaml +++ b/.github/actions/combine-multi-arch-images/action.yaml @@ -82,14 +82,14 @@ runs: amd64_image="${{ steps.set-image-name.outputs.image-name }}:$amd64_tag" else echo "No amd64 tag found for '$base_tag'." - amd64_image="" + continue fi if [ "$arm64_tag" != "" ]; then arm64_image="${{ steps.set-image-name.outputs.image-name }}:$arm64_tag" else echo "No arm64 tag found for '$base_tag'." - arm64_image="" + continue fi echo "amd64_image: $amd64_image" From 503b2a0a2ba26edde2a1ddcef0e65571411cb79e Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Tue, 3 Dec 2024 23:02:22 +0900 Subject: [PATCH 333/380] chore(autoware.repos): fix autoware.core commit hash (#5530) Signed-off-by: Ryohsuke Mitsudome --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index c7e85183ed4..3cf0b40ff1a 100644 --- a/autoware.repos +++ b/autoware.repos @@ -33,7 +33,7 @@ repositories: core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git - version: main + version: 0.0.0 # universe universe/autoware.universe: type: git From 33215d656ae94fa4d27a0059192c3dd210d54759 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 5 Dec 2024 15:51:36 +0900 Subject: [PATCH 334/380] feat(.git): delete `-amd64` and `-arm64` image tags after pushing manifest (#5526) * not push manifest if eithor amd64 or arm64 is missing Signed-off-by: Yutaka Kondo * delete -amd64 and -arm64 tags Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- .../actions/combine-multi-arch-images/action.yaml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/actions/combine-multi-arch-images/action.yaml b/.github/actions/combine-multi-arch-images/action.yaml index 43779450543..874054f4ed2 100644 --- a/.github/actions/combine-multi-arch-images/action.yaml +++ b/.github/actions/combine-multi-arch-images/action.yaml @@ -67,7 +67,7 @@ runs: ALL_TAGS: ${{ steps.get-all-tags.outputs.tags }} shell: bash - - name: Create Docker manifest + - name: Create Docker manifest and delete -amd64 and -arm64 tags run: | for base_tag in $BASE_TAGS; do echo -e "\nbase_tag: $base_tag" @@ -100,6 +100,16 @@ runs: $arm64_image; then docker manifest push ${{ steps.set-image-name.outputs.image-name }}:$base_tag + + # Delete amd64_image and arm64_image + curl -X DELETE \ + -H "Authorization: Bearer ${{ github.token }}" \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/orgs/${{ github.repository_owner }}/packages/container/${{ inputs.package-name }}/versions/$amd64_tag + curl -X DELETE \ + -H "Authorization: Bearer ${{ github.token }}" \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/orgs/${{ github.repository_owner }}/packages/container/${{ inputs.package-name }}/versions/$arm64_tag fi done env: From 302e8b51c03a3599030b6492002254aefca55da3 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 5 Dec 2024 22:02:43 +0900 Subject: [PATCH 335/380] chore(.github): skip `free-disk-space` action if there are no changed files (#5536) skip free-disk-space action Signed-off-by: Yutaka Kondo --- .../workflows/docker-build-and-push-arm64.yaml | 18 ++++++++++++------ .github/workflows/docker-build-and-push.yaml | 18 ++++++++++++------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docker-build-and-push-arm64.yaml b/.github/workflows/docker-build-and-push-arm64.yaml index 7242629c590..167c1d7ebf3 100644 --- a/.github/workflows/docker-build-and-push-arm64.yaml +++ b/.github/workflows/docker-build-and-push-arm64.yaml @@ -29,9 +29,6 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Free disk space - uses: ./.github/actions/free-disk-space - - name: Get changed files id: changed-files uses: tj-actions/changed-files@v45 @@ -45,6 +42,12 @@ jobs: ansible/** docker/** + - name: Free disk space + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} + uses: ./.github/actions/free-disk-space + - name: Build 'Autoware' without CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || @@ -81,9 +84,6 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Free disk space - uses: ./.github/actions/free-disk-space - - name: Get changed files id: changed-files uses: tj-actions/changed-files@v45 @@ -97,6 +97,12 @@ jobs: ansible/** docker/** + - name: Free disk space + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} + uses: ./.github/actions/free-disk-space + - name: Build 'Autoware' with CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 280fe2efbb3..567678bde3e 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -24,9 +24,6 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Free disk space - uses: ./.github/actions/free-disk-space - - name: Get changed files id: changed-files uses: tj-actions/changed-files@v45 @@ -40,6 +37,12 @@ jobs: ansible/** docker/** + - name: Free disk space + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} + uses: ./.github/actions/free-disk-space + - name: Build 'Autoware' without CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || @@ -76,9 +79,6 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Free disk space - uses: ./.github/actions/free-disk-space - - name: Get changed files id: changed-files uses: tj-actions/changed-files@v45 @@ -92,6 +92,12 @@ jobs: ansible/** docker/** + - name: Free disk space + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref_type == 'tag') }} + uses: ./.github/actions/free-disk-space + - name: Build 'Autoware' with CUDA if: ${{ steps.changed-files.outputs.any_changed == 'true' || github.event_name == 'workflow_dispatch' || From f4698fd022ec9ffdad7f9a93cb34b5ade687a57f Mon Sep 17 00:00:00 2001 From: Ryuta Kambe Date: Wed, 11 Dec 2024 19:58:11 +0900 Subject: [PATCH 336/380] ci: enable bugprone-* warnings in clang-tidy (#5543) Signed-off-by: Ryuta Kambe --- .clang-tidy-ci | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.clang-tidy-ci b/.clang-tidy-ci index b5928f04733..5bba4fb90f9 100644 --- a/.clang-tidy-ci +++ b/.clang-tidy-ci @@ -1,6 +1,17 @@ Checks: " -*, - bugprone-dangling-handle" + bugprone-*, + -bugprone-branch-clone, + -bugprone-easily-swappable-parameters, + -bugprone-exception-escape, + -bugprone-implicit-widening-of-multiplication-result, + -bugprone-infinite-loop, + -bugprone-integer-division, + -bugprone-macro-parentheses, + -bugprone-narrowing-conversions, + -bugprone-parent-virtual-call, + -bugprone-reserved-identifier, + -bugprone-signed-char-misuse" WarningsAsErrors: "*" From 5c01fb0991ea70c3ccb9112ba9739511bb38a491 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Thu, 12 Dec 2024 09:28:09 +0900 Subject: [PATCH 337/380] feat(autoware.repos): use version tag for sensor_kits (#5554) Signed-off-by: Ryohsuke Mitsudome --- autoware.repos | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoware.repos b/autoware.repos index 3cf0b40ff1a..61b499632f9 100644 --- a/autoware.repos +++ b/autoware.repos @@ -108,11 +108,11 @@ repositories: sensor_kit/sample_sensor_kit_launch: type: git url: https://github.com/autowarefoundation/sample_sensor_kit_launch.git - version: main + version: 0.39.0 sensor_kit/external/awsim_sensor_kit_launch: # TODO: Integrate into sample_sensor_kit_launch type: git url: https://github.com/tier4/awsim_sensor_kit_launch.git - version: main + version: 0.39.0 sensor_kit/awsim_labs_sensor_kit_launch: type: git url: https://github.com/autowarefoundation/awsim_labs_sensor_kit_launch.git From 46ec487290494de37e545b7c5ec1f894d705648e Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:58:39 +0300 Subject: [PATCH 338/380] ci(pre-commit-ansible): autoupdate (#5552) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-ansible.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-ansible.yaml b/.pre-commit-config-ansible.yaml index 161ab4efada..971918e470f 100644 --- a/.pre-commit-config-ansible.yaml +++ b/.pre-commit-config-ansible.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ansible/ansible-lint.git - rev: v24.10.0 + rev: v24.12.2 hooks: - id: ansible-lint additional_dependencies: From 3ee11e31e491376006a6e8c774b30286087f7eb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:59:26 +0300 Subject: [PATCH 339/380] chore(deps): bump peter-evans/create-pull-request from 6 to 7 (#5162) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-tool-versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-tool-versions.yaml b/.github/workflows/update-tool-versions.yaml index 2f38b8a2213..7ffa17bd25d 100644 --- a/.github/workflows/update-tool-versions.yaml +++ b/.github/workflows/update-tool-versions.yaml @@ -40,7 +40,7 @@ jobs: - name: Create PR id: create-pr - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: token: ${{ steps.generate-token.outputs.token }} base: ${{ github.event.repository.default_branch }} From d99cfdef4c3ee46077bb3127bd74d48c49c5e84f Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:01:30 +0300 Subject: [PATCH 340/380] ci(pre-commit-optional): autoupdate (#5401) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index ff325af5e87..56000d93a8a 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -4,7 +4,7 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.12.2 + rev: v3.13.6 hooks: - id: markdown-link-check args: [--quiet, --config=.markdown-link-check.json] From 11e970519420386bc55de4700699347f49435f81 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:44:05 +0000 Subject: [PATCH 341/380] chore: sync files (#5541) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .github/dependabot.yaml | 3 ++- .github/workflows/pre-commit-autoupdate.yaml | 2 +- .../pre-commit-optional-autoupdate.yaml | 2 +- .pre-commit-config.yaml | 18 +++++++++++------- CPPLINT.cfg | 2 ++ 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 8fd9b7f4ae0..8e2d7193aed 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -6,8 +6,9 @@ version: 2 updates: - package-ecosystem: github-actions directory: / + # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#scheduleinterval schedule: - interval: daily + interval: monthly open-pull-requests-limit: 1 labels: - tag:bot diff --git a/.github/workflows/pre-commit-autoupdate.yaml b/.github/workflows/pre-commit-autoupdate.yaml index 489e32a1de1..60c17d9dabf 100644 --- a/.github/workflows/pre-commit-autoupdate.yaml +++ b/.github/workflows/pre-commit-autoupdate.yaml @@ -6,7 +6,7 @@ name: pre-commit-autoupdate on: schedule: - - cron: 0 0 * * * + - cron: 0 0 1 1,4,7,10 * # quarterly workflow_dispatch: jobs: diff --git a/.github/workflows/pre-commit-optional-autoupdate.yaml b/.github/workflows/pre-commit-optional-autoupdate.yaml index be79ad481d1..6639e5ca6c6 100644 --- a/.github/workflows/pre-commit-optional-autoupdate.yaml +++ b/.github/workflows/pre-commit-optional-autoupdate.yaml @@ -6,7 +6,7 @@ name: pre-commit-optional-autoupdate on: schedule: - - cron: 0 0 * * * + - cron: 0 0 1 1,4,7,10 * # quarterly workflow_dispatch: jobs: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e6dcc3f464a..a87ad293fd9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,12 +2,16 @@ # https://github.com/autowarefoundation/sync-file-templates # To make changes, update the source repository and follow the guidelines in its README. +# https://pre-commit.ci/#configuration ci: autofix_commit_msg: "style(pre-commit): autofix" + # we already have our own daily update mechanism, we set this to quarterly + autoupdate_schedule: quarterly + autoupdate_commit_msg: "ci(pre-commit): quarterly autoupdate" repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: check-json - id: check-merge-conflict @@ -22,7 +26,7 @@ repos: args: [--markdown-linebreak-ext=md] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.41.0 + rev: v0.43.0 hooks: - id: markdownlint args: [-c, .markdownlint.yaml, --fix] @@ -53,7 +57,7 @@ repos: - id: shellcheck - repo: https://github.com/scop/pre-commit-shfmt - rev: v3.9.0-1 + rev: v3.10.0-2 hooks: - id: shfmt args: [-w, -s, -i=4] @@ -64,26 +68,26 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 24.8.0 + rev: 24.10.0 hooks: - id: black args: [--line-length=100] - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v18.1.8 + rev: v19.1.4 hooks: - id: clang-format types_or: [c++, c, cuda] - repo: https://github.com/cpplint/cpplint - rev: 1.6.1 + rev: 2.0.0 hooks: - id: cpplint args: [--quiet] exclude: .cu - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.29.2 + rev: 0.30.0 hooks: - id: check-metaschema files: ^.+/schema/.*schema\.json$ diff --git a/CPPLINT.cfg b/CPPLINT.cfg index 81869c92be6..159042dba0b 100644 --- a/CPPLINT.cfg +++ b/CPPLINT.cfg @@ -7,10 +7,12 @@ set noparent linelength=100 includeorder=standardcfirst filter=-build/c++11 # we do allow C++11 +filter=-build/c++17 # we allow filter=-build/namespaces_literals # we allow using namespace for literals filter=-runtime/references # we consider passing non-const references to be ok filter=-whitespace/braces # we wrap open curly braces for namespaces, classes and functions filter=-whitespace/indent # we don't indent keywords like public, protected and private with one space +filter=-whitespace/newline # we allow the developer to decide about newline at the end of file (it's clashing with clang-format) filter=-whitespace/parens # we allow closing parenthesis to be on the next line filter=-whitespace/semicolon # we allow the developer to decide about whitespace after a semicolon filter=-build/header_guard # we automatically fix the names of header guards using pre-commit From bad175eb1300d55b4a5088085553cf4bb7258f62 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 09:56:46 +0300 Subject: [PATCH 342/380] chore: sync files (#5572) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a87ad293fd9..48a97c13ef9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -74,7 +74,7 @@ repos: args: [--line-length=100] - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v19.1.4 + rev: v19.1.5 hooks: - id: clang-format types_or: [c++, c, cuda] From b0ae17744faf78b35e7b287dd35521847a5ea12c Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 17 Dec 2024 22:48:09 +0900 Subject: [PATCH 343/380] fix(.github): fix CODEOWNERS (#5575) Update CODEOWNERS --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 765564beaf4..98759c5c103 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ -* ryohsuke.mitsudome@tier4.jp mfc@leodrive.ai +* ryohsuke.mitsudome@tier4.jp mfc@autoware.org .devcontainer/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp .github/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp From 5a42d965691cd761af29bfe04655f054aa52763b Mon Sep 17 00:00:00 2001 From: Fumiya Watanabe Date: Tue, 17 Dec 2024 23:09:56 +0900 Subject: [PATCH 344/380] fix: update branch of scenario_simulator_v2 to master (#5570) Signed-off-by: Fumiya Watanabe --- simulator.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulator.repos b/simulator.repos index 30e005c4f0c..2940aa4f72f 100644 --- a/simulator.repos +++ b/simulator.repos @@ -2,4 +2,4 @@ repositories: simulator/scenario_simulator: type: git url: https://github.com/tier4/scenario_simulator_v2.git - version: RJD-736/autoware_msgs_support # TODO(mitsudome-r): switch back to master once this branch is merged + version: 7.3.1 From 2e05c36f76f38cbfe53cfadb4c548402a953b24c Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 18 Dec 2024 18:28:00 +0900 Subject: [PATCH 345/380] feat(autoware.repos): remove `autoware_common` from `autoware.repos` (#5578) --- autoware.repos | 5 ----- 1 file changed, 5 deletions(-) diff --git a/autoware.repos b/autoware.repos index 61b499632f9..10d2bb5a63d 100644 --- a/autoware.repos +++ b/autoware.repos @@ -13,11 +13,6 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git version: 1.1.0 - # TODO(youtalk): Remove autoware_common when https://github.com/autowarefoundation/autoware/issues/4911 is closed - core/autoware_common: - type: git - url: https://github.com/autowarefoundation/autoware_common.git - version: remove-autoware-cmake-utils core/autoware_cmake: type: git url: https://github.com/autowarefoundation/autoware_cmake.git From 8f750f46ff081302cb6435c00b289b3f814a3dac Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 19 Dec 2024 07:01:57 +0900 Subject: [PATCH 346/380] chore(.devcontainer): add `core-devel` development container (#5574) add core-devel devcontainer Signed-off-by: Yutaka Kondo --- .devcontainer/core-devel/devcontainer.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .devcontainer/core-devel/devcontainer.json diff --git a/.devcontainer/core-devel/devcontainer.json b/.devcontainer/core-devel/devcontainer.json new file mode 100644 index 00000000000..da76c733436 --- /dev/null +++ b/.devcontainer/core-devel/devcontainer.json @@ -0,0 +1,22 @@ +{ + "name": "autoware:core-devel", + "build": { + "dockerfile": "../Dockerfile", + "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:core-devel" } + }, + "remoteUser": "autoware", + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined", + "--net=host", + "--volume=/etc/localtime:/etc/localtime:ro" + ], + "customizations": { + "vscode": { + "settings.json": { + "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } } + } + } + } +} From 8f35d9b7deacf55363b19bc8118b93d729c719f5 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 21:39:37 +0900 Subject: [PATCH 347/380] feat(autoware.repos): minor update autowarefoundation/autoware_internal_msgs to 1.2.0 (#5584) Signed-off-by: github-actions Co-authored-by: github-actions --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 10d2bb5a63d..3d75d5cfcd4 100644 --- a/autoware.repos +++ b/autoware.repos @@ -12,7 +12,7 @@ repositories: core/autoware_internal_msgs: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git - version: 1.1.0 + version: 1.2.0 core/autoware_cmake: type: git url: https://github.com/autowarefoundation/autoware_cmake.git From 7acb8efa608dbf4a45d88f9c4d1f7365b9b3d07b Mon Sep 17 00:00:00 2001 From: Junya Sasaki Date: Fri, 20 Dec 2024 14:28:23 +0900 Subject: [PATCH 348/380] feat: monitor version update in `simulator.repos` too (#5590) Signed-off-by: Junya Sasaki --- .../create-prs-to-update-vcs-repositories.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/create-prs-to-update-vcs-repositories.yaml b/.github/workflows/create-prs-to-update-vcs-repositories.yaml index adb5628e28a..ca34700bdda 100644 --- a/.github/workflows/create-prs-to-update-vcs-repositories.yaml +++ b/.github/workflows/create-prs-to-update-vcs-repositories.yaml @@ -18,7 +18,7 @@ jobs: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.PRIVATE_KEY }} - - name: Create PRs to update VCS repositories + - name: Create PRs to update VCS repositories for autoware.repos uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 with: token: ${{ steps.generate-token.outputs.token }} @@ -29,3 +29,15 @@ jobs: new_branch_prefix: feat/update- autoware_repos_file_name: autoware.repos verbosity: 0 + + - name: Create PRs to update VCS repositories for simulator.repos + uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 + with: + token: ${{ steps.generate-token.outputs.token }} + repo_name: autowarefoundation/autoware + parent_dir: . + targets: major minor patch + base_branch: main + new_branch_prefix: feat/update- + autoware_repos_file_name: simulator.repos + verbosity: 0 From 2474461339b0e7e81bb1bc85768e7468840cc8da Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 16:51:05 +0900 Subject: [PATCH 349/380] feat(simulator.repos): patch update tier4/scenario_simulator_v2 to 7.3.5 (#5592) Signed-off-by: github-actions Co-authored-by: github-actions --- simulator.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulator.repos b/simulator.repos index 2940aa4f72f..fa700902666 100644 --- a/simulator.repos +++ b/simulator.repos @@ -2,4 +2,4 @@ repositories: simulator/scenario_simulator: type: git url: https://github.com/tier4/scenario_simulator_v2.git - version: 7.3.1 + version: 7.3.5 From b3b7c8dd019deed118b2c442e36bfc4f03606cde Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Fri, 20 Dec 2024 17:24:14 +0900 Subject: [PATCH 350/380] feat(autoware.repos): use version tag for single_lidar_sensor_kit_launch (#5566) Signed-off-by: Ryohsuke Mitsudome --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 3d75d5cfcd4..3763c1dcda9 100644 --- a/autoware.repos +++ b/autoware.repos @@ -115,7 +115,7 @@ repositories: sensor_kit/single_lidar_sensor_kit_launch: type: git url: https://github.com/autowarefoundation/single_lidar_sensor_kit_launch.git - version: main + version: 0.39.0 # vehicle vehicle/sample_vehicle_launch: type: git From e5494de02afd2787f5c6b2e91b1bc5277b9c425f Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Fri, 20 Dec 2024 19:47:34 +0900 Subject: [PATCH 351/380] feat(autoware.repos): use version tag for awsim_labs_sensor_kit_launch (#5567) feat(autoware.repo): use version tag for awsim_labs_sensor_kit_launch Signed-off-by: Ryohsuke Mitsudome --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 3763c1dcda9..33e5b5958a9 100644 --- a/autoware.repos +++ b/autoware.repos @@ -111,7 +111,7 @@ repositories: sensor_kit/awsim_labs_sensor_kit_launch: type: git url: https://github.com/autowarefoundation/awsim_labs_sensor_kit_launch.git - version: main + version: 0.39.0 sensor_kit/single_lidar_sensor_kit_launch: type: git url: https://github.com/autowarefoundation/single_lidar_sensor_kit_launch.git From 593f1419b7a3c0eec787a2423424accab3c3b62f Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Sun, 22 Dec 2024 10:34:37 +0300 Subject: [PATCH 352/380] chore: sync files (#5598) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .pre-commit-config-optional.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index 56000d93a8a..ff325af5e87 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -4,7 +4,7 @@ repos: - repo: https://github.com/tcort/markdown-link-check - rev: v3.13.6 + rev: v3.12.2 hooks: - id: markdown-link-check args: [--quiet, --config=.markdown-link-check.json] From c490050599aef24e7d82e5db33d920ac58e93495 Mon Sep 17 00:00:00 2001 From: Amadeusz Szymko Date: Mon, 23 Dec 2024 16:58:03 +0900 Subject: [PATCH 353/380] fix(docker): update build script with respect to multi-container design (#5571) --- docker/build.sh | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index b962137b79c..d0d8b8976eb 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -59,9 +59,9 @@ set_cuda_options() { # Set build options set_build_options() { if [ "$option_devel_only" = "true" ]; then - targets=("universe-devel") + target="universe-devel" else - targets=() + target="universe" fi } @@ -121,10 +121,10 @@ build_images() { echo "Setup args: $setup_args" echo "Lib dir: $lib_dir" echo "Image name suffix: $image_name_suffix" - echo "Targets: ${targets[*]}" + echo "Target: $target" set -x - docker buildx bake --load --progress=plain -f "$SCRIPT_DIR/docker-bake.hcl" \ + docker buildx bake --load --progress=plain -f "$SCRIPT_DIR/docker-bake-base.hcl" \ --set "*.context=$WORKSPACE_ROOT" \ --set "*.ssh=default" \ --set "*.platform=$platform" \ @@ -132,10 +132,23 @@ build_images() { --set "*.args.BASE_IMAGE=$base_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "*.args.LIB_DIR=$lib_dir" \ - --set "base.tags=ghcr.io/autowarefoundation/autoware:base" \ - --set "universe-devel.tags=ghcr.io/autowarefoundation/autoware:universe-devel$image_name_suffix" \ - --set "universe.tags=ghcr.io/autowarefoundation/autoware:universe$image_name_suffix" \ - "${targets[@]}" + --set "base.tags=ghcr.io/autowarefoundation/autoware-base:latest" \ + --set "base-cuda.tags=ghcr.io/autowarefoundation/autoware-base:cuda-latest" + docker buildx bake --load --progress=plain -f "$SCRIPT_DIR/docker-bake.hcl" -f "$SCRIPT_DIR/docker-bake-cuda.hcl" \ + --set "*.context=$WORKSPACE_ROOT" \ + --set "*.ssh=default" \ + --set "*.platform=$platform" \ + --set "*.args.ROS_DISTRO=$rosdistro" \ + --set "*.args.BASE_IMAGE=$base_image" \ + --set "*.args.AUTOWARE_BASE_IMAGE=$autoware_base_image" \ + --set "*.args.AUTOWARE_BASE_CUDA_IMAGE=$autoware_base_cuda_image" \ + --set "*.args.SETUP_ARGS=$setup_args" \ + --set "*.args.LIB_DIR=$lib_dir" \ + --set "universe-devel.tags=ghcr.io/autowarefoundation/autoware:universe-devel" \ + --set "universe-devel-cuda.tags=ghcr.io/autowarefoundation/autoware:universe-devel-cuda" \ + --set "universe.tags=ghcr.io/autowarefoundation/autoware:universe" \ + --set "universe-cuda.tags=ghcr.io/autowarefoundation/autoware:universe-cuda" \ + "$target$image_name_suffix" set +x } From 06b83937cffe3649215fefc247634881a7b6a02c Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:25:01 +0900 Subject: [PATCH 354/380] feat(autoware.repos): minor update autowarefoundation/autoware_internal_msgs to 1.3.0 (#5612) Signed-off-by: github-actions Co-authored-by: github-actions --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 33e5b5958a9..83b0eaf94fb 100644 --- a/autoware.repos +++ b/autoware.repos @@ -12,7 +12,7 @@ repositories: core/autoware_internal_msgs: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git - version: 1.2.0 + version: 1.3.0 core/autoware_cmake: type: git url: https://github.com/autowarefoundation/autoware_cmake.git From c9c32480ecff40ce15c0bf7d51a77d67eb981e5e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 26 Dec 2024 15:41:26 +0900 Subject: [PATCH 355/380] chore(autoware-nightly.repoos): add `autoware_internal_msgs` (#5613) add autoware_internal_msgs to nightly Signed-off-by: Yutaka Kondo --- autoware-nightly.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware-nightly.repos b/autoware-nightly.repos index 49da4fee814..e369eba8299 100644 --- a/autoware-nightly.repos +++ b/autoware-nightly.repos @@ -3,6 +3,10 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware_adapi_msgs.git version: main + core/autoware_internal_msgs: + type: git + url: https://github.com/autowarefoundation/autoware_internal_msgs.git + version: main core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git From afc7de552d308bb65c79f3e2e177ed387d5ae125 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 9 Jan 2025 18:35:58 +0900 Subject: [PATCH 356/380] chore(autoware.repos): update `autoware.core` to `0.1.0`, `autoware.universe` to `0.40.0` and `autoware_launch` to `0.40.0` (#5636) Signed-off-by: Yutaka Kondo --- autoware.repos | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/autoware.repos b/autoware.repos index 83b0eaf94fb..16bc4dfe745 100644 --- a/autoware.repos +++ b/autoware.repos @@ -28,12 +28,12 @@ repositories: core/autoware.core: type: git url: https://github.com/autowarefoundation/autoware.core.git - version: 0.0.0 + version: 0.1.0 # universe universe/autoware.universe: type: git url: https://github.com/autowarefoundation/autoware.universe.git - version: 0.39.0 + version: 0.40.0 universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API and remove this repository entry. type: git url: https://github.com/tier4/tier4_ad_api_adaptor.git @@ -75,7 +75,7 @@ repositories: launcher/autoware_launch: type: git url: https://github.com/autowarefoundation/autoware_launch.git - version: 0.39.0 + version: 0.40.0 # sensor_component sensor_component/external/sensor_component_description: type: git From 8c66826b04b98d363eff1d6f6c6df84a0cc092ef Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 12:58:39 +0000 Subject: [PATCH 357/380] feat(autoware.repos): minor update tier4/awsim_sensor_kit_launch to 0.40.0 (#5591) Signed-off-by: github-actions Co-authored-by: github-actions Co-authored-by: Yutaka Kondo --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 16bc4dfe745..e8ada00d825 100644 --- a/autoware.repos +++ b/autoware.repos @@ -107,7 +107,7 @@ repositories: sensor_kit/external/awsim_sensor_kit_launch: # TODO: Integrate into sample_sensor_kit_launch type: git url: https://github.com/tier4/awsim_sensor_kit_launch.git - version: 0.39.0 + version: 0.40.0 sensor_kit/awsim_labs_sensor_kit_launch: type: git url: https://github.com/autowarefoundation/awsim_labs_sensor_kit_launch.git From 473b42c268d0aa609c84a7e810b521d30d5628e8 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 14 Jan 2025 15:36:40 +0900 Subject: [PATCH 358/380] docs(docker): update `Multi-stage Dockerfile structure` section (#5651) * update readme Signed-off-by: Yutaka Kondo * refine Signed-off-by: Yutaka Kondo * fix common-devel-cuda Signed-off-by: Yutaka Kondo * fix sensing-perception-dvel-cuda Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/README.md | 62 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/docker/README.md b/docker/README.md index 2dc13c925bf..7128e578a39 100644 --- a/docker/README.md +++ b/docker/README.md @@ -76,10 +76,14 @@ The suffix `-devel` (e.g. `universe-devel`) is intended for use as a [developmen This is a base image of this Dockerfile. [`ros:humble-ros-base-jammy`](https://hub.docker.com/_/ros/tags?page=&page_size=&ordering=&name=humble-ros-base-jammy) will be given. -### `base` +### `base` (from Dockerfile.base) This stage performs only the basic setup required for all Autoware images. +### `base-cuda` (from Dockerfile.base) + +This stage is built on top of `base` and adds the CUDA runtime environment and artifacts. + ### `rosdep-depend` The ROS dependency package list files will be generated. @@ -96,62 +100,84 @@ By generating only the package list files and copying them to the subsequent sta ### `core-devel` -This stage installs the dependency packages based on `/rosdep-core-depend-packages.txt` and build the packages under the `core` directory of `autoware.repos`. +This stage installs the dependency packages based on `/rosdep-core-depend-packages.txt` and builds the packages under the `core` directory of `autoware.repos`. ### `universe-common-devel` -This stage installs the dependency packages based on `/rosdep-universe-common-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. +This stage installs the dependency packages based on `/rosdep-universe-common-depend-packages.txt` and builds the packages under the following directories of `autoware.repos`: - `universe/external` - `universe/autoware.universe/common` +### `universe-common-devel-cuda` + +This stage is build on top of `universe-common-devel` and installs the CUDA development environment. + ### `universe-sensing-perception-devel` -This stage installs the dependency packages based on `/rosdep-universe-sensing-perception-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. +This stage installs the dependency packages based on `/rosdep-universe-sensing-perception-depend-packages.txt` and builds the non-CUDA related packages under the following directories of `autoware.repos`: + +- `universe/autoware.universe/perception` +- `universe/autoware.universe/sensing` + +### `universe-sensing-perception-devel-cuda` + +This stage copies the non-CUDA related binaries built in the `universe-sensing-perception-devel` stage and builds the CUDA related packages under the following directories of `autoware.repos`: - `universe/autoware.universe/perception` - `universe/autoware.universe/sensing` ### `universe-sensing-perception` -This stage is a Autoware Universe Sensing/Perception runtime container. It only includes the dependencies given by `/rosdep-universe-sensing-perception-exec-depend-packages.txt` and the binaries built in the `universe-sensing-perception-devel` stage. +This stage is an Autoware Universe Sensing/Perception runtime container. It only includes the dependencies given by `/rosdep-universe-sensing-perception-exec-depend-packages.txt` and the binaries built in the `universe-sensing-perception-devel` stage. + +### `universe-sensing-perception-cuda` + +This stage installs the CUDA runtime environment and copies the binaries built in the `universe-sensing-perception-devel-cuda` stage. ### `universe-localization-mapping-devel` -This stage installs the dependency packages based on `/rosdep-universe-localization-mapping-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. +This stage installs the dependency packages based on `/rosdep-universe-localization-mapping-depend-packages.txt` and builds the packages under the following directories of `autoware.repos`: - `universe/autoware.universe/localization` - `universe/autoware.universe/map` ### `universe-localization-mapping` -This stage is a Autoware Universe Localization/Mapping runtime container. It only includes the dependencies given by `/rosdep-universe-localization-mapping-exec-depend-packages.txt` and the binaries built in the `universe-localization-mapping-devel` stage. +This stage is an Autoware Universe Localization/Mapping runtime container. It only includes the dependencies given by `/rosdep-universe-localization-mapping-exec-depend-packages.txt` and the binaries built in the `universe-localization-mapping-devel` stage. ### `universe-planning-control-devel` -This stage installs the dependency packages based on `/rosdep-universe-planning-control-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. +This stage installs the dependency packages based on `/rosdep-universe-planning-control-depend-packages.txt` and builds the packages under the following directories of `autoware.repos`: - `universe/autoware.universe/control` - `universe/autoware.universe/planning` ### `universe-planning-control` -This stage is a Autoware Universe Planning/Control runtime container. It only includes the dependencies given by `/rosdep-universe-planning-control-exec-depend-packages.txt` and the binaries built in the `universe-planning-control-devel` stage. +This stage is an Autoware Universe Planning/Control runtime container. It only includes the dependencies given by `/rosdep-universe-planning-control-exec-depend-packages.txt` and the binaries built in the `universe-planning-control-devel` stage. ### `universe-vehicle-system-devel` -This stage installs the dependency packages based on `/rosdep-universe-vehicle-system-depend-packages.txt` and build the packages under the following directories of `autoware.repos`. +This stage installs the dependency packages based on `/rosdep-universe-vehicle-system-depend-packages.txt` and builds the packages under the following directories of `autoware.repos`: - `universe/autoware.universe/vehicle` - `universe/autoware.universe/system` ### `universe-vehicle-system` -This stage is a Autoware Universe Vehicle/System runtime container. It only includes the dependencies given by `/rosdep-universe-vehicle-system-exec-depend-packages.txt` and the binaries built in the `universe-vehicle-system-devel` stage. +This stage is an Autoware Universe Vehicle/System runtime container. It only includes the dependencies given by `/rosdep-universe-vehicle-system-exec-depend-packages.txt` and the binaries built in the `universe-vehicle-system-devel` stage. ### `universe-devel` -This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and build the remaining packages of `autoware.repos`: +This stage installs the dependency packages based on `/rosdep-universe-depend-packages.txt` and copies the binaries built in the following stages: + +- `universe-sensing-perception-devel` +- `universe-localization-mapping-devel` +- `universe-planning-control-devel` +- `universe-vehicle-system-devel` + +Then it builds the remaining packages of `autoware.repos`: - `launcher` - `param` @@ -160,13 +186,19 @@ This stage installs the dependency packages based on `/rosdep-universe-depend-pa - `universe/autoware.universe/evaluator` - `universe/autoware.universe/launch` - `universe/autoware.universe/simulator` -- `universe/autoware.universe/system` - `universe/autoware.universe/tools` -- `universe/autoware.universe/vehicle` - `vehicle` This stage provides an all-in-one development container to Autoware developers. By running the host's source code with volume mounting, it allows for easy building and debugging of Autoware. +### `universe-devel-cuda` + +This stage installs the CUDA development environment and copies the binaries built in the `universe-sensing-perception-devel-cuda` stage to the `universe-devel` stage. + ### `universe` -This stage is an Autoware Universe runtime container. It only includes the dependencies given by `/rosdep-exec-depend-packages.txt`, the binaries built in the `universe-devel` stage, and artifacts. +This stage is an Autoware Universe runtime container. It only includes the dependencies given by `/rosdep-exec-depend-packages.txt` and the binaries built in the `universe-devel` stage. + +### `universe-cuda` + +This stage installs the CUDA runtime environment and copies the binaries built in the `universe-devel-cuda` stage. From 6049f52ff834b74de2fef28f22a4bf965f3e2bb2 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 15:22:35 +0900 Subject: [PATCH 359/380] feat(autoware.repos): minor update autowarefoundation/autoware_internal_msgs to 1.4.0 (#5657) Signed-off-by: github-actions Co-authored-by: github-actions --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index e8ada00d825..9cfc06ba9f3 100644 --- a/autoware.repos +++ b/autoware.repos @@ -12,7 +12,7 @@ repositories: core/autoware_internal_msgs: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git - version: 1.3.0 + version: 1.4.0 core/autoware_cmake: type: git url: https://github.com/autowarefoundation/autoware_cmake.git From b2c7255c614f415b2ef8f8e29d74868556bdd3f8 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez <33620+esteve@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:49:41 +0100 Subject: [PATCH 360/380] refactor: added Docker image for visualization plugins (#5460) * refactor: added Docker image for visualization plugins Signed-off-by: Esteve Fernandez * added visualization section Signed-off-by: Esteve Fernandez * update README.md Signed-off-by: Esteve Fernandez * update README.md Signed-off-by: Esteve Fernandez * added stages for visualization image Signed-off-by: Esteve Fernandez * fix dependency generation Signed-off-by: Esteve Fernandez * added target option Signed-off-by: Esteve Fernandez * remove suffix and explicit visualization build Signed-off-by: Esteve Fernandez * added tags for all targets Signed-off-by: Esteve Fernandez * added COPY statement for universe-visualization-devel Signed-off-by: Esteve Fernandez --------- Signed-off-by: Esteve Fernandez --- docker/Dockerfile | 63 ++++++++++++++++++++++++++++++++++++++++++ docker/README.md | 5 ++++ docker/build.sh | 30 +++++++++++++++++--- docker/docker-bake.hcl | 16 +++++++++++ 4 files changed, 110 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8857e43bc9e..21a570ab9a3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -35,6 +35,18 @@ RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-common-depend-packages.txt \ && cat /rosdep-universe-common-depend-packages.txt +FROM rosdep-depend AS rosdep-universe-visualization-depend +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO + +COPY src/universe/autoware.universe/visualization /autoware/src/universe/autoware.universe/visualization +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} \ + > /rosdep-universe-visualization-exec-depend-packages.txt \ + && cat /rosdep-universe-visualization-exec-depend-packages.txt + FROM rosdep-depend AS rosdep-universe-sensing-perception-depend SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -314,6 +326,30 @@ RUN --mount=type=cache,target=${CCACHE_DIR} \ ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["/bin/bash"] +FROM universe-common-devel AS universe-visualization-devel +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ENV CCACHE_DIR="/root/.ccache" + +# Install rosdep dependencies +COPY --from=rosdep-universe-visualization-depend /rosdep-universe-visualization-depend-packages.txt /tmp/rosdep-universe-visualization-depend-packages.txt +# hadolint ignore=SC2002 +RUN --mount=type=ssh \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + apt-get update \ + && cat /tmp/rosdep-universe-visualization-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ + && /autoware/cleanup_apt.sh + +# hadolint ignore=SC1091 +RUN --mount=type=cache,target=${CCACHE_DIR} \ + --mount=type=bind,from=rosdep-universe-visualization-depend,source=/autoware/src/universe/autoware.universe/visualization,target=/autoware/src/universe/autoware.universe/visualization \ + source /opt/ros/"$ROS_DISTRO"/setup.bash \ + && source /opt/autoware/setup.bash \ + && /autoware/build_and_clean.sh ${CCACHE_DIR} /opt/autoware + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["/bin/bash"] + FROM universe-common-devel AS universe-devel SHELL ["/bin/bash", "-o", "pipefail", "-c"] ARG ROS_DISTRO @@ -332,6 +368,7 @@ COPY --from=universe-sensing-perception-devel /opt/autoware /opt/autoware COPY --from=universe-localization-mapping-devel /opt/autoware /opt/autoware COPY --from=universe-planning-control-devel /opt/autoware /opt/autoware COPY --from=universe-vehicle-system-devel /opt/autoware /opt/autoware +COPY --from=universe-visualization-devel /opt/autoware /opt/autoware # hadolint ignore=SC1091 RUN --mount=type=cache,target=${CCACHE_DIR} \ --mount=type=bind,from=rosdep-universe-depend,source=/autoware/src/launcher,target=/autoware/src/launcher \ @@ -494,6 +531,32 @@ 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-visualization +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG ROS_DISTRO +ARG LIB_DIR + +# Set up runtime environment +COPY --from=rosdep-universe-visualization-depend /rosdep-universe-visualization-exec-depend-packages.txt /tmp/rosdep-universe-visualization-exec-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-universe-visualization-exec-depend-packages.txt | xargs apt-get install -y --no-install-recommends \ + && /autoware/cleanup_system.sh $LIB_DIR $ROS_DISTRO + +COPY --from=universe-visualization-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 SHELL ["/bin/bash", "-o", "pipefail", "-c"] diff --git a/docker/README.md b/docker/README.md index 7128e578a39..c5bdf3a7fca 100644 --- a/docker/README.md +++ b/docker/README.md @@ -135,6 +135,10 @@ This stage is an Autoware Universe Sensing/Perception runtime container. It only This stage installs the CUDA runtime environment and copies the binaries built in the `universe-sensing-perception-devel-cuda` stage. +### `universe-visualization` + +This stage is a Autoware Universe Visualization runtime container. It only includes the dependencies given by `/rosdep-universe-visualization-exec-depend-packages.txt` and the binaries built in the `universe-visualization-devel` stage. + ### `universe-localization-mapping-devel` This stage installs the dependency packages based on `/rosdep-universe-localization-mapping-depend-packages.txt` and builds the packages under the following directories of `autoware.repos`: @@ -187,6 +191,7 @@ Then it builds the remaining packages of `autoware.repos`: - `universe/autoware.universe/launch` - `universe/autoware.universe/simulator` - `universe/autoware.universe/tools` +- `universe/autoware.universe/visualization` - `vehicle` This stage provides an all-in-one development container to Autoware developers. By running the host's source code with volume mounting, it allows for easy building and debugging of Autoware. diff --git a/docker/build.sh b/docker/build.sh index d0d8b8976eb..4d239417638 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -11,6 +11,7 @@ print_help() { echo " --no-cuda Disable CUDA support" echo " --platform Specify the platform (default: current platform)" echo " --devel-only Build devel image only" + echo " --target Specify the target image (default: universe or universe-devel if --devel-only is set)" echo "" echo "Note: The --platform option should be one of 'linux/amd64' or 'linux/arm64'." } @@ -36,6 +37,10 @@ parse_arguments() { --devel-only) option_devel_only=true ;; + --target) + option_target="$2" + shift + ;; *) echo "Unknown option: $1" print_help @@ -58,10 +63,15 @@ set_cuda_options() { # Set build options set_build_options() { - if [ "$option_devel_only" = "true" ]; then - target="universe-devel" + if [ -n "$option_target" ]; then + target="$option_target" + image_name_suffix="" else - target="universe" + if [ "$option_devel_only" = "true" ]; then + target="universe-devel" + else + target="universe" + fi fi } @@ -144,9 +154,21 @@ build_images() { --set "*.args.AUTOWARE_BASE_CUDA_IMAGE=$autoware_base_cuda_image" \ --set "*.args.SETUP_ARGS=$setup_args" \ --set "*.args.LIB_DIR=$lib_dir" \ + --set "universe-sensing-perception-devel.tags=ghcr.io/autowarefoundation/autoware:universe-sensing-perception-devel" \ + --set "universe-sensing-perception.tags=ghcr.io/autowarefoundation/autoware:universe-sensing-perception" \ + --set "universe-localization-mapping-devel.tags=ghcr.io/autowarefoundation/autoware:universe-localization-mapping-devel" \ + --set "universe-localization-mapping.tags=ghcr.io/autowarefoundation/autoware:universe-localization-mapping" \ + --set "universe-planning-control-devel.tags=ghcr.io/autowarefoundation/autoware:universe-planning-control-devel" \ + --set "universe-planning-control.tags=ghcr.io/autowarefoundation/autoware:universe-planning-control" \ + --set "universe-vehicle-system-devel.tags=ghcr.io/autowarefoundation/autoware:universe-vehicle-system-devel" \ + --set "universe-vehicle-system.tags=ghcr.io/autowarefoundation/autoware:universe-vehicle-system" \ + --set "universe-visualization-devel.tags=ghcr.io/autowarefoundation/autoware:universe-visualization-devel" \ + --set "universe-visualization.tags=ghcr.io/autowarefoundation/autoware:universe-visualization" \ --set "universe-devel.tags=ghcr.io/autowarefoundation/autoware:universe-devel" \ - --set "universe-devel-cuda.tags=ghcr.io/autowarefoundation/autoware:universe-devel-cuda" \ --set "universe.tags=ghcr.io/autowarefoundation/autoware:universe" \ + --set "universe-sensing-perception-devel-cuda.tags=ghcr.io/autowarefoundation/autoware:universe-sensing-perception-devel-cuda" \ + --set "universe-sensing-perception-cuda.tags=ghcr.io/autowarefoundation/autoware:universe-sensing-perception-cuda" \ + --set "universe-devel-cuda.tags=ghcr.io/autowarefoundation/autoware:universe-devel-cuda" \ --set "universe-cuda.tags=ghcr.io/autowarefoundation/autoware:universe-cuda" \ "$target$image_name_suffix" set +x diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index dcf79ffc115..600b47108be 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -9,6 +9,8 @@ group "default" { "universe-planning-control", "universe-vehicle-system-devel", "universe-vehicle-system", + "universe-visualization-devel", + "universe-visualization", "universe-devel", "universe" ] @@ -24,6 +26,8 @@ target "docker-metadata-action-universe-planning-control-devel" {} target "docker-metadata-action-universe-planning-control" {} target "docker-metadata-action-universe-vehicle-system-devel" {} target "docker-metadata-action-universe-vehicle-system" {} +target "docker-metadata-action-universe-visualization-devel" {} +target "docker-metadata-action-universe-visualization" {} target "docker-metadata-action-universe-devel" {} target "docker-metadata-action-universe" {} @@ -81,6 +85,18 @@ target "universe-vehicle-system" { target = "universe-vehicle-system" } +target "universe-visualization-devel" { + inherits = ["docker-metadata-action-universe-visualization-devel"] + dockerfile = "docker/Dockerfile" + target = "universe-visualization-devel" +} + +target "universe-visualization" { + inherits = ["docker-metadata-action-universe-visualization"] + dockerfile = "docker/Dockerfile" + target = "universe-visualization" +} + target "universe-devel" { inherits = ["docker-metadata-action-universe-devel"] dockerfile = "docker/Dockerfile" From 8677ae5a0377b00e23de65e390faf319fdbf0267 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:27:45 +0000 Subject: [PATCH 361/380] ci(pre-commit): quarterly autoupdate (#5630) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v19.1.5 → v19.1.6](https://github.com/pre-commit/mirrors-clang-format/compare/v19.1.5...v19.1.6) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 48a97c13ef9..9d7c0531a45 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -74,7 +74,7 @@ repos: args: [--line-length=100] - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v19.1.5 + rev: v19.1.6 hooks: - id: clang-format types_or: [c++, c, cuda] From 3dad5543d2c9ccbf01fe55598965d9aaf28a9d21 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 16 Jan 2025 23:14:43 +0900 Subject: [PATCH 362/380] fix(docker): enable `--dependency-types` again (#5656) * use dependency-types again Signed-off-by: Yutaka Kondo * set default Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * fix Signed-off-by: Yutaka Kondo * add comment Signed-off-by: Yutaka Kondo --------- Signed-off-by: Yutaka Kondo --- docker/Dockerfile | 10 +++++----- docker/scripts/resolve_rosdep_keys.sh | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 21a570ab9a3..b4b56698a9e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -56,7 +56,7 @@ COPY src/universe/autoware.universe/sensing /autoware/src/universe/autoware.univ RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-sensing-perception-depend-packages.txt \ && cat /rosdep-universe-sensing-perception-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-sensing-perception-exec-depend-packages.txt \ && cat /rosdep-universe-sensing-perception-exec-depend-packages.txt @@ -69,7 +69,7 @@ COPY src/universe/autoware.universe/map /autoware/src/universe/autoware.universe RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-localization-mapping-depend-packages.txt \ && cat /rosdep-universe-localization-mapping-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-localization-mapping-exec-depend-packages.txt \ && cat /rosdep-universe-localization-mapping-exec-depend-packages.txt @@ -87,7 +87,7 @@ COPY src/universe/autoware.universe/sensing/autoware_pointcloud_preprocessor /au RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-planning-control-depend-packages.txt \ && cat /rosdep-universe-planning-control-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-planning-control-exec-depend-packages.txt \ && cat /rosdep-universe-planning-control-exec-depend-packages.txt @@ -102,7 +102,7 @@ COPY src/universe/autoware.universe/localization/autoware_pose2twist /autoware/s RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-vehicle-system-depend-packages.txt \ && cat /rosdep-universe-vehicle-system-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-vehicle-system-exec-depend-packages.txt \ && cat /rosdep-universe-vehicle-system-exec-depend-packages.txt @@ -120,7 +120,7 @@ RUN /autoware/resolve_rosdep_keys.sh /autoware/src ${ROS_DISTRO} \ > /rosdep-universe-depend-packages.txt \ && cat /rosdep-universe-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-exec-depend-packages.txt \ && cat /rosdep-exec-depend-packages.txt diff --git a/docker/scripts/resolve_rosdep_keys.sh b/docker/scripts/resolve_rosdep_keys.sh index 1615e9f68fe..9b03b6ab046 100755 --- a/docker/scripts/resolve_rosdep_keys.sh +++ b/docker/scripts/resolve_rosdep_keys.sh @@ -3,8 +3,10 @@ function resolve_rosdep_keys() { local src_path=$1 local ros_distro=$2 + local rosdep_keys_args=$3 - rosdep keys --ignore-src --from-paths "$src_path" | + # shellcheck disable=SC2086 + rosdep keys $rosdep_keys_args --ignore-src --from-paths "$src_path" | xargs rosdep resolve --rosdistro "$ros_distro" | grep -v '^#' | sed 's/ \+/\n/g' | From 7e68dc8691a21dc0146df97116df1c09572aa5df Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 21 Jan 2025 17:40:00 +0900 Subject: [PATCH 363/380] fix(docker): add `set -e` to return shell script's error (#5661) --- docker/scripts/build_and_clean.sh | 1 + docker/scripts/cleanup_apt.sh | 1 + docker/scripts/cleanup_system.sh | 1 + docker/scripts/resolve_rosdep_keys.sh | 1 + 4 files changed, 4 insertions(+) diff --git a/docker/scripts/build_and_clean.sh b/docker/scripts/build_and_clean.sh index e9d5ec6168f..f5f383f1565 100755 --- a/docker/scripts/build_and_clean.sh +++ b/docker/scripts/build_and_clean.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e function build_and_clean() { local ccache_dir=$1 diff --git a/docker/scripts/cleanup_apt.sh b/docker/scripts/cleanup_apt.sh index ad03c1f39e3..f3a47e58296 100755 --- a/docker/scripts/cleanup_apt.sh +++ b/docker/scripts/cleanup_apt.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e function cleanup_apt() { local apt_clean=$1 diff --git a/docker/scripts/cleanup_system.sh b/docker/scripts/cleanup_system.sh index 0833be2b3a4..72127927ecf 100755 --- a/docker/scripts/cleanup_system.sh +++ b/docker/scripts/cleanup_system.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e function cleanup_system() { local lib_dir=$1 diff --git a/docker/scripts/resolve_rosdep_keys.sh b/docker/scripts/resolve_rosdep_keys.sh index 9b03b6ab046..1b3f5839bd2 100755 --- a/docker/scripts/resolve_rosdep_keys.sh +++ b/docker/scripts/resolve_rosdep_keys.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e function resolve_rosdep_keys() { local src_path=$1 From 0a6922862b810b4dffc88e8bdc60fab689172fd7 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Wed, 22 Jan 2025 08:53:24 +0900 Subject: [PATCH 364/380] feat(autoware.repos): use v0.40.0 for tier4_ad_api_adaptor (#5675) Signed-off-by: Ryohsuke Mitsudome --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 9cfc06ba9f3..6c01d34af15 100644 --- a/autoware.repos +++ b/autoware.repos @@ -37,7 +37,7 @@ repositories: universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API and remove this repository entry. type: git url: https://github.com/tier4/tier4_ad_api_adaptor.git - version: tier4/universe + version: v0.40.0 universe/external/tier4_autoware_msgs: type: git url: https://github.com/tier4/tier4_autoware_msgs.git From 0f84690159588fe01d15e341588f7d3c5a2e1fee Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 03:39:41 +0000 Subject: [PATCH 365/380] feat(autoware.repos): minor update autowarefoundation/sample_sensor_kit_launch to 0.40.0 (#5667) Signed-off-by: github-actions Co-authored-by: github-actions --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index 6c01d34af15..770bb5bbb95 100644 --- a/autoware.repos +++ b/autoware.repos @@ -103,7 +103,7 @@ repositories: sensor_kit/sample_sensor_kit_launch: type: git url: https://github.com/autowarefoundation/sample_sensor_kit_launch.git - version: 0.39.0 + version: 0.40.0 sensor_kit/external/awsim_sensor_kit_launch: # TODO: Integrate into sample_sensor_kit_launch type: git url: https://github.com/tier4/awsim_sensor_kit_launch.git From 5528e75dc89574289835458e656101303c47bb4d Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Thu, 23 Jan 2025 06:01:57 +0900 Subject: [PATCH 366/380] fix(docker-build-and-push): set docker meta data to `universe-visualization` images (#5679) append universe-visualization actions Signed-off-by: Yutaka Kondo --- .../actions/docker-build-and-push/action.yaml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 5feb1bcc419..09867cd644f 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -181,6 +181,32 @@ runs: flavor: | latest=false + - name: Docker meta for autoware:universe-visualization-devel + id: meta-universe-visualization-devel + uses: docker/metadata-action@v5 + with: + images: ${{ github.repository_owner }}/${{ inputs.target-image }} + tags: | + type=raw,value=universe-visualization-devel-${{ inputs.platform }} + type=raw,value=universe-visualization-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-visualization-devel-,suffix=-${{ inputs.platform }} + bake-target: docker-metadata-action-universe-visualization-devel + flavor: | + latest=false + + - name: Docker meta for autoware:universe-visualization + id: meta-universe-visualization + uses: docker/metadata-action@v5 + with: + images: ${{ github.repository_owner }}/${{ inputs.target-image }} + tags: | + type=raw,value=universe-visualization-${{ inputs.platform }} + type=raw,value=universe-visualization-${{ steps.date.outputs.date }}-${{ inputs.platform }} + type=ref,event=tag,prefix=universe-visualization-,suffix=-${{ inputs.platform }} + bake-target: docker-metadata-action-universe-visualization + flavor: | + latest=false + - name: Docker meta for autoware:universe-devel id: meta-universe-devel uses: docker/metadata-action@v5 @@ -229,6 +255,8 @@ runs: ${{ steps.meta-universe-planning-control.outputs.bake-file }} ${{ steps.meta-universe-vehicle-system-devel.outputs.bake-file }} ${{ steps.meta-universe-vehicle-system.outputs.bake-file }} + ${{ steps.meta-universe-visualization-devel.outputs.bake-file }} + ${{ steps.meta-universe-visualization.outputs.bake-file }} ${{ steps.meta-universe-devel.outputs.bake-file }} ${{ steps.meta-universe.outputs.bake-file }} provenance: false From c16121d43923d9b605597b797a0e192f0ea6655e Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 09:57:11 +0900 Subject: [PATCH 367/380] chore: sync files (#5621) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .github/workflows/github-release.yaml | 32 ++++++++------------------- .pre-commit-config-optional.yaml | 7 ++++++ .pre-commit-config.yaml | 2 +- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/.github/workflows/github-release.yaml b/.github/workflows/github-release.yaml index bbe2ac512d7..170c57b4398 100644 --- a/.github/workflows/github-release.yaml +++ b/.github/workflows/github-release.yaml @@ -6,14 +6,12 @@ name: github-release on: push: - branches: - - beta/v* tags: - - v* + - "[0-9]+.[0-9]+.[0-9]+" workflow_dispatch: inputs: - beta-branch-or-tag-name: - description: The name of the beta branch or tag to release + tag-name: + description: The name of the tag to release type: string required: true @@ -25,36 +23,24 @@ jobs: id: set-tag-name run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then - REF_NAME="${{ github.event.inputs.beta-branch-or-tag-name }}" + REF_NAME="${{ github.event.inputs.tag-name }}" else REF_NAME="${{ github.ref_name }}" fi - echo "ref-name=$REF_NAME" >> $GITHUB_OUTPUT - echo "tag-name=${REF_NAME#beta/}" >> $GITHUB_OUTPUT + echo "tag-name=$REF_NAME" >> $GITHUB_OUTPUT - name: Check out repository uses: actions/checkout@v4 with: fetch-depth: 0 - ref: ${{ steps.set-tag-name.outputs.ref-name }} - - - name: Set target name for beta branches - id: set-target-name - run: | - if [[ "${{ steps.set-tag-name.outputs.ref-name }}" =~ "beta/" ]]; then - echo "target-name=${{ steps.set-tag-name.outputs.ref-name }}" >> $GITHUB_OUTPUT - fi - - - name: Create a local tag for beta branches - run: | - if [ "${{ steps.set-target-name.outputs.target-name }}" != "" ]; then - git tag "${{ steps.set-tag-name.outputs.tag-name }}" - fi + ref: ${{ steps.set-tag-name.outputs.tag-name }} - name: Run generate-changelog id: generate-changelog uses: autowarefoundation/autoware-github-actions/generate-changelog@v1 + with: + git-cliff-args: --tag-pattern "^(\d+)\.(\d+)\.(\d+)$" --latest - name: Select verb id: select-verb @@ -74,7 +60,7 @@ jobs: run: | gh release ${{ steps.select-verb.outputs.verb }} "${{ steps.set-tag-name.outputs.tag-name }}" \ --draft \ - --target "${{ steps.set-target-name.outputs.target-name }}" \ + --target "main" \ --title "Release ${{ steps.set-tag-name.outputs.tag-name }}" \ --notes "$NOTES" env: diff --git a/.pre-commit-config-optional.yaml b/.pre-commit-config-optional.yaml index ff325af5e87..f0b5bdba2d2 100644 --- a/.pre-commit-config-optional.yaml +++ b/.pre-commit-config-optional.yaml @@ -2,6 +2,13 @@ # https://github.com/autowarefoundation/sync-file-templates # To make changes, update the source repository and follow the guidelines in its README. +# https://pre-commit.ci/#configuration +ci: + autofix_commit_msg: "style(pre-commit-optional): autofix" + # we already have our own daily update mechanism, we set this to quarterly + autoupdate_schedule: quarterly + autoupdate_commit_msg: "ci(pre-commit-optional): quarterly autoupdate" + repos: - repo: https://github.com/tcort/markdown-link-check rev: v3.12.2 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9d7c0531a45..48a97c13ef9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -74,7 +74,7 @@ repos: args: [--line-length=100] - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v19.1.6 + rev: v19.1.5 hooks: - id: clang-format types_or: [c++, c, cuda] From b05452735e9cf34c6c6c3a852d93a08b37819922 Mon Sep 17 00:00:00 2001 From: SakodaShintaro Date: Thu, 23 Jan 2025 10:45:08 +0900 Subject: [PATCH 368/380] fix: add `tier4_ad_api_adaptor` to autoware-nightly.repos (#5677) Added tier4_ad_api_adaptor to autoware-nightly.repos Signed-off-by: Shintaro Sakoda --- autoware-nightly.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware-nightly.repos b/autoware-nightly.repos index e369eba8299..7771826d2d7 100644 --- a/autoware-nightly.repos +++ b/autoware-nightly.repos @@ -15,6 +15,10 @@ repositories: type: git url: https://github.com/autowarefoundation/autoware.universe.git version: main + universe/external/tier4_ad_api_adaptor: # TODO(TIER IV): Migrate to AD API and remove this repository entry. + type: git + url: https://github.com/tier4/tier4_ad_api_adaptor.git + version: tier4/universe launcher/autoware_launch: type: git url: https://github.com/autowarefoundation/autoware_launch.git From 627ecef014609f6148eaa8c689f0c96efeaae700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Zeren?= <76053179+StepTurtle@users.noreply.github.com> Date: Mon, 27 Jan 2025 01:10:25 +0300 Subject: [PATCH 369/380] feat(ansible/artifacts): add rtmdet onnx model (#5605) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Barış Zeren Co-authored-by: Mete Fatih Cırıt --- ansible/roles/artifacts/tasks/main.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/ansible/roles/artifacts/tasks/main.yaml b/ansible/roles/artifacts/tasks/main.yaml index c4f7ede0089..f0423e71527 100644 --- a/ansible/roles/artifacts/tasks/main.yaml +++ b/ansible/roles/artifacts/tasks/main.yaml @@ -269,6 +269,28 @@ mode: "644" checksum: sha256:3d93ca05f31b63424d7d7246a01a2365953705a0ed3323ba5b6fddd744a4bfea +# tensorrt_rtmdet +- name: Create tensorrt_rtmdet directory inside {{ data_dir }} + ansible.builtin.file: + path: "{{ data_dir }}/tensorrt_rtmdet" + mode: "755" + state: directory + +- name: Download tensorrt_rtmdet_onnx_models.tar.gz + become: true + ansible.builtin.get_url: + url: https://autoware-files.s3.us-west-2.amazonaws.com/models/tensorrt_rtmdet_onnx_models.tar.gz + dest: "{{ data_dir }}/tensorrt_rtmdet/tensorrt_rtmdet_onnx_models.tar.gz" + mode: "644" + checksum: sha256:eaf6fe9caf1b4a0211dc3b0f4068b1fd6c1d35fe1582cc2aed95b8ed9468c598 + +- name: Extract tensorrt_rtmdet_onnx_models.tar.gz + ansible.builtin.unarchive: + src: "{{ data_dir }}/tensorrt_rtmdet/tensorrt_rtmdet_onnx_models.tar.gz" + dest: "{{ data_dir }}/tensorrt_rtmdet/" + extra_opts: + - --strip-components=1 # Removes the top-level folder during extraction + # traffic_light_classifier - name: Create traffic_light_classifier directory inside {{ data_dir }} ansible.builtin.file: From bcc4f18821ae0cf5517d3847673589aa49422c4d Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 27 Jan 2025 09:03:21 +0900 Subject: [PATCH 370/380] fix(docker-build-and-push): push `universe-visualization` images to ghcr.io (#5690) push to ghcr.io Signed-off-by: Yutaka Kondo --- .github/actions/docker-build-and-push/action.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/docker-build-and-push/action.yaml b/.github/actions/docker-build-and-push/action.yaml index 09867cd644f..bc22829e70e 100644 --- a/.github/actions/docker-build-and-push/action.yaml +++ b/.github/actions/docker-build-and-push/action.yaml @@ -185,7 +185,7 @@ runs: id: meta-universe-visualization-devel uses: docker/metadata-action@v5 with: - images: ${{ github.repository_owner }}/${{ inputs.target-image }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-visualization-devel-${{ inputs.platform }} type=raw,value=universe-visualization-devel-${{ steps.date.outputs.date }}-${{ inputs.platform }} @@ -198,7 +198,7 @@ runs: id: meta-universe-visualization uses: docker/metadata-action@v5 with: - images: ${{ github.repository_owner }}/${{ inputs.target-image }} + images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }} tags: | type=raw,value=universe-visualization-${{ inputs.platform }} type=raw,value=universe-visualization-${{ steps.date.outputs.date }}-${{ inputs.platform }} From b147a87ff493fb91167c936683d177a027bf724c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Zeren?= <76053179+StepTurtle@users.noreply.github.com> Date: Mon, 27 Jan 2025 03:53:32 +0300 Subject: [PATCH 371/380] feat(autoware.repos): add trt_batched_nms repository (#5493) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Barış Zeren --- autoware.repos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoware.repos b/autoware.repos index 770bb5bbb95..dc4154cdcc0 100644 --- a/autoware.repos +++ b/autoware.repos @@ -71,6 +71,10 @@ repositories: type: git url: https://github.com/tier4/glog.git version: v0.6.0_t4-ros + universe/external/trt_batched_nms: + type: git + url: https://github.com/autowarefoundation/trt_batched_nms.git + version: main # launcher launcher/autoware_launch: type: git From a7423b10141df473d96092477fd2810288e46430 Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Mon, 27 Jan 2025 12:41:11 +0900 Subject: [PATCH 372/380] chore(docker): update README.md and Dockerfile.svg (#5696) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * update svg Signed-off-by: Yutaka Kondo * update readme Signed-off-by: Yutaka Kondo * update sentence Signed-off-by: Yutaka Kondo * fix base Signed-off-by: Yutaka Kondo * style(pre-commit): autofix * pre-commit svg fix: simplify text field Signed-off-by: M. Fatih Cırıt --------- Signed-off-by: Yutaka Kondo Signed-off-by: M. Fatih Cırıt Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: M. Fatih Cırıt --- docker/Dockerfile.svg | 882 ++++++++++++++++++++++-------------------- docker/README.md | 16 +- 2 files changed, 471 insertions(+), 427 deletions(-) diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index a9465e1a552..bbbb9a89d74 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -1,47 +1,47 @@ - - - + + G - + cluster_legend - + key - FROM ... - COPY --from=...  - RUN --mount=(.*)from=...  + FROM ... + COPY --from=...  + RUN --mount=(.*)from=...  key2 - - - + + + key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + @@ -50,9 +50,9 @@ fill="none" stroke="#333333" stroke-dasharray="5,2" - d="M161,-306C161,-306 41,-306 41,-306 35,-306 29,-300 29,-294 29,-294 29,-282 29,-282 29,-276 35,-270 41,-270 41,-270 161,-270 161,-270 167,-270 173,-276 173,-282 173,-282 173,-294 173,-294 173,-300 167,-306 161,-306" + d="M161,-632.44C161,-632.44 41,-632.44 41,-632.44 35,-632.44 29,-626.44 29,-620.44 29,-620.44 29,-608.44 29,-608.44 29,-602.44 35,-596.44 41,-596.44 41,-596.44 161,-596.44 161,-596.44 167,-596.44 173,-602.44 173,-608.44 173,-608.44 173,-620.44 173,-620.44 173,-626.44 167,-632.44 161,-632.44" /> - $BASE_IMAGE + $BASE_IMAGE @@ -60,633 +60,671 @@ - base + rosdep-depend external_image_0->stage_0 - - + + - + - stage_2 + stage_1 - rosdep-depend + rosdep-universe-visualization-depend - + - external_image_0->stage_2 - - + stage_0->stage_1 + + - + - stage_1 + stage_2 - base-cuda + rosdep-universe-sensing-perception-depend - + - stage_0->stage_1 - - + stage_0->stage_2 + + - + - stage_8 + stage_3 - core-devel + rosdep-universe-localization-mapping-depend - + - stage_0->stage_8 - - + stage_0->stage_3 + + + - + - stage_18 + stage_4 - universe-sensing-perception + rosdep-universe-planning-control-depend - + - stage_0->stage_18 - - - + stage_0->stage_4 + + - + - stage_20 + stage_5 - universe-localization-mapping + rosdep-universe-vehicle-system-depend - + - stage_0->stage_20 + stage_0->stage_5 + - + - stage_21 + stage_6 - universe-planning-control + rosdep-universe-depend - + - stage_0->stage_21 + stage_0->stage_6 + + + + + + stage_7 - + core-devel - - - stage_22 + + + stage_0->stage_7 + + + + + + stage_8 - universe-vehicle-system + universe-common-devel - - - stage_0->stage_22 - - + + + stage_0->stage_8 + + + + + + stage_15 + + universe-visualization-devel + + + + stage_1->stage_15 + + - + stage_23 - universe + universe-visualization - - - stage_0->stage_23 - - - - - - - stage_2->stage_8 - - + + + stage_1->stage_23 + - + - stage_3 + stage_10 - rosdep-universe-sensing-perception-depend + universe-sensing-perception-devel - - - stage_2->stage_3 - - + + + stage_2->stage_10 + + - + - stage_4 + stage_11 - rosdep-universe-localization-mapping-depend + universe-sensing-perception-devel-cuda - - - stage_2->stage_4 - - + + + stage_2->stage_11 + + + - + - stage_5 + stage_18 - rosdep-universe-planning-control-depend + universe-sensing-perception - - - stage_2->stage_5 - - + + + stage_2->stage_18 + + - + - stage_6 + stage_19 - rosdep-universe-vehicle-system-depend + universe-sensing-perception-cuda - - - stage_2->stage_6 - - + + + stage_2->stage_19 + + - + - stage_7 + stage_12 - rosdep-universe-depend + universe-localization-mapping-devel - - - stage_2->stage_7 - - - + + + stage_3->stage_12 + + - + - stage_9 + stage_20 - universe-common-devel + universe-localization-mapping - - - stage_2->stage_9 - - + + + stage_3->stage_20 + + - - - stage_19 + + + stage_13 - universe-sensing-perception-cuda + universe-planning-control-devel - - - stage_1->stage_19 - - + + + stage_4->stage_13 + + - - - stage_24 + + + stage_21 - universe-cuda - - - - stage_1->stage_24 - - - - - - stage_8->stage_9 - - - - - - stage_3->stage_18 - - + universe-planning-control - - - stage_3->stage_19 - - + + + stage_4->stage_21 + + - - - stage_11 + + + stage_14 - universe-sensing-perception-devel + universe-vehicle-system-devel - - - stage_3->stage_11 - - + + + stage_5->stage_14 + + - - - stage_12 + + + stage_22 - universe-sensing-perception-devel-cuda + universe-vehicle-system - - - stage_3->stage_12 + + + stage_5->stage_22 + + + + + + stage_16 - - + universe-devel - + - stage_4->stage_20 - + stage_6->stage_16 - + - - - stage_13 + + + stage_17 - universe-localization-mapping-devel + universe-devel-cuda - - - stage_4->stage_13 - - + + + stage_6->stage_17 + + - - - stage_5->stage_21 - - - - - - stage_14 + + + stage_24 - universe-planning-control-devel + universe - - - stage_5->stage_14 - - + + + stage_6->stage_24 + + + - - - stage_6->stage_22 - - - + + + stage_25 + + universe-cuda - - - stage_15 + + + stage_6->stage_25 - universe-vehicle-system-devel - - - stage_6->stage_15 - - + + + stage_7->stage_8 + + - + - stage_7->stage_23 - - + stage_8->stage_15 + + + + + + stage_8->stage_10 + + + + + + stage_8->stage_12 + + + + + + stage_8->stage_13 + + + + + + stage_8->stage_14 + + - + - stage_7->stage_24 - - - + stage_8->stage_16 + + - - - stage_16 + + + stage_9 - universe-devel + universe-common-devel-cuda - - - stage_7->stage_16 - - + + + stage_8->stage_9 + + - - - stage_17 + + + stage_15->stage_23 - universe-devel-cuda + - - - stage_7->stage_17 - - + + + stage_15->stage_16 + + - + - stage_9->stage_11 - - + stage_10->stage_11 + + - - - stage_9->stage_13 - - - - + - stage_9->stage_14 - - + stage_10->stage_18 + + - - - stage_9->stage_15 - - + + + stage_10->stage_16 + + - + - stage_9->stage_16 - - + stage_11->stage_19 + + - - - stage_10 - - universe-common-devel-cuda + + + stage_11->stage_17 + + - - - stage_9->stage_10 - - + + + stage_12->stage_20 + + - - - stage_11->stage_18 - - + + + stage_12->stage_16 + + + + + + stage_13->stage_21 + + - + - stage_11->stage_12 - - + stage_13->stage_16 + + - - - stage_11->stage_16 + + + stage_14->stage_22 + + + + + + stage_14->stage_16 - + - - - stage_12->stage_19 - - + + + stage_16->stage_17 + + - - - stage_12->stage_17 - - + + + stage_16->stage_24 + + - - - stage_13->stage_20 - - + + + stage_17->stage_25 + + - - - stage_13->stage_16 + + + external_image_1 - + $AUTOWARE_BASE_IMAGE - - - stage_14->stage_21 + + + external_image_1->stage_7 + + + + + + external_image_1->stage_23 - + + - - - stage_14->stage_16 - - + + + external_image_1->stage_18 + + - - - stage_15->stage_22 - - + + + external_image_1->stage_20 + + + + + + external_image_1->stage_21 + + + + + + external_image_1->stage_22 + + + + + + external_image_1->stage_24 + + + + + - - - stage_15->stage_16 + + + stage_9->stage_11 + + + + + + stage_9->stage_17 + + + + + + external_image_2 - - - - - stage_16->stage_23 - - + $AUTOWARE_BASE_CUDA_IMAGE - - - stage_16->stage_17 - - - - - - stage_17->stage_24 - - - - - - stage_10->stage_12 - - + + + external_image_2->stage_19 + + - - - stage_10->stage_17 - - + + + external_image_2->stage_25 + + + diff --git a/docker/README.md b/docker/README.md index c5bdf3a7fca..1d6d96b8789 100644 --- a/docker/README.md +++ b/docker/README.md @@ -68,6 +68,8 @@ ros2 launch autoware_pointcloud_preprocessor preprocessor.launch.xml ## Multi-stage Dockerfile structure + + ![](./Dockerfile.svg) The suffix `-devel` (e.g. `universe-devel`) is intended for use as a [development container](https://containers.dev). On the other hand, those without the `-devel` suffix (e.g. `universe`) are intended to be used as a runtime container. @@ -76,13 +78,13 @@ The suffix `-devel` (e.g. `universe-devel`) is intended for use as a [developmen This is a base image of this Dockerfile. [`ros:humble-ros-base-jammy`](https://hub.docker.com/_/ros/tags?page=&page_size=&ordering=&name=humble-ros-base-jammy) will be given. -### `base` (from Dockerfile.base) +### `$AUTOWARE_BASE_IMAGE` (from Dockerfile.base) This stage performs only the basic setup required for all Autoware images. -### `base-cuda` (from Dockerfile.base) +### `$AUTOWARE_BASE_CUDA_IMAGE` (from Dockerfile.base) -This stage is built on top of `base` and adds the CUDA runtime environment and artifacts. +This stage is built on top of `$AUTOWARE_BASE_IMAGE` and adds the CUDA runtime environment and artifacts. ### `rosdep-depend` @@ -111,7 +113,7 @@ This stage installs the dependency packages based on `/rosdep-universe-common-de ### `universe-common-devel-cuda` -This stage is build on top of `universe-common-devel` and installs the CUDA development environment. +This stage is built on top of `universe-common-devel` and installs the CUDA development environment. ### `universe-sensing-perception-devel` @@ -135,6 +137,10 @@ This stage is an Autoware Universe Sensing/Perception runtime container. It only This stage installs the CUDA runtime environment and copies the binaries built in the `universe-sensing-perception-devel-cuda` stage. +### `universe-visualization-devel` + +This stage installs the dependency packages based on `/rosdep-universe-visualization-depend-packages.txt` and builds the visualization packages. + ### `universe-visualization` This stage is a Autoware Universe Visualization runtime container. It only includes the dependencies given by `/rosdep-universe-visualization-exec-depend-packages.txt` and the binaries built in the `universe-visualization-devel` stage. @@ -180,6 +186,7 @@ This stage installs the dependency packages based on `/rosdep-universe-depend-pa - `universe-localization-mapping-devel` - `universe-planning-control-devel` - `universe-vehicle-system-devel` +- `universe-visualization-devel` Then it builds the remaining packages of `autoware.repos`: @@ -191,7 +198,6 @@ Then it builds the remaining packages of `autoware.repos`: - `universe/autoware.universe/launch` - `universe/autoware.universe/simulator` - `universe/autoware.universe/tools` -- `universe/autoware.universe/visualization` - `vehicle` This stage provides an all-in-one development container to Autoware developers. By running the host's source code with volume mounting, it allows for easy building and debugging of Autoware. From 5acd10a713adde8f47208cff9d95dacf2f1a32c6 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:56:35 +0900 Subject: [PATCH 373/380] feat(simulator.repos): major update tier4/scenario_simulator_v2 to 8.0.0 (#5689) Signed-off-by: github-actions Co-authored-by: github-actions --- simulator.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulator.repos b/simulator.repos index fa700902666..c1c9fc9b65e 100644 --- a/simulator.repos +++ b/simulator.repos @@ -2,4 +2,4 @@ repositories: simulator/scenario_simulator: type: git url: https://github.com/tier4/scenario_simulator_v2.git - version: 7.3.5 + version: 8.0.0 From 38624eef04aa16ac97d0273a65873c7c4a5582a0 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:57:11 +0900 Subject: [PATCH 374/380] feat(autoware.repos): minor update autowarefoundation/autoware_internal_msgs to 1.5.0 (#5686) --- autoware.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoware.repos b/autoware.repos index dc4154cdcc0..9901a597b78 100644 --- a/autoware.repos +++ b/autoware.repos @@ -12,7 +12,7 @@ repositories: core/autoware_internal_msgs: type: git url: https://github.com/autowarefoundation/autoware_internal_msgs.git - version: 1.4.0 + version: 1.5.0 core/autoware_cmake: type: git url: https://github.com/autowarefoundation/autoware_cmake.git From 3c15855faa0056097b66f0a0a082bc5c8283087c Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Tue, 28 Jan 2025 08:52:37 +0900 Subject: [PATCH 375/380] chore(create-prs-to-update-vcs-repositories.yaml): target only major and minor version updates for `simulator.repos` (#5698) Update create-prs-to-update-vcs-repositories.yaml --- .github/workflows/create-prs-to-update-vcs-repositories.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create-prs-to-update-vcs-repositories.yaml b/.github/workflows/create-prs-to-update-vcs-repositories.yaml index ca34700bdda..ce30cda3195 100644 --- a/.github/workflows/create-prs-to-update-vcs-repositories.yaml +++ b/.github/workflows/create-prs-to-update-vcs-repositories.yaml @@ -36,7 +36,7 @@ jobs: token: ${{ steps.generate-token.outputs.token }} repo_name: autowarefoundation/autoware parent_dir: . - targets: major minor patch + targets: major minor base_branch: main new_branch_prefix: feat/update- autoware_repos_file_name: simulator.repos From 364b000e703c0cfda13279f0e3f8baf0395cbd36 Mon Sep 17 00:00:00 2001 From: "awf-autoware-bot[bot]" <94889083+awf-autoware-bot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 07:40:42 +0900 Subject: [PATCH 376/380] chore: sync files (#5703) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions --- .github/workflows/github-release.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/github-release.yaml b/.github/workflows/github-release.yaml index 170c57b4398..ac4f6f05ed9 100644 --- a/.github/workflows/github-release.yaml +++ b/.github/workflows/github-release.yaml @@ -60,7 +60,6 @@ jobs: run: | gh release ${{ steps.select-verb.outputs.verb }} "${{ steps.set-tag-name.outputs.tag-name }}" \ --draft \ - --target "main" \ --title "Release ${{ steps.set-tag-name.outputs.tag-name }}" \ --notes "$NOTES" env: From e65689911356fbd2b2a88c87f77c8f7d942802a4 Mon Sep 17 00:00:00 2001 From: Junya Sasaki Date: Wed, 29 Jan 2025 09:18:39 +0900 Subject: [PATCH 377/380] feat(.github): monitor version update for `tools.repos` too (#5664) * This change intends to prevent from the version mismatch between repositories in the `tools.repos` and `autoware.repos` Signed-off-by: Junya Sasaki --- .../create-prs-to-update-vcs-repositories.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/create-prs-to-update-vcs-repositories.yaml b/.github/workflows/create-prs-to-update-vcs-repositories.yaml index ce30cda3195..245d53e49a6 100644 --- a/.github/workflows/create-prs-to-update-vcs-repositories.yaml +++ b/.github/workflows/create-prs-to-update-vcs-repositories.yaml @@ -41,3 +41,15 @@ jobs: new_branch_prefix: feat/update- autoware_repos_file_name: simulator.repos verbosity: 0 + + - name: Create PRs to update VCS repositories for tools.repos + uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1 + with: + token: ${{ steps.generate-token.outputs.token }} + repo_name: autowarefoundation/autoware + parent_dir: . + targets: major minor patch + base_branch: main + new_branch_prefix: feat/update- + autoware_repos_file_name: tools.repos + verbosity: 0 From 2842908b3f0e7d759e6ef313fdb97f0c7dc3e1f9 Mon Sep 17 00:00:00 2001 From: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> Date: Wed, 29 Jan 2025 09:24:54 +0900 Subject: [PATCH 378/380] ci: run free disk space for setup-universe workflow (#5707) Signed-off-by: Ryohsuke Mitsudome --- .github/workflows/setup-universe.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/setup-universe.yaml b/.github/workflows/setup-universe.yaml index 8f4d16d50e8..6d67eed2180 100644 --- a/.github/workflows/setup-universe.yaml +++ b/.github/workflows/setup-universe.yaml @@ -10,6 +10,14 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Free disk space + uses: ./.github/actions/free-disk-space + + - name: Show disk space + if: always() + run: | + df -h + - name: Set git config uses: autowarefoundation/autoware-github-actions/set-git-config@v1 with: From 5ddc6f69df2d82a2f3bb74ec7b8c3bac052b6d0e Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Wed, 29 Jan 2025 13:13:30 +0900 Subject: [PATCH 379/380] chore(tools.repos): use tag instead of `main` to `version` (#5708) Update tools.repos --- tools.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools.repos b/tools.repos index f2d1a47d9fa..dfdb02f61f5 100644 --- a/tools.repos +++ b/tools.repos @@ -2,4 +2,4 @@ repositories: tools: type: git url: https://github.com/autowarefoundation/autoware_tools.git - version: main + version: 0.1.0 From 9c95a422999736f7c8594b3488a1b116c0d565ff Mon Sep 17 00:00:00 2001 From: Yutaka Kondo Date: Fri, 31 Jan 2025 12:28:00 +0900 Subject: [PATCH 380/380] feat(docker): add `autoware:core` image (#5709) * add autoware:core Signed-off-by: Yutaka Kondo * fix copy Signed-off-by: Yutaka Kondo * update readme Signed-off-by: Yutaka Kondo * run pre-commit Signed-off-by: Yutaka Kondo * style(pre-commit): autofix --------- Signed-off-by: Yutaka Kondo Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../actions/docker-build-and-push/action.yaml | 14 + docker/Dockerfile | 31 +- docker/Dockerfile.svg | 727 +++++++++--------- docker/README.md | 5 + docker/docker-bake.hcl | 8 + 5 files changed, 437 insertions(+), 348 deletions(-) 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..3bf20bf5d5a 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-depend /rosdep-core-exec-depend-packages.txt /tmp/rosdep-core-exec-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-exec-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/Dockerfile.svg b/docker/Dockerfile.svg index bbbb9a89d74..eb12d09a560 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -3,45 +3,45 @@ - - + + G - + cluster_legend - + key - FROM ... - COPY --from=...  - RUN --mount=(.*)from=...  + FROM ... + COPY --from=...  + RUN --mount=(.*)from=...  key2 - - - + + + key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + @@ -50,9 +50,9 @@ fill="none" stroke="#333333" stroke-dasharray="5,2" - d="M161,-632.44C161,-632.44 41,-632.44 41,-632.44 35,-632.44 29,-626.44 29,-620.44 29,-620.44 29,-608.44 29,-608.44 29,-602.44 35,-596.44 41,-596.44 41,-596.44 161,-596.44 161,-596.44 167,-596.44 173,-602.44 173,-608.44 173,-608.44 173,-620.44 173,-620.44 173,-626.44 167,-632.44 161,-632.44" + d="M161,-430.92C161,-430.92 41,-430.92 41,-430.92 35,-430.92 29,-424.92 29,-418.92 29,-418.92 29,-406.92 29,-406.92 29,-400.92 35,-394.92 41,-394.92 41,-394.92 161,-394.92 161,-394.92 167,-394.92 173,-400.92 173,-406.92 173,-406.92 173,-418.92 173,-418.92 173,-424.92 167,-430.92 161,-430.92" /> - $BASE_IMAGE + $BASE_IMAGE @@ -60,15 +60,15 @@ - rosdep-depend + rosdep-depend external_image_0->stage_0 - - + + @@ -76,15 +76,15 @@ - rosdep-universe-visualization-depend + rosdep-universe-visualization-depend stage_0->stage_1 - - + + @@ -92,15 +92,15 @@ - rosdep-universe-sensing-perception-depend + rosdep-universe-sensing-perception-depend stage_0->stage_2 - - + + @@ -108,16 +108,16 @@ - rosdep-universe-localization-mapping-depend + rosdep-universe-localization-mapping-depend stage_0->stage_3 - - - + + + @@ -125,15 +125,15 @@ - rosdep-universe-planning-control-depend + rosdep-universe-planning-control-depend stage_0->stage_4 - - + + @@ -141,19 +141,16 @@ - rosdep-universe-vehicle-system-depend + rosdep-universe-vehicle-system-depend stage_0->stage_5 - - + + + @@ -161,15 +158,15 @@ - rosdep-universe-depend + rosdep-universe-depend stage_0->stage_6 - - + + @@ -177,15 +174,15 @@ - core-devel + core-devel stage_0->stage_7 - - + + @@ -193,95 +190,94 @@ - universe-common-devel + universe-common-devel stage_0->stage_8 - - + + - + - stage_15 + stage_18 - universe-visualization-devel + core - + - stage_1->stage_15 - - + stage_0->stage_18 + + - + - stage_23 + stage_15 - universe-visualization + universe-visualization-devel - - - stage_1->stage_23 - + + + stage_1->stage_15 + + - + - stage_10 + stage_24 - universe-sensing-perception-devel + universe-visualization - + - stage_2->stage_10 - - + stage_1->stage_24 + - + - stage_11 + stage_10 - universe-sensing-perception-devel-cuda + universe-sensing-perception-devel - - - stage_2->stage_11 - - - + + + stage_2->stage_10 + + - + - stage_18 + stage_11 - universe-sensing-perception + universe-sensing-perception-devel-cuda - - - stage_2->stage_18 - - + + + stage_2->stage_11 + + @@ -289,442 +285,479 @@ - universe-sensing-perception-cuda + universe-sensing-perception stage_2->stage_19 - - + + - + + stage_20 + + universe-sensing-perception-cuda + + + + stage_2->stage_20 + + + + + stage_12 - universe-localization-mapping-devel + universe-localization-mapping-devel - + stage_3->stage_12 - - + + - - - stage_20 + + + stage_21 - universe-localization-mapping + universe-localization-mapping - - - stage_3->stage_20 - - + + + stage_3->stage_21 + + - + stage_13 - universe-planning-control-devel + universe-planning-control-devel - + stage_4->stage_13 - - + + - - - stage_21 + + + stage_22 - universe-planning-control + universe-planning-control - - - stage_4->stage_21 - - + + + stage_4->stage_22 + + - + stage_14 - universe-vehicle-system-devel + universe-vehicle-system-devel - + stage_5->stage_14 - - + + - - - stage_22 + + + stage_23 - universe-vehicle-system + universe-vehicle-system - - - stage_5->stage_22 - - + + + stage_5->stage_23 + + - + stage_16 - universe-devel + universe-devel - + stage_6->stage_16 - - + + - + stage_17 - universe-devel-cuda + universe-devel-cuda - + stage_6->stage_17 - - + + - - - stage_24 + + + stage_25 - universe + universe - - - stage_6->stage_24 - - - + + + stage_6->stage_25 + + + - - - stage_25 + + + stage_26 - universe-cuda + universe-cuda - - - stage_6->stage_25 + + + stage_6->stage_26 - + stage_7->stage_8 - - + + + + + + stage_7->stage_18 + + - + stage_8->stage_15 - - + + - + stage_8->stage_10 - - + + - + stage_8->stage_12 - - + + - + stage_8->stage_13 - - + + - + stage_8->stage_14 - - + + - + stage_8->stage_16 - - + + - + stage_9 - universe-common-devel-cuda + universe-common-devel-cuda - + stage_8->stage_9 - - + + - - - stage_15->stage_23 + + + stage_15->stage_24 + + + + + + stage_15->stage_16 - - - - - stage_15->stage_16 - - + - + stage_10->stage_11 - - + + - - - stage_10->stage_18 - - + + + stage_10->stage_19 + + - + stage_10->stage_16 - - + + - - - stage_11->stage_19 - - + + + stage_11->stage_20 + + - + stage_11->stage_17 - - + + - - - stage_12->stage_20 - - + + + stage_12->stage_21 + + - + stage_12->stage_16 - - + + - - - stage_13->stage_21 - - + + + stage_13->stage_22 + + - + stage_13->stage_16 - - + + - - - stage_14->stage_22 - - + + + stage_14->stage_23 + + - + stage_14->stage_16 - - + + - + stage_16->stage_17 - - + + - - - stage_16->stage_24 - - + + + stage_16->stage_25 + + - - - stage_17->stage_25 - - + + + stage_17->stage_26 + + - + external_image_1 - $AUTOWARE_BASE_IMAGE + $AUTOWARE_BASE_IMAGE - + external_image_1->stage_7 - - + + - - - external_image_1->stage_23 + + + external_image_1->stage_18 + + + + + + external_image_1->stage_24 - - + + - - - external_image_1->stage_18 - - - - - - external_image_1->stage_20 - - + + + external_image_1->stage_19 + + - + external_image_1->stage_21 - - + + - + external_image_1->stage_22 - - + + + - + - external_image_1->stage_24 - - - - - + external_image_1->stage_23 + + + + + + external_image_1->stage_25 + + + + + - + stage_9->stage_11 - - + + - + stage_9->stage_17 - - + + - + external_image_2 - $AUTOWARE_BASE_CUDA_IMAGE - - - - external_image_2->stage_19 - - - - - - external_image_2->stage_25 - - - + d="M1408.75,-860.92C1408.75,-860.92 1195.5,-860.92 1195.5,-860.92 1189.5,-860.92 1183.5,-854.92 1183.5,-848.92 1183.5,-848.92 1183.5,-836.92 1183.5,-836.92 1183.5,-830.92 1189.5,-824.92 1195.5,-824.92 1195.5,-824.92 1408.75,-824.92 1408.75,-824.92 1414.75,-824.92 1420.75,-830.92 1420.75,-836.92 1420.75,-836.92 1420.75,-848.92 1420.75,-848.92 1420.75,-854.92 1414.75,-860.92 1408.75,-860.92" + /> + $AUTOWARE_BASE_CUDA_IMAGE + + + + external_image_2->stage_20 + + + + + + external_image_2->stage_26 + + + diff --git a/docker/README.md b/docker/README.md index 1d6d96b8789..4f4b5c32b8c 100644 --- a/docker/README.md +++ b/docker/README.md @@ -92,6 +92,7 @@ The ROS dependency package list files will be generated. These files will be used in the subsequent stages: - `core-devel` +- `core` - `universe-common` - `universe-COMPONENT-devel` (e.g. `universe-sensing-perception-devel`) - `universe-COMPONENT` (e.g. `universe-sensing-perception`) @@ -104,6 +105,10 @@ By generating only the package list files and copying them to the subsequent sta This stage installs the dependency packages based on `/rosdep-core-depend-packages.txt` and builds the packages under the `core` directory of `autoware.repos`. +### `core` + +This stage is an Autoware Core runtime container. It only includes the dependencies given by `/rosdep-core-exec-depend-packages.txt` and the binaries built in the `core-devel` stage. + ### `universe-common-devel` This stage installs the dependency packages based on `/rosdep-universe-common-depend-packages.txt` and builds the packages under the following directories of `autoware.repos`: 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"