ipxe/.github/workflows/coverity.yml
Michael Brown 1d23d5a037 [ci] Schedule Coverity Scan run via GitHub Actions
Trigger the daily Coverity Scan submission via a GitHub Actions
schedule (or via a manual workflow run), rather than relying on an
external process pushing to the "coverity_scan" branch.

Since the scheduled workflow will run even on forks of the repository,
add a check to cause the submission to be skipped if the relevant
secret is not configured.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-02-13 23:49:47 +00:00

61 lines
1.7 KiB
YAML

name: Coverity Scan
on:
workflow_dispatch:
schedule:
- cron: '42 0 * * *'
jobs:
secrets:
name: Secrets check
runs-on: ubuntu-latest
env:
COVERITY_SCAN_TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
outputs:
present: ${{ steps.check.outputs.present }}
steps:
- name: Check secret presence
id: check
if: env.COVERITY_SCAN_TOKEN
run: |
echo "present=true" >> $GITHUB_OUTPUT
submit:
name: Submit
runs-on: ubuntu-latest
needs: secrets
if: needs.secrets.outputs.present
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Download Coverity Scan
run: |
curl --form token=${{ secrets.COVERITY_SCAN_TOKEN }} \
--form project=${{ github.repository }} \
--output coverity.tar.gz \
https://scan.coverity.com/download/cxx/linux64
mkdir -p /opt/coverity
sudo tar xvzf coverity.tar.gz --strip 1 --directory /opt/coverity
- name: Build via Coverity Scan
run: |
make -C src bin/deps
/opt/coverity/bin/cov-build --dir cov-int make -C src bin/blib.a
- name: Create submission
run : |
tar cvzf cov-int.tar.gz cov-int
- name: Submit to Coverity Scan
run: |
curl --form token=${{ secrets.COVERITY_SCAN_TOKEN }} \
--form email=${{ secrets.COVERITY_SCAN_EMAIL }} \
--form file=@cov-int.tar.gz \
--form version=${{ github.sha }} \
--form description=${{ github.ref }} \
https://scan.coverity.com/builds?project=${{ github.repository }}