Skip to content

Run open-source vulnerabilities (OSV) scanner #8

Run open-source vulnerabilities (OSV) scanner

Run open-source vulnerabilities (OSV) scanner #8

Workflow file for this run

# 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.
# Summary: run the Open Source Vulnerabilities scanner on PRs & weekly.
#
# The OSV scanner is a dependency vulnerability scanner that identifies known
# vulnerabilities in a project's dependencies. It supports C/C++, Python, Java,
# JavaScript, and others. The findings are reported in the repo's code-scanning
# results page, https://github.com/quantumlib/REPO/security/code-scanning/.
# For more OSV scanner examples and options, including how to ignore specific
# vulnerabilities, see https://google.github.io/osv-scanner/github-action/.
name: OSV vulnerabilities scan
run-name: Run open-source vulnerabilities (OSV) scanner
on:
schedule:
# Run weekly on Saturdays.
- cron: '30 10 * * 6'
pull_request:
types: [opened, synchronize]
branches:
- main
- master
# Support merge queues.
merge_group:
types:
- checks_requested
# Allow manual invocation.
workflow_dispatch:
inputs:
debug:
description: 'Run with debugging options'
type: boolean
default: true
# Declare default workflow permissions as read only.
permissions: read-all
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}}
jobs:
osv-scan:
if: github.repository_owner == 'quantumlib'
name: OSV scanner
runs-on: ubuntu-24.04
timeout-minutes: 15
permissions:
# Needed to upload the results to code-scanning dashboard:
security-events: write
env:
# Setting Bash SHELLOPTS here takes effect for all shell commands below.
SHELLOPTS: ${{inputs.debug && 'xtrace' || '' }}
steps:
- name: Check out a copy of the git repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
- name: Check out the target branch
run: |
git checkout ${{github.base_ref || github.ref_name}}
git submodule update --recursive
- name: Run OSV scanner on existing code
# yamllint disable rule:line-length
uses: google/osv-scanner-action/osv-scanner-action@b00f71e051ddddc6e46a193c31c8c0bf283bf9e6 # v2.1.0
continue-on-error: true
with:
scan-args: |-
--include-git-root
--format=json
--output=old-results.json
--recursive
./
- name: Check out current branch
# Use -f in case any changes were made by osv-scanner.
run: |
git checkout -f "$GITHUB_SHA"
git submodule update --recursive
- name: Run OSV scanner on new code
# yamllint disable rule:line-length
uses: google/osv-scanner-action/osv-scanner-action@b00f71e051ddddc6e46a193c31c8c0bf283bf9e6 # v2.1.0
continue-on-error: true
with:
scan-args: |-
--include-git-root
--format=json
--output=new-results.json
--recursive
./
- name: Run the OSV scanner reporter for the job summary page
# yamllint disable rule:line-length
uses: google/osv-scanner-action/osv-reporter-action@b00f71e051ddddc6e46a193c31c8c0bf283bf9e6 # v2.1.0
with:
scan-args: |-
--output=markdown:output.md
--old=old-results.json
--new=new-results.json
--fail-on-vuln=false
- name: Write the results to the job summary page
run: cat output.md >> "$GITHUB_STEP_SUMMARY"
- name: Run the OSV scanner reporter for the code-scanning dashboard
# yamllint disable rule:line-length
uses: google/osv-scanner-action/osv-reporter-action@b00f71e051ddddc6e46a193c31c8c0bf283bf9e6 # v2.1.0
with:
scan-args: |-
--output=osv-results.sarif
--old=old-results.json
--new=new-results.json
--gh-annotations=true
--fail-on-vuln=true
- name: Upload results to the repository's code-scanning results dashboard
id: upload_artifact
# yamllint disable rule:line-length
uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
with:
sarif_file: osv-results.sarif
- if: github.event.inputs.debug == true
name: Upload results as artifacts to the workflow Summary page
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: SARIF file
path: osv-results.sarif
retention-days: 5
- name: Error troubleshooter
if: ${{always() && steps.upload_artifact.outcome == 'failure'}}
run: echo '::error::Artifact upload failed. Check the workflow logs.'