diff --git a/.github/workflows/build-and-test-differential.yaml b/.github/workflows/build-and-test-differential.yaml index d86f2e19d7280..21fea804cb1ac 100644 --- a/.github/workflows/build-and-test-differential.yaml +++ b/.github/workflows/build-and-test-differential.yaml @@ -27,30 +27,82 @@ jobs: with: label: tag:require-cuda-build-and-test - generate-strategy: - needs: [make-sure-label-is-present, make-sure-require-cuda-label-is-present] - if: ${{ needs.make-sure-label-is-present.outputs.result == 'true' }} + prepare-build-and-test-differential: runs-on: ubuntu-latest + needs: [make-sure-label-is-present, make-sure-require-cuda-label-is-present] outputs: - strategy: ${{ steps.generate-strategy.outputs.strategy }} + cuda_build: ${{ steps.check-if-cuda-build-is-required.outputs.cuda_build }} steps: - - name: Generate strategy - id: generate-strategy + - name: Check if cuda-build is required + id: check-if-cuda-build-is-required run: | - if [ "${{ needs.make-sure-require-cuda-label-is-present.outputs.result }}" != "true" ]; then - strategy='{"rosdistro":["humble"],"container-suffix":[""],"include":[{"rosdistro":"humble","container":"ghcr.io/autowarefoundation/autoware:universe-devel","build-depends-repos":"build_depends.repos"},{"container-suffix":"","runner":"ubuntu-latest","build-pre-command":""}]}' + if ${{ needs.make-sure-require-cuda-label-is-present.outputs.result == 'true' }}; then + echo "cuda-build is required" + echo "cuda_build=true" >> $GITHUB_OUTPUT else - strategy='{"rosdistro":["humble"],"container-suffix":["-cuda"],"include":[{"rosdistro":"humble","container":"ghcr.io/autowarefoundation/autoware:universe-devel","build-depends-repos":"build_depends.repos"},{"container-suffix":"-cuda","runner":"codebuild-autoware-us-east-1-${{ github.run_id }}-${{ github.run_attempt }}-ubuntu-7.0-large","build-pre-command":"taskset --cpu-list 0-5"}]}' + echo "cuda-build is not required" + echo "cuda_build=false" >> $GITHUB_OUTPUT fi - echo "::set-output name=strategy::$(echo $strategy | jq -c .)" + shell: bash + - name: Fail if build is not required + if: ${{ needs.make-sure-label-is-present.outputs.result == 'false' }} + run: exit 1 build-and-test-differential: - needs: [generate-strategy] runs-on: ${{ matrix.runner }} container: ${{ matrix.container }}${{ matrix.container-suffix }} + needs: prepare-build-and-test-differential strategy: fail-fast: false - matrix: ${{fromJson(needs.generate-strategy.outputs.strategy)}} + matrix: + rosdistro: + - humble + include: + - rosdistro: humble + container: ghcr.io/autowarefoundation/autoware:universe-devel + container-suffix: "" + build-depends-repos: build_depends.repos + runner: ubuntu-latest + build-pre-command: "" + 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: Run build-and-test-differential action + uses: ./.github/actions/build-and-test-differential + with: + rosdistro: ${{ matrix.rosdistro }} + container: ${{ matrix.container }} + container-suffix: ${{ matrix.container-suffix }} + runner: ${{ matrix.runner }} + build-depends-repos: ${{ matrix.build-depends-repos }} + build-pre-command: ${{ matrix.build-pre-command }} + codecov-token: ${{ secrets.CODECOV_TOKEN }} + + build-and-test-differential-cuda: + runs-on: ${{ matrix.runner }} + container: ${{ matrix.container }}${{ matrix.container-suffix }} + needs: prepare-build-and-test-differential + if: ${{ needs.prepare-build-and-test-differential.outputs.cuda_build == 'true' }} + strategy: + fail-fast: false + matrix: + rosdistro: + - humble + include: + - rosdistro: humble + container: ghcr.io/autowarefoundation/autoware:universe-devel + container-suffix: -cuda + build-depends-repos: build_depends.repos + runner: codebuild-autoware-us-east-1-${{ github.run_id }}-${{ github.run_attempt }}-ubuntu-7.0-large + build-pre-command: taskset --cpu-list 0-5 steps: - name: Set PR fetch depth run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}" @@ -74,7 +126,52 @@ jobs: codecov-token: ${{ secrets.CODECOV_TOKEN }} clang-tidy-differential: - needs: build-and-test-differential + needs: [build-and-test-differential, prepare-build-and-test-differential] + if: ${{ needs.prepare-build-and-test-differential.outputs.cuda_build == 'false' }} + runs-on: ubuntu-latest + container: ghcr.io/autowarefoundation/autoware:universe-devel + steps: + - name: Set PR fetch depth + run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}" + + - 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 + + - 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: Get changed files (existing files only) + id: get-changed-files + run: | + echo "changed-files=$(git diff --name-only "origin/${{ github.base_ref }}"...HEAD | grep -E '\.(cpp|hpp)$' | while read -r file; do [ -e "$file" ] && echo -n "$file "; done)" >> $GITHUB_OUTPUT + shell: bash + + - name: Run clang-tidy + if: ${{ steps.get-changed-files.outputs.changed-files != '' }} + uses: autowarefoundation/autoware-github-actions/clang-tidy@v1 + with: + rosdistro: humble + target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }} + clang-tidy-config-url: https://raw.githubusercontent.com/autowarefoundation/autoware/main/.clang-tidy-ci + clang-tidy-ignore-path: .clang-tidy-ignore + build-depends-repos: build_depends.repos + cache-key-element: cuda + + - name: Show disk space after the tasks + run: df -h + + clang-tidy-differential-cuda: + needs: build-and-test-differential-cuda runs-on: codebuild-autoware-us-east-1-${{ github.run_id }}-${{ github.run_attempt }}-ubuntu-7.0-large container: ghcr.io/autowarefoundation/autoware:universe-devel-cuda steps: