From 02a00a2bb62f979ab773e9d5155289416685894e Mon Sep 17 00:00:00 2001 From: David Marchand Date: Thu, 21 Nov 2024 12:01:33 +0100 Subject: [PATCH] github: Skip clang-analyze when reference generation fails. Compiling the OVS reference is supposed to succeed unless some external change breaks this compilation. One example is when DPDK API changes and breaks OVS compilation. This case is hit in the dpdk-latest branch, but also when bumping DPDK version in the main branch. On the other hand, the clang-analyze check goal is to validate OVS changes, not external changes. Fixes: d662eee09724 ("ci: Add clang-analyze to GitHub actions.") Signed-off-by: David Marchand --- .github/workflows/build-and-test.yml | 67 ++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 6501f23d263..3c3a99b4c59 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -336,7 +336,7 @@ jobs: name: logs-linux-${{ join(matrix.*, '-') }} path: logs.tgz - build-clang-analyze: + build-clang-analyze-reference: needs: build-dpdk env: dependencies: | @@ -345,7 +345,9 @@ jobs: CC: clang DPDK: dpdk CLANG_ANALYZE: true - name: clang-analyze + name: clang-analyze-reference + outputs: + clang_cache_key: ${{ steps.clang_cache_key.outputs.key }} runs-on: ubuntu-24.04 timeout-minutes: 30 @@ -413,38 +415,87 @@ jobs: uses: actions/cache@v4 with: path: base-clang-analyzer-results - key: ${{ steps.cache_key.outputs.key }} + key: ${{ steps.clang_cache_key.outputs.key }} - name: set up python + if: steps.clang_cache.outputs.cache-hit != 'true' uses: actions/setup-python@v5 with: python-version: ${{ env.python_default }} - name: get cached dpdk-dir - uses: actions/cache/restore@v4 + if: steps.clang_cache.outputs.cache-hit != 'true' + uses: actions/cache@v4 with: path: dpdk-dir key: ${{ needs.build-dpdk.outputs.dpdk_key }} - name: update APT cache + if: steps.clang_cache.outputs.cache-hit != 'true' run: sudo apt update || true - name: install common dependencies + if: steps.clang_cache.outputs.cache-hit != 'true' run: sudo apt install -y ${{ env.dependencies }} - name: prepare + if: steps.clang_cache.outputs.cache-hit != 'true' run: ./.ci/linux-prepare.sh - name: build base reference if: steps.clang_cache.outputs.cache-hit != 'true' run: ./.ci/linux-build.sh - - name: save cache - uses: actions/cache/save@v4 - if: steps.clang_cache.outputs.cache-hit != 'true' + build-clang-analyze: + needs: [build-dpdk, build-clang-analyze-reference] + if: jobs.build-clang-analyze-reference.result == 'success' + env: + dependencies: | + automake bc clang-tools libnuma-dev libunbound-dev libunwind-dev \ + libssl-dev libtool libxdp-dev llvm-dev + CC: clang + DPDK: dpdk + CLANG_ANALYZE: true + name: clang-analyze + runs-on: ubuntu-24.04 + timeout-minutes: 30 + + steps: + - name: checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: update PATH + run: | + echo "$HOME/bin" >> $GITHUB_PATH + echo "$HOME/.local/bin" >> $GITHUB_PATH + + - name: check for analyzer result cache + uses: actions/cache@v4 with: path: base-clang-analyzer-results - key: ${{ steps.cache_key.outputs.key }} + key: ${{ needs.build-clang-analyze-reference.outputs.clang_cache_key }} + + - name: set up python + uses: actions/setup-python@v5 + with: + python-version: ${{ env.python_default }} + + - name: get cached dpdk-dir + uses: actions/cache@v4 + with: + path: dpdk-dir + key: ${{ needs.build-dpdk.outputs.dpdk_key }} + + - name: update APT cache + run: sudo apt update || true + + - name: install common dependencies + run: sudo apt install -y ${{ env.dependencies }} + + - name: prepare + run: ./.ci/linux-prepare.sh - name: build run: ./.ci/linux-build.sh