Skip to content

Conversation

@johnvincentcorpuz
Copy link
Collaborator

@johnvincentcorpuz johnvincentcorpuz commented Dec 19, 2025

Summary

Integrates FOSSA security and compliance analysis (SCA) scanning into the CI/CD pipeline with per-plugin scanning and shared labeling for organization.

Changes

🔧 GitHub Actions Workflow

Modified: .github/workflows/build-plugin.yaml

  • Added FOSSA SCA scan step after build/test phase using SolaceDev/solace-public-workflows
  • Uses GitHub Secrets (secrets.FOSSA_API_KEY) for public repository
  • Configured per-plugin scanning with fossa.project and fossa.path parameters
  • Scans run independently for each plugin when changes are detected via CI matrix

📋 FOSSA Configuration

Root configuration: .fossa.yml

  • Project: SolaceLabs_solace-agent-mesh-core-plugins
  • Labels: solaceai, repository, solace-agent-mesh-core-plugins

Per-plugin .fossa.yml files in all 16 plugin directories:

  • sam-slack/.fossa.yml
  • sam-mongodb/.fossa.yml
  • sam-event-mesh-gateway/.fossa.yml
  • sam-bedrock-agent/.fossa.yml
  • sam-mermaid/.fossa.yml
  • sam-rest-gateway/.fossa.yml
  • sam-webhook-gateway/.fossa.yml
  • sam-geo-information/.fossa.yml
  • sam-sql-database/.fossa.yml
  • sam-event-mesh-agent/.fossa.yml
  • sam-event-mesh-tool/.fossa.yml
  • sam-nuclia-tool/.fossa.yml
  • sam-rag/.fossa.yml
  • sam-ruleset-lookup-tool/.fossa.yml
  • sam-slack-gateway-adapter/.fossa.yml
  • sam-sql-database-tool/.fossa.yml

Each plugin scans as a separate FOSSA project (e.g., SolaceLabs_sam-slack)
All plugins share the solace-agent-mesh-core-plugins label for grouping

How It Works

  1. When a PR modifies files in a plugin directory (e.g., sam-slack/), the CI workflow triggers
  2. GitHub Actions checks out only that plugin (sparse checkout)
  3. FOSSA scans the plugin directory using its local .fossa.yml config
  4. Results appear in FOSSA as a separate project with the shared label

FOSSA Dashboard

In FOSSA, you can:

  • View each plugin as an independent project
  • Filter by label solace-agent-mesh-core-plugins to see all 16 plugins together
  • Track dependencies, licenses, and vulnerabilities per plugin

Test Plan

  • Verify GitHub Secret FOSSA_API_KEY is configured
  • Confirm FOSSA scan runs for a modified plugin
  • Check FOSSA dashboard shows all 16 plugin projects
  • Validate label grouping works correctly

🤖 Generated with Claude Code

This change integrates FOSSA security and compliance scanning into the CI/CD pipeline with per-plugin scanning and shared labeling for organization.

## Changes

### GitHub Actions Workflow
- Added FOSSA SCA scan step after build/test phase
- Uses GitHub Secrets (secrets.FOSSA_API_KEY) for public repository
- Configured per-plugin scanning with fossa.project and fossa.path parameters
- Scans run on each plugin independently when changes are detected

### FOSSA Configuration
- Created root .fossa.yml for repository-level configuration
- Created individual .fossa.yml in each of the 16 plugin directories
- Each plugin scans as a separate FOSSA project (e.g., SolaceLabs_sam-slack)
- All plugins share 'solace-agent-mesh-core-plugins' label for grouping

### Benefits
- Independent dependency tracking per plugin
- Centralized compliance view via shared labels
- Efficient scanning using sparse checkout
- Automated security vulnerability detection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@johnvincentcorpuz johnvincentcorpuz changed the title feat: add FOSSA SCA scanning for monorepo plugins feat(DATAGO-115000): add FOSSA SCA scanning for monorepo plugins Dec 19, 2025
@johnvincentcorpuz johnvincentcorpuz marked this pull request as ready for review December 19, 2025 20:04
johnvincentcorpuz and others added 5 commits December 19, 2025 15:13
Added FOSSA Guard steps to enforce licensing and security policies in the CI/CD pipeline.

## Changes

- Added FOSSA Licensing Guard step
  - Blocks on license policy conflicts
  - Mode: BLOCK

- Added FOSSA Security Vulnerabilities Guard step
  - Blocks on critical and high severity vulnerabilities
  - Mode: BLOCK
  - Severity levels: critical, high

- Pinned GitHub Actions to commit SHAs for security
  - actions/[email protected] → @11bd71901bbe5b1630ceea73d27597364c9af683
  - actions/[email protected] → @8d9ed9ac5c53483de85588cdf95a591a75ab9f55
  - actions/[email protected] → @6f8efc29b200d32929f49075959781ed54ec270c
  - actions/[email protected] → @8558fd74291d67161a8a78ce36a881fa63b766a9

## Benefits

- Automated blocking on license violations
- Automated blocking on critical/high security vulnerabilities
- Improved supply chain security via SHA-pinned actions
- Consistent policy enforcement across all plugins

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
The SolaceDev/solace-public-workflows sca-scan action expects FOSSA_API_KEY to be passed as an environment variable, not just as an input parameter.

This fixes the issue where the API key was empty during FOSSA scans.

Changes:
- Added env.FOSSA_API_KEY to sca-scan step
- Added env.FOSSA_API_KEY to both FOSSA Guard steps
- Kept fossa_api_key input for Guard actions (required by their interface)
Use fossa_api_key as input parameter (not environment variable) to match working examples from other repositories.

The SolaceDev/solace-public-workflows actions expect:
  with:
    fossa_api_key: ${{ secrets.FOSSA_API_KEY }}

Not as env variable.
The issue was that ci.yaml wasn't passing FOSSA_API_KEY to the build-plugin.yaml reusable workflow.

Changes:
- Added FOSSA_API_KEY to build-plugin.yaml secrets definition (required: true)
- Added FOSSA_API_KEY to ci.yaml secrets passthrough

This is required for reusable workflows - secrets must be explicitly declared and passed.
@johnvincentcorpuz johnvincentcorpuz merged commit 9b15f00 into main Dec 23, 2025
26 of 27 checks passed
@johnvincentcorpuz johnvincentcorpuz deleted the fossa-integration branch December 23, 2025 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants