Skip to content

ci: add build attestation and license compliance workflows#42

Merged
tolgakaratas merged 6 commits into
mainfrom
ci/supply-chain-security
Apr 5, 2026
Merged

ci: add build attestation and license compliance workflows#42
tolgakaratas merged 6 commits into
mainfrom
ci/supply-chain-security

Conversation

@tolgakaratas
Copy link
Copy Markdown
Contributor

Summary

  • Add SLSA build provenance attestation to release pipeline (release.yml) using actions/attest-build-provenance@v2.2.3, alongside existing cosign artifact signing
  • Add FOSSA license compliance workflow (license-compliance.yml) for automated GPL-2.0 compatibility checks on push/PR/weekly schedule

Details

Build Attestation:

  • Generates SLSA Build Level 2 provenance for all release artifacts (DMG, EXE, DEB, RPM, AppImage, portable archives)
  • Enables gh attestation verify for downstream users
  • Added id-token: write and attestations: write permissions to release job

FOSSA License Compliance:

  • Runs on push to main, PRs, and weekly schedule (Monday 5am UTC)
  • Skips doc-only changes via paths-ignore
  • Skips fork PRs (FOSSA_API_KEY not available)
  • Requires FOSSA_API_KEY secret to activate (workflow will skip if not configured)

Setup Required

To activate FOSSA scanning:

  1. Create account at https://app.fossa.com
  2. Generate a push-only API token: Settings > Integrations > API Tokens
  3. Add FOSSA_API_KEY to GitHub repository secrets

Test plan

  • CI passes (doc-only change, 48-job matrix should be skipped)
  • FOSSA workflow appears in Actions tab (will fail until API key is added)
  • Release attestation will be tested on next release tag push

Related: #41 (CodeQL Phase 2 security fixes)

@github-actions github-actions Bot added ci CI/CD changes docs Documentation labels Apr 5, 2026
Add SLSA build provenance attestation to release pipeline using
actions/attest-build-provenance alongside existing cosign signing.
Add FOSSA license compliance workflow for GPL-2.0 compatibility
checks (requires FOSSA_API_KEY secret to activate).
Add java_code output to change detection job so CodeQL analysis is
skipped when only workflow/config files change (prevents false failure
on empty Java database). Add API key check to FOSSA workflow so it
gracefully skips when FOSSA_API_KEY secret is not configured.
Move secret check from job-level if condition (where secrets context
is unreliable) to a step-level check that sets an output. Fork
contributors without FOSSA_API_KEY get a clean pass instead of failure.
FOSSA test step requires a full-access API key to display issue
details. With a push-only key, it reports issues but cannot show
details. Set continue-on-error so the scan results are uploaded
to FOSSA webapp for review without blocking CI.
@tolgakaratas tolgakaratas force-pushed the ci/supply-chain-security branch from 7e37925 to 520f814 Compare April 5, 2026 19:35
Remove FOSSA license-compliance workflow (requires external API,
premium for policy management, no advantage over local CLI tools).

Add Grype vulnerability scan to security-scan.yml with SARIF upload
to GitHub Security tab. Add `make audit` (Grype, fast) and
`make audit-full` (OWASP, detailed HTML report) targets for local
pre-push security scanning.
Document the complete security audit workflow in CONTRIBUTING.md:
- Grype as primary local scanner (make audit, ~30s)
- OWASP as detailed fallback (make audit-full)
- Handling findings by severity
- Core principle: no external API dependency for security tooling

Update Early Detection Chain to include Grype between static
analysis and pre-commit hooks. Add Security section to Makefile
help. Update AGENTS.md key constraints and development-guide.md.
@tolgakaratas tolgakaratas enabled auto-merge (squash) April 5, 2026 22:56
@tolgakaratas tolgakaratas merged commit 4f32eaa into main Apr 5, 2026
56 checks passed
@tolgakaratas tolgakaratas deleted the ci/supply-chain-security branch April 5, 2026 23:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD changes docs Documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant