# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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
#
#      http://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: "Scorecards supply-chain security"

on:
  branch_protection_rule:
  schedule:
    - cron: "30 1 * * 6"    # Weekly on Saturdays
  push:
    branches:
      - "main"

permissions: read-all

jobs:

  analysis:

    name: "Scorecards analysis"
    runs-on: ubuntu-latest
    permissions:
      # Needed to upload the results to the code-scanning dashboard.
      security-events: write
      actions: read
      id-token: write # This is required for requesting the JWT
      contents: read  # This is required for actions/checkout

    steps:

      - name: "Checkout code"
        uses: actions/checkout@v6   # 3.1.0
        with:
          persist-credentials: false

      - name: "Run analysis"
        uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a    # 2.4.3
        with:
          results_file: results.sarif
          results_format: sarif
          # A read-only PAT token, which is sufficient for the action to function.
          # The relevant discussion: https://github.com/ossf/scorecard-action/issues/188
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          # Publish the results for public repositories to enable scorecard badges.
          # For more details: https://github.com/ossf/scorecard-action#publishing-results
          publish_results: true

      - name: "Upload artifact"
        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f    # 7.0.0
        with:
          name: SARIF file
          path: results.sarif
          retention-days: 5

      - name: "Upload to code-scanning"
        uses: github/codeql-action/upload-sarif@fd1ca02d0ddf5bf468c79e6ffb6ffb24f0ecba37    # 2.22.11
        with:
          sarif_file: results.sarif
