Skip to main content

    Upload Semgrep CI findings to GitHub Advanced Security Dashboard

    This document shows an sample job configuration that uploads your Semgrep findings to GitHub Advanced Security Dashboard. See GitHub Actions for information on adding a Semgrep configuration file to your GitHub Actions pipeline.

    # Name of this GitHub Actions workflow.
    name: Semgrep

    on:
    # Scan changed files in PRs (diff-aware scanning):
    pull_request: {}
    # Scan on-demand through GitHub Actions interface:
    workflow_dispatch: {}
    # Scan mainline branches and report all findings:
    push:
    branches: ["master", "main"]
    # Schedule the CI job (this method uses cron syntax):
    schedule:
    - cron: '20 17 * * *' # Sets Semgrep to scan every day at 17:20 UTC.
    # It is recommended to change the schedule to a random time.

    permissions:
    # This permission is required when uploading sarifs to any repository at GitHub
    security-events: write
    # These permissions are only required when uploading sarifs to private and internal repositories at GitHub
    contents: read
    actions: read

    jobs:
    semgrep:
    # User definable name of this GitHub Actions job.
    name: semgrep/ci
    # If you are self-hosting, change the following `runs-on` value:
    runs-on: ubuntu-latest

    container:
    # A Docker image with Semgrep installed. Do not change this.
    image: semgrep/semgrep

    # Skip any PR created by dependabot to avoid permission issues:
    if: (github.actor != 'dependabot[bot]')

    steps:
    # Fetch project source with GitHub Actions Checkout. Use either v3 or v4.
    - uses: actions/checkout@v4
    # Run the "semgrep ci" command on the command line of the docker image.
    - run: semgrep ci --sarif > semgrep.sarif
    env:
    # Connect to Semgrep AppSec Platform through your SEMGREP_APP_TOKEN.
    # Generate a token from Semgrep AppSec Platform > Settings
    # and add it to your GitHub secrets.
    SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}

    - name: Upload SARIF file for GitHub Advanced Security Dashboard
    uses: github/codeql-action/upload-sarif@v3
    with:
    sarif_file: semgrep.sarif
    if: always()

    Not finding what you need in this doc? Ask questions in our Community Slack group, or see Support for other ways to get help.