ci: run `make sparse` as part of the GitHub workflow

Occasionally we receive reviews after patches were integrated, where `sparse` (https://sparse.docs.kernel.org/en/latest/ has more information on that project) identified problems such as file-local variables or functions being declared as global. By running `sparse` as part of our Continuous Integration, we can catch such things much earlier. Even better: developers who activated GitHub Actions on their forks can catch such issues before even sending their patches to the Git mailing list. This addresses https://github.com/gitgitgadget/git/issues/345 Note: Not even Ubuntu 20.04 ships with a new enough version of `sparse` to accommodate Git's needs. The symptom looks like this: add-interactive.c:537:51: error: Using plain integer as NULL pointer To counter that, we download and install the custom-built `sparse` package from the Azure Pipeline that we specifically created to address this issue. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Schindelin committed Jul 14, 2021 at 11:50 UTC e61059660ca00ba69d1721b7d48653c52848bece
1 file changed +21
.github/workflows/main.yml
+21
@@ -350,6 +350,27 @@ jobs:
350 - uses: actions/checkout@v1
351 - run: ci/install-dependencies.sh
352 - run: ci/run-static-analysis.sh
353 + sparse:
354 + needs: ci-config
355 + if: needs.ci-config.outputs.enabled == 'yes'
356 + env:
357 + jobname: sparse
358 + runs-on: ubuntu-20.04
359 + steps:
360 + - name: Download a current `sparse` package
361 + # Ubuntu's `sparse` version is too old for us
362 + uses: git-for-windows/get-azure-pipelines-artifact@v0
363 + with:
364 + repository: git/git
365 + definitionId: 10
366 + artifact: sparse-20.04
367 + - name: Install the current `sparse` package
368 + run: sudo dpkg -i sparse-20.04/sparse_*.deb
369 + - name: Install other dependencies
370 + run: |
371 + sudo apt-get install -q -y libssl-dev libcurl4-openssl-dev libexpat-dev gettext zlib1g-dev
372 + - uses: actions/checkout@v2
373 + - run: make sparse
374 documentation:
375 needs: ci-config
376 if: needs.ci-config.outputs.enabled == 'yes'