From 0db92076aebf3922a715909a1d335cd8282a744d Mon Sep 17 00:00:00 2001 From: Takayuki Murooka Date: Wed, 8 Jan 2025 11:28:50 +0900 Subject: [PATCH 1/4] feat: add build-and-test-packages-above-differential.yaml and packages_above.repos Signed-off-by: Takayuki Murooka --- ...-and-test-packages-above-differential.yaml | 131 ++++++++++++++++++ packages_above.repos | 5 + 2 files changed, 136 insertions(+) create mode 100644 .github/workflows/build-and-test-packages-above-differential.yaml create mode 100644 packages_above.repos diff --git a/.github/workflows/build-and-test-packages-above-differential.yaml b/.github/workflows/build-and-test-packages-above-differential.yaml new file mode 100644 index 0000000000000..5e6659be88c5d --- /dev/null +++ b/.github/workflows/build-and-test-packages-above-differential.yaml @@ -0,0 +1,131 @@ +name: build-and-test-packages-above-differential + +on: + workflow_call: + inputs: + container: + required: true + type: string + runner: + default: ubuntu-24.04 + required: false + type: string + rosdistro: + default: humble + required: false + type: string + run-condition: + default: true + required: false + type: boolean + container-suffix: + required: false + default: "" + type: string + secrets: + codecov-token: + required: true + +env: + CC: /usr/lib/ccache/gcc + CXX: /usr/lib/ccache/g++ + +jobs: + build-and-test-packages-above-differential: + if: ${{ inputs.run-condition }} + runs-on: ${{ inputs.runner }} + container: ${{ inputs.container }}${{ inputs.container-suffix }} + steps: + - name: Set PR fetch depth + run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}" + shell: bash + + - name: Checkout PR branch and all PR commits + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: ${{ env.PR_FETCH_DEPTH }} + + - name: Show disk space before the tasks + run: df -h + shell: bash + + - name: Show machine specs + run: lscpu && free -h + shell: bash + + - name: Remove exec_depend + uses: autowarefoundation/autoware-github-actions/remove-exec-depend@v1 + + - name: Get modified packages + id: get-modified-packages + uses: autowarefoundation/autoware-github-actions/get-modified-packages@v1 + + - name: Create ccache directory + run: | + mkdir -p ${CCACHE_DIR} + du -sh ${CCACHE_DIR} && ccache -s + shell: bash + + - name: Attempt to restore ccache + uses: actions/cache/restore@v4 + with: + path: | + /root/.ccache + key: ccache-main-${{ runner.arch }}-${{ inputs.rosdistro }}-${{ github.event.pull_request.base.sha }} + restore-keys: | + ccache-main-${{ runner.arch }}-${{ inputs.rosdistro }}- + + - name: Show ccache stats before build and reset stats + run: | + du -sh ${CCACHE_DIR} && ccache -s + ccache --zero-stats + shell: bash + + - name: Export CUDA state as a variable for adding to cache key + run: | + build_type_cuda_state=nocuda + if [[ "${{ inputs.container-suffix }}" == "-cuda" ]]; then + build_type_cuda_state=cuda + fi + echo "BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" >> "${GITHUB_ENV}" + echo "::notice::BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" + shell: bash + + - name: Build + if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} + uses: autowarefoundation/autoware-github-actions/colcon-build@v1 + with: + rosdistro: ${{ inputs.rosdistro }} + target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }} + build-depends-repos: build_depends.repos + packages-above-repos: packages_above.repos + cache-key-element: ${{ env.BUILD_TYPE_CUDA_STATE }} + + - name: Show ccache stats after build + run: du -sh ${CCACHE_DIR} && ccache -s + shell: bash + + - name: Test + id: test + if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} + uses: autowarefoundation/autoware-github-actions/colcon-test@v1 + with: + rosdistro: ${{ inputs.rosdistro }} + target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }} + build-depends-repos: build_depends.repos + packages-above-repos: packages_above.repos + + - name: Upload coverage to CodeCov + if: ${{ steps.test.outputs.coverage-report-files != '' }} + uses: codecov/codecov-action@v4 + with: + files: ${{ steps.test.outputs.coverage-report-files }} + fail_ci_if_error: false + verbose: true + flags: differential${{ inputs.container-suffix }} + token: ${{ secrets.codecov-token }} + + - name: Show disk space after the tasks + run: df -h + shell: bash diff --git a/packages_above.repos b/packages_above.repos new file mode 100644 index 0000000000000..5a6f8852889df --- /dev/null +++ b/packages_above.repos @@ -0,0 +1,5 @@ +repositories: + tools/autoware_tools: + type: git + url: https://github.com/autowarefoundation/autoware_tools.git + version: main From d43d2ce1b7b6b160f0869643c5147f49408136a5 Mon Sep 17 00:00:00 2001 From: Takayuki Murooka Date: Tue, 11 Mar 2025 00:24:14 +0900 Subject: [PATCH 2/4] fix for comment1 Signed-off-by: Takayuki Murooka --- ...d-and-test-packages-above-differential.yaml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/workflows/build-and-test-packages-above-differential.yaml b/.github/workflows/build-and-test-packages-above-differential.yaml index 5e6659be88c5d..7af11ac5b7e9a 100644 --- a/.github/workflows/build-and-test-packages-above-differential.yaml +++ b/.github/workflows/build-and-test-packages-above-differential.yaml @@ -22,6 +22,10 @@ on: required: false default: "" type: string + build-pre-command: + required: false + default: "" + type: string secrets: codecov-token: required: true @@ -92,6 +96,19 @@ jobs: echo "::notice::BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" shell: bash + - name: Prepare build_depends.repos file (main branch) + if: ${{ github.event.pull_request.base.ref == 'main' }} + uses: ./.github/actions/combine-repos-action + with: + base_file: build_depends_humble.repos + overlay_file: build_depends_nightly.repos + output_file: build_depends.repos + + - name: Prepare build_depends.repos file (humble branch) + if: ${{ github.event.pull_request.base.ref == 'humble' }} + run: cp build_depends_humble.repos build_depends.repos + shell: bash + - name: Build if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} uses: autowarefoundation/autoware-github-actions/colcon-build@v1 @@ -101,6 +118,7 @@ jobs: build-depends-repos: build_depends.repos packages-above-repos: packages_above.repos cache-key-element: ${{ env.BUILD_TYPE_CUDA_STATE }} + build-pre-command: ${{ inputs.build-pre-command }} - name: Show ccache stats after build run: du -sh ${CCACHE_DIR} && ccache -s From 7bdd18ec74424b846467ef7d0f91b6a889553eed Mon Sep 17 00:00:00 2001 From: Takayuki Murooka Date: Tue, 11 Mar 2025 00:26:01 +0900 Subject: [PATCH 3/4] fix for comment2 Signed-off-by: Takayuki Murooka --- .github/workflows/build-test-tidy-pr.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/build-test-tidy-pr.yaml b/.github/workflows/build-test-tidy-pr.yaml index 90dfc2083118e..55d33f9bd0f88 100644 --- a/.github/workflows/build-test-tidy-pr.yaml +++ b/.github/workflows/build-test-tidy-pr.yaml @@ -50,6 +50,17 @@ jobs: secrets: codecov-token: ${{ secrets.CODECOV_TOKEN }} + build-and-test-packages-above-differential: + if: ${{ always() }} + needs: + - require-label + uses: ./.github/workflows/6build-and-test-packages-above-differential.yaml + with: + container: ghcr.io/autowarefoundation/autoware:universe-devel + run-condition: ${{ needs.require-label.outputs.result == 'true' }} + secrets: + codecov-token: ${{ secrets.CODECOV_TOKEN }} + build-and-test-differential-cuda: if: ${{ always() }} needs: check-if-cuda-job-is-needed From d91317729e2378aabd4531cfd18c0b0ef58fa36f Mon Sep 17 00:00:00 2001 From: Takayuki Murooka Date: Tue, 11 Mar 2025 00:55:41 +0900 Subject: [PATCH 4/4] fix Signed-off-by: Takayuki Murooka --- .github/workflows/build-test-tidy-pr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-test-tidy-pr.yaml b/.github/workflows/build-test-tidy-pr.yaml index 55d33f9bd0f88..1a97f5d205580 100644 --- a/.github/workflows/build-test-tidy-pr.yaml +++ b/.github/workflows/build-test-tidy-pr.yaml @@ -54,7 +54,7 @@ jobs: if: ${{ always() }} needs: - require-label - uses: ./.github/workflows/6build-and-test-packages-above-differential.yaml + uses: ./.github/workflows/build-and-test-packages-above-differential.yaml with: container: ghcr.io/autowarefoundation/autoware:universe-devel run-condition: ${{ needs.require-label.outputs.result == 'true' }}