-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: refine and add new workflows (#46)
* feat: refine and add new workflows * Delete .github/workflows/bench.yml * Delete .github/workflows/npm-publish.yml
- Loading branch information
Showing
4 changed files
with
190 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# 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 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 | ||
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' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# 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 | ||
run: | | ||
# 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# 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 | ||
run: | | ||
# 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# 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. | ||
|
||
name: Scorecard supply-chain security | ||
on: | ||
# For Branch-Protection check. Only the default branch is supported. See | ||
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection | ||
branch_protection_rule: | ||
# To guarantee Maintained check is occasionally updated. See | ||
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained | ||
schedule: | ||
- cron: '35 22 * * 1' | ||
push: | ||
branches: [ "dev" ] | ||
|
||
# Declare default permissions as read only. | ||
permissions: read-all | ||
|
||
jobs: | ||
analysis: | ||
name: Scorecard analysis | ||
runs-on: ubuntu-latest | ||
permissions: | ||
# Needed to upload the results to code-scanning dashboard. | ||
security-events: write | ||
# Needed to publish results and get a badge (see publish_results below). | ||
id-token: write | ||
# Uncomment the permissions below if installing in a private repository. | ||
# contents: read | ||
# actions: read | ||
|
||
steps: | ||
- name: "Checkout code" | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
with: | ||
persist-credentials: false | ||
|
||
- name: "Run analysis" | ||
uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 | ||
with: | ||
results_file: results.sarif | ||
results_format: sarif | ||
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if: | ||
# - you want to enable the Branch-Protection check on a *public* repository, or | ||
# - you are installing Scorecard on a *private* repository | ||
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional. | ||
# repo_token: ${{ secrets.SCORECARD_TOKEN }} | ||
|
||
# Public repositories: | ||
# - Publish results to OpenSSF REST API for easy access by consumers | ||
# - Allows the repository to include the Scorecard badge. | ||
# - See https://github.com/ossf/scorecard-action#publishing-results. | ||
# For private repositories: | ||
# - `publish_results` will always be set to `false`, regardless | ||
# of the value entered here. | ||
publish_results: true | ||
|
||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF | ||
# format to the repository Actions tab. | ||
- name: "Upload artifact" | ||
uses: actions/upload-artifact@97a0fba1372883ab732affbe8f94b823f91727db # v3.pre.node20 | ||
with: | ||
name: SARIF file | ||
path: results.sarif | ||
retention-days: 5 | ||
|
||
# Upload the results to GitHub's code scanning dashboard (optional). | ||
# Commenting out will disable upload of results to your repo's Code Scanning dashboard | ||
- name: "Upload to code-scanning" | ||
uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 | ||
with: | ||
sarif_file: results.sarif |