name: Third party deps scan
on:
  # Only the default branch is supported.
  branch_protection_rule:
  push:
    branches: [ main ]
  pull_request:
    types: [ labeled ]

# Declare default permissions as read only.
permissions: read-all

jobs:
  vuln-scan:
    name: Vulnerability scanning
    runs-on: ubuntu-20.04
    # run on flutter/engine push to main or PRs with 'vulnerability patch' label 
    if: ${{  github.repository == 'flutter/engine' && (github.event_name == 'push' || github.event.label.name == 'vulnerability scan') }}
    permissions:
      # Needed to upload the SARIF results to code-scanning dashboard.
      security-events: write
      actions: read
      contents: read
      # Needed to access OIDC token.
      id-token: write
    steps:
      - name: "Checkout code"
        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9
        with:
          persist-credentials: false
      - name: "setup python"
        uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
        with:
          python-version: '3.7.7' # install the python version needed
      - name: "extract and flatten deps"
        run: python ci/deps_parser.py
      - name: "scan deps for vulnerabilities"
        run: python ci/scan_flattened_deps.py
      # Upload the results as artifacts.
      - name: "Upload artifact"
        uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
        with:
          name: SARIF file
          path: osvReport.sarif
          retention-days: 5
      # Upload the results to GitHub's code scanning dashboard.
      - name: "Upload to security tab"
        uses: github/codeql-action/upload-sarif@cdcdbb579706841c47f7063dda365e292e5cad7a
        with:
          sarif_file: osvReport.sarif
