-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# This workflow uses actions that are not certified by GitHub. | ||
# They are provided by a third-party and are governed by | ||
# separate terms of service, privacy policy, and support | ||
# documentation. | ||
|
||
# This workflow checks out code, performs a Codacy security scan | ||
# and integrates the results with the | ||
# GitHub Advanced Security code scanning feature. For more information on | ||
# the Codacy security scan action usage and parameters, see | ||
# https://github.com/codacy/codacy-analysis-cli-action. | ||
# For more information on Codacy Analysis CLI in general, see | ||
# https://github.com/codacy/codacy-analysis-cli. | ||
|
||
name: Codacy Security Scan | ||
|
||
on: | ||
push: | ||
branches: [ "dev", "main" ] | ||
pull_request: | ||
# The branches below must be a subset of the branches above | ||
branches: [ "dev", "main" ] | ||
schedule: | ||
- cron: '17 0 * * 4' | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
codacy-security-scan: | ||
permissions: | ||
contents: read # for actions/checkout to fetch code | ||
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results | ||
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status | ||
name: Codacy Security Scan | ||
runs-on: ubuntu-latest | ||
steps: | ||
# Checkout the repository to the GitHub Actions runner | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis | ||
- name: Run Codacy Analysis CLI | ||
uses: codacy/codacy-analysis-cli-action@3ff8e64eb4b714c4bee91b7b4eea31c6fc2c4f93 | ||
with: | ||
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository | ||
# You can also omit the token and run the tools that support default configurations | ||
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | ||
verbose: true | ||
output: results.sarif | ||
format: sarif | ||
# Adjust severity of non-security issues | ||
gh-code-scanning-compat: true | ||
# Force 0 exit code to allow SARIF file generation | ||
# This will handover control about PR rejection to the GitHub side | ||
max-allowed-issues: 2147483647 | ||
|
||
# Upload the SARIF file generated in the previous step | ||
- name: Upload SARIF results file | ||
uses: github/codeql-action/upload-sarif@v3 | ||
with: | ||
sarif_file: results.sarif |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
Check notice Code scanning / Checkov (reported by Codacy) Ensure top-level permissions are not set to write-all Note
Ensure top-level permissions are not set to write-all
|
||
|
||
# This workflow uses actions that are not certified by GitHub. | ||
# They are provided by a third-party and are governed by | ||
# separate terms of service, privacy policy, and support | ||
# documentation. | ||
|
||
# This GitHub Actions workflow validates the title of pull requests (PRs) to ensure they follow conventional commit standards. | ||
|
||
name: PR Conventional Commit Validation | ||
|
||
on: | ||
# Trigger this workflow on specific events related to pull requests | ||
pull_request: | ||
types: [opened, synchronize, reopened, edited] | ||
|
||
jobs: | ||
validate-pr-title: | ||
runs-on: ubuntu-latest # Use the latest Ubuntu runner for the job | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 # Checkout the repository code using the actions/checkout action | ||
|
||
- name: PR Conventional Commit Validation | ||
uses: ytanikin/[email protected] # Use the PRConventionalCommits action to validate PR titles | ||
Check warning Code scanning / Semgrep (reported by Codacy) An action sourced from a third-party repository on GitHub is not pinned to a full length commit SHA. Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release. Warning
An action sourced from a third-party repository on GitHub is not pinned to a full length commit SHA. Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release.
|
||
with: | ||
# Define the task types that are valid for conventional commits | ||
task_types: '["build","ci","docs","feat","fix","perf","refactor","style","test","feat!"]' | ||
# Map the conventional commit types to corresponding GitHub labels | ||
custom_labels: '{"build": "build", "ci": "CI/CD", "docs": "documentation", "feat": "enhancement", "fix": "bug", "perf": "performance", "refactor": "refactor", "style": "style", "test": "test", "feat!": "enhancement breaking change"}' | ||
# Use a personal access token (GITHUB_TOKEN) stored in GitHub secrets for authentication | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
add_label: 'true' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
Check notice Code scanning / Checkov (reported by Codacy) Ensure top-level permissions are not set to write-all Note
Ensure top-level permissions are not set to write-all
|
||
|
||
# This GitHub Actions workflow checks that all commits in a pull request (PR) have a "Signed-off-by" line to ensure Developer Certificate of Origin (DCO) compliance. | ||
|
||
name: DCO | ||
|
||
# Trigger the workflow on pull request events | ||
on: [pull_request] | ||
|
||
jobs: | ||
dco: | ||
# Define the runner environment | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
# Step to check out the repository | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Fetch all history for all branches to ensure complete commit history is available | ||
|
||
# Step to check each commit in the pull request for a Signed-off-by line | ||
- name: Check for DCO Sign-off | ||
Check notice Code scanning / Checkov (reported by Codacy) Ensure run commands are not vulnerable to shell injection Note
Ensure run commands are not vulnerable to shell injection
|
||
run: | | ||
Check failure Code scanning / Semgrep (reported by Codacy) Using variable interpolation ${{...}} with github context data in a run: step could allow an attacker to inject their own code into the runner. Error
Using variable interpolation ${...} with github context data in a run: step could allow an attacker to inject their own code into the runner.
|
||
# Get the base branch and head branch of the pull request | ||
base_branch=${{ github.event.pull_request.base.ref }} | ||
head_branch=${{ github.event.pull_request.head.ref }} | ||
# Get the list of commit hashes between the head branch and base branch | ||
commits=$(git log --pretty=format:%H origin/${head_branch}..origin/${base_branch}) | ||
non_compliant_commits="" | ||
# Loop through each commit and check for the Signed-off-by line | ||
for commit in $commits; do | ||
# Check if the commit message contains the Signed-off-by line | ||
if ! git show --quiet --format=%B $commit | grep -q "^Signed-off-by: "; then | ||
# If not, add the commit hash to the list of non-compliant commits | ||
non_compliant_commits="$non_compliant_commits $commit" | ||
fi | ||
done | ||
# If there are any non-compliant commits, output their hashes and fail the job | ||
if [ -n "$non_compliant_commits" ]; then | ||
echo "The following commits do not have a Signed-off-by line:" | ||
for commit in $non_compliant_commits; do | ||
echo "- $commit" | ||
done | ||
exit 1 | ||
fi | ||
shell: bash |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# Dependency Review Action | ||
# | ||
# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. | ||
# | ||
# Source repository: https://github.com/actions/dependency-review-action | ||
# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement | ||
name: 'Dependency Review' | ||
on: [pull_request] | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
dependency-review: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: 'Checkout Repository' | ||
uses: actions/checkout@v4 | ||
- name: 'Dependency Review' | ||
uses: actions/dependency-review-action@v4 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
Check notice Code scanning / Checkov (reported by Codacy) Ensure top-level permissions are not set to write-all Note
Ensure top-level permissions are not set to write-all
|
||
|
||
# This GitHub Actions workflow checks that all commits in a pull request (PR) have been verified with GPG signatures. | ||
|
||
name: GPG Verify | ||
|
||
on: [pull_request] # Trigger this workflow on pull request events | ||
|
||
jobs: | ||
gpg-verify: | ||
runs-on: ubuntu-latest # Use the latest Ubuntu runner for the job | ||
steps: | ||
- uses: actions/checkout@v4 # Checkout the repository code using the actions/checkout action | ||
with: | ||
fetch-depth: 0 # Fetch all history for all branches to ensure we have the full commit history | ||
|
||
- name: Check GPG verification status # Step to check each commit for GPG signature verification | ||
Check notice Code scanning / Checkov (reported by Codacy) Suspicious use of curl with secrets Note
Suspicious use of curl with secrets
Check notice Code scanning / Checkov (reported by Codacy) Ensure run commands are not vulnerable to shell injection Note
Ensure run commands are not vulnerable to shell injection
|
||
run: | | ||
Check failure Code scanning / Semgrep (reported by Codacy) Using variable interpolation ${{...}} with github context data in a run: step could allow an attacker to inject their own code into the runner. Error
Using variable interpolation ${...} with github context data in a run: step could allow an attacker to inject their own code into the runner.
|
||
# Get the list of commits in the pull request | ||
commits=$(git log --pretty=format:%H origin/${{ github.event.pull_request.head.ref }}..origin/${{ github.event.pull_request.base.ref }}) | ||
# Check the GPG verification status of each commit | ||
for commit in $commits; do | ||
status=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | ||
https://api.github.com/repos/${{ github.repository }}/commits/$commit/check-runs \ | ||
| jq -r '.check_runs[] | select(.name == "GPG verify") | .conclusion') | ||
# If the GPG verification status is not successful, list the commit and exit with a non-zero status | ||
if [[ "$status" != "success" ]]; then | ||
echo "GPG signature verification failed for commit $commit." | ||
exit 1 | ||
fi | ||
done |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
Check notice Code scanning / Checkov (reported by Codacy) Ensure top-level permissions are not set to write-all Note
Ensure top-level permissions are not set to write-all
|
||
|
||
name: Milestone Workflow | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
milestoneId: | ||
Check notice Code scanning / Checkov (reported by Codacy) The build output cannot be affected by user parameters other than the build entry point and the top-level source location. GitHub Actions workflow_dispatch inputs MUST be empty. Note
The build output cannot be affected by user parameters other than the build entry point and the top-level source location. GitHub Actions workflow_dispatch inputs MUST be empty.
|
||
description: 'Milestone ID' | ||
required: true | ||
default: '1' | ||
|
||
jobs: | ||
close_milestone: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Setup Node.js (.npmrc) | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: 16.x | ||
registry-url: https://npm.pkg.github.com/ | ||
# Defaults to the user or organization that owns the workflow file | ||
scope: '@frmscoe' | ||
|
||
- name: Install dependencies | ||
run: npm ci | ||
env: | ||
GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | ||
|
||
- name: Close Milestone | ||
run: | | ||
Check failure Code scanning / Semgrep (reported by Codacy) Using variable interpolation ${{...}} with github context data in a run: step could allow an attacker to inject their own code into the runner. Error
Using variable interpolation ${...} with github context data in a run: step could allow an attacker to inject their own code into the runner.
|
||
ACCESS_TOKEN="${{ secrets.GITHUB_TOKEN }}" | ||
MILESTONE_NUMBER=${{ github.event.inputs.milestoneId }} | ||
API_URL="https://api.github.com" | ||
curl -X PATCH \ | ||
-H "Accept: application/vnd.github.v3+json" \ | ||
-H "Authorization: Bearer $ACCESS_TOKEN" \ | ||
-d '{"state": "closed"}' \ | ||
$API_URL/repos/${{ github.repository }}/milestones/$MILESTONE_NUMBER | ||
- name: Trigger Release Workflow | ||
uses: peter-evans/repository-dispatch@v1 | ||
Check warning Code scanning / Semgrep (reported by Codacy) An action sourced from a third-party repository on GitHub is not pinned to a full length commit SHA. Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release. Warning
An action sourced from a third-party repository on GitHub is not pinned to a full length commit SHA. Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release.
|
||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
repository: ${{ github.repository }} | ||
event-type: release | ||
client-payload: '{"milestone_number": "${{ github.event.inputs.milestoneId }}"}' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
Check notice Code scanning / Checkov (reported by Codacy) Ensure top-level permissions are not set to write-all Note
Ensure top-level permissions are not set to write-all
|
||
|
||
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node | ||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs | ||
|
||
name: Node.js CI | ||
|
||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
NPM_SCOPE: "@frmscoe" | ||
NPM_REGISTRY: "https://npm.pkg.github.com/" | ||
NODE_ENV: 'test' | ||
STARTUP_TYPE: 'nats' | ||
|
||
on: | ||
push: | ||
branches: [ "dev", "main" ] | ||
pull_request: | ||
branches: [ "dev", "main" ] | ||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
name: run build | ||
strategy: | ||
matrix: | ||
node-version: [16, 20] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Use Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
cache: 'npm' | ||
registry-url: ${{ env.NPM_REGISTRY }} | ||
scope: ${{ env.NPM_SCOPE }} | ||
- name: Install dependencies | ||
run: npm ci | ||
- name: Run build | ||
run: npm run build | ||
|
||
lint: | ||
runs-on: ubuntu-latest | ||
name: check style | ||
strategy: | ||
matrix: | ||
node-version: [20] | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
- name: Use Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
cache: 'npm' | ||
registry-url: ${{ env.NPM_REGISTRY }} | ||
scope: ${{ env.NPM_SCOPE }} | ||
- name: Install dependencies | ||
run: npm ci | ||
- name: Check linting | ||
run: npm run lint | ||
- name: Check formatting | ||
run: npm run lint:prettier | ||
|
||
test: | ||
runs-on: ubuntu-latest | ||
name: check tests | ||
strategy: | ||
matrix: | ||
node-version: [20] | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
- name: Use Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
cache: 'npm' | ||
registry-url: ${{ env.NPM_REGISTRY }} | ||
scope: ${{ env.NPM_SCOPE }} | ||
- name: Install dependencies | ||
run: npm ci | ||
- name: Run tests | ||
run: npm test |