Skip to content

Run Scorecard scanner for security best practices #546

Run Scorecard scanner for security best practices

Run Scorecard scanner for security best practices #546

# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Scorecard analysis
run-name: Run Scorecard scanner for security best practices
# Scorecard (https://github.com/ossf/scorecard) is a repository-scanning tool
# that evaluates a project's security practices. Its use is suggested by
# Google's GitHub team. Scorecard's findings are reported in a repo's scanning
# results page, https://github.com/quantumlib/REPO/security/code-scanning/.
on:
schedule:
# Run weekly on Saturdays.
- cron: '30 9 * * 6'
pull_request:
types: [opened, synchronize]
branches:
- main
# Allow manual invocation.
workflow_dispatch:
concurrency:
# Cancel any previously-started but still active runs on the same branch.
cancel-in-progress: true
group: ${{github.workflow}}-${{github.event.pull_request.number||github.ref}}
# Declare default workflow permissions as read only.
permissions: read-all
jobs:
run-scorecard:
# Skip fork PRs to avoid "Analysis configuration not found" errors.
if: >-
github.repository_owner == 'quantumlib' &&
(github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.fork == false)
name: Scorecard analyzer
runs-on: ubuntu-24.04
permissions:
security-events: write
id-token: write
timeout-minutes: 15
steps:
- name: Check out a copy of the git repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Run Scorecard analysis
# yamllint disable rule:line-length
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
with:
results_file: scorecard-results.sarif
results_format: sarif
publish_results: true
- name: Upload results to code-scanning dashboard
# yamllint disable rule:line-length
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
sarif_file: scorecard-results.sarif
# Scorecard doesn't allow submissions from jobs having steps that use "run:".
# Printing a summary needs to use "run:", so we have to use a separate job.
write-summary:
name: Scorecard results
needs: run-scorecard
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- name: Write the Scorecard report page link to the workflow summary
run: |
repo="${{github.repository}}"
url="https://scorecard.dev/viewer/?uri=github.com/${repo}"
{
echo -n "The results are available on the OpenSSF Scorecard "
echo "[report page for ${{github.repository}}]($url)."
} >> "$GITHUB_STEP_SUMMARY"