name: "Security Scan" # Run workflow each time code is pushed to your repository and on a schedule. # The scheduled workflow runs every at 00:00 on Sunday UTC time. on: push: schedule: - cron: '0 0 * * 0' # `push:` is deliberately unfiltered, so this fires on every push to every # branch and there is no pull_request event to key on -- the usual # `github.event.pull_request.number || github.sha` idiom used elsewhere would # key on the unique-per-commit sha and dedup nothing. Group on the ref instead # so successive pushes to the same feature branch supersede one another. # # Cancelling is safe here: the only output is a SARIF upload, and code scanning # tracks the latest result per ref, so a superseded scan has nothing to lose. # master is excluded anyway -- every commit on master gets its own scan. concurrency: group: ci-secscan-${{ github.ref }}-${{ github.repository }} cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} jobs: tests: runs-on: ubuntu-latest env: GO111MODULE: on steps: - name: Checkout Source uses: actions/checkout@v7 if: ${{ github.actor != 'dependabot[bot]' }} - name: Run Gosec Security Scanner if: ${{ github.actor != 'dependabot[bot]' }} uses: securego/gosec@v2.27.1 with: # we let the report trigger content trigger a failure using the GitHub Security features. # backend/go/supertonic is excluded: it vendors upstream supertone-inc/supertonic # (helper.go), whose findings (G304 model-file loads, G404 math/rand for flow-matching # noise, G104 unhandled errors) are inherent to that upstream code, not ours to rewrite. args: '-no-fail -exclude-dir=backend/go/supertonic -fmt sarif -out results.sarif ./...' - name: Upload SARIF file if: ${{ github.actor != 'dependabot[bot]' }} uses: github/codeql-action/upload-sarif@v4 with: # Path to SARIF file relative to the root of the repository sarif_file: results.sarif