Compliance repo with main rules for SCA and SAST scan
This repository provides common GitHub workflows for Mend and CodeQL scans.
- Create
mend.yml
workflow in your project repository
name: Mend
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
inputs:
branch:
type: string
required: false
default: main
workflow_call:
inputs:
branch:
type: string
required: true
permissions:
contents: read
jobs:
mend:
uses: nginxinc/compliance-rules/.github/workflows/mend.yml@<git_tag>
secrets: inherit
with:
product_name: <caller_product_name>_${{ github.head_ref || github.ref_name }}
project_name: <caller_project_name>
- In the
mend
job reference the main mend workflow (in this repository)
uses: nginxinc/compliance-rules/.github/workflows/mend.yml@<git_tag>
- Configure
product_name
andproject_name
variables. They represent caller github repositoryproduct
andproject
name.
product_name: <caller_product_name>_${{ github.head_ref || github.ref_name }}
project_name: <caller_project_name>
- GitHub triggers the mend workflow defined in a project repository (for example
ProjectABC
) - Mend job references mend rules (main
mend.yml
) defined in the workflow in this repository. - Mend scans the
ProjectABC
code and generates vulenerability report. - Depends on the scan (vulnerability) rules defined in the main
mand.yml
the pipeline fails or passes the scan. - The GitHub repository (
ProjectA
) must be configured to reject PRs (prevent from merging with themain
branch) if the mend pipeline fails.
- Create
codeql.yml
workflow in your project repository
name: "CodeQL"
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
inputs:
branch:
type: string
required: false
default: main
workflow_call:
inputs:
branch:
type: string
required: true
concurrency:
group: ${{ github.ref_name }}-codeql
cancel-in-progress: true
permissions:
contents: read
jobs:
codeql:
uses: nginxinc/compliance-rules/.github/workflows/codeql.yml@<git_tag>
with:
requested_languages: go
- In the
codeql
job reference the maincodeql
workflow (in this repository)
uses: nginxinc/compliance-rules/.github/workflows/codeql.yml@<git_tag>
- GitHub triggers the CodeQL workflow defined in a project repository (for example
ProjectABC
) - CodeQL job references
codeql
rules (maincodeql.yml
) defined in the workflow in this repository. - CodeQL analyses the
ProjectABC
code. - Depends on the results the pipeline fails or passes.
- The GitHub repository (
ProjectA
) must be configured to reject PRs (prevent from merging with themain
branch) if the codeql detects issues and the pipeline fails.