A set of GitHub Actions for using ProdCycle in your CI/CD pipelines. A different action is available depending on your use case.
Requires a ProdCycle account. These actions call the ProdCycle API, which requires a valid API key (
pc_...). Sign up at prodcycle.com to get started.
| Action | Description |
|---|---|
| Compliance Scanner | Scan PR changes for SOC 2, HIPAA, and NIST compliance violations |
Here's an example using the Compliance Scanner action:
# .github/workflows/compliance.yml
name: Compliance Code Scanner
on:
pull_request:
push:
branches:
- main
- master
jobs:
compliance:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: prodcycle/actions/compliance-scanner@v1
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}You can also reference the root action directly, which defaults to the Compliance Scanner:
- uses: prodcycle/actions@v1
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}The Compliance Scanner scans pull request changes for compliance violations against SOC 2, HIPAA, and NIST frameworks via the ProdCycle API.
It supports two modes (managed automatically by default):
1. Pull Request mode (diff scan)
When run on a pull_request event:
- Collects the diffs of changed files from the PR (only the changed lines are analyzed)
- Sends them to the ProdCycle compliance check API
- Creates inline annotations on the PR for each finding
- Posts a summary comment with severity and framework breakdown
- Fails the check if findings match the configured severity threshold
2. Push / Merge mode (full scan)
When run on a push event (e.g., merge to main):
- Collects and scans the entire codebase
- Validates all tracked files against compliance frameworks
- Reports any findings in the GitHub Actions summary
| Input | Required | Default | Description |
|---|---|---|---|
api-key |
Yes | ProdCycle compliance API key (pc_...) |
|
api-url |
No | https://api.prodcycle.com |
ProdCycle API base URL |
frameworks |
No | Workspace setting | Comma-separated framework IDs (soc2,hipaa,nist) |
fail-on |
No | critical,high |
Comma-separated severities that fail the check |
severity-threshold |
No | low |
Minimum severity to include in results |
include |
No | All changed files | Comma-separated glob patterns to include (**/*.tf,**/*.yaml) |
exclude |
No | None | Comma-separated glob patterns to exclude (test/**,docs/**) |
scan-mode |
No | auto |
auto (diff for PRs, full for pushes); diff (changed lines only); full (entire codebase) |
annotate |
No | true |
Create inline PR annotations for findings |
comment |
No | true |
Post a summary comment on the PR |
| Output | Description |
|---|---|
passed |
Whether the scan passed (true/false) |
findings-count |
Total number of findings |
scan-id |
ProdCycle scan ID for linking to the dashboard |
summary |
JSON summary of results by severity and framework |
- uses: prodcycle/actions/compliance-scanner@v1
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}
frameworks: soc2,hipaa,nist- uses: prodcycle/actions/compliance-scanner@v1
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}
fail-on: critical- uses: prodcycle/actions/compliance-scanner@v1
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}
include: "**/*.tf,**/*.yaml,**/*.yml,**/Dockerfile"
exclude: "test/**,docs/**"- uses: prodcycle/actions/compliance-scanner@v1
id: compliance
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}
continue-on-error: true
- run: |
echo "Passed: ${{ steps.compliance.outputs.passed }}"
echo "Findings: ${{ steps.compliance.outputs.findings-count }}"
echo "Scan: ${{ steps.compliance.outputs.scan-id }}"- uses: prodcycle/actions/compliance-scanner@v1
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}
scan-mode: full- uses: prodcycle/actions/compliance-scanner@v1
with:
api-key: ${{ secrets.PRODCYCLE_API_KEY }}
api-url: https://api.yourcompany.com| ID | Framework |
|---|---|
soc2 |
SOC 2 |
hipaa |
HIPAA |
nist |
NIST 800-53 / Cybersecurity Framework |
If no frameworks input is specified, the action uses the frameworks configured on your ProdCycle workspace.
- A ProdCycle account (sign up at prodcycle.com)
- A ProdCycle API key generated from your workspace settings
- Compliance check enabled on your workspace
In ProdCycle, go to Settings > API and create a compliance check API key. The key starts with pc_.
In your repository, go to Settings > Secrets and variables > Actions and add a new secret:
- Name:
PRODCYCLE_API_KEY - Value: Your
pc_...key
Create .github/workflows/compliance.yml in your repository with the configuration from the Quick start section above.
The actions require the following GitHub token permissions:
contents: readto checkout and read changed filespull-requests: writeto post annotations and summary comments
pnpm install
pnpm run type-check # TypeScript check
pnpm run test # Run tests
pnpm run build # Bundle with ncc into compliance-scanner/dist/
pnpm run all # All of the aboveSee CONTRIBUTING.md for more details.
MIT. See LICENSE for details.