# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json

name: Nancy

permissions: {}

on:
  workflow_dispatch:
  schedule:
    - cron: '23 2 * * *' # Every day at 02:23 UTC

    


jobs:
  nancy-scan:
    runs-on: ubuntu-latest
    name: nancy-scan
    steps:
      - name: Checkout
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - name: Setup caches
        uses: ./.github/actions/setup-caches
        timeout-minutes: 5
        continue-on-error: true
      - name: Setup build env
        uses: ./.github/actions/setup-build-env
        timeout-minutes: 10
      - name: WriteGoList
        run: go list -json -deps ./... > go.list
      - name: Nancy SAST Scan
        uses: sonatype-nexus-community/nancy-github-action@726e338312e68ecdd4b4195765f174d3b3ce1533 # v1.0.3
        with:
          output_format: json
          output-file: nancy-results.json
      - name: Parse scan results
        id: parse-results
        run: |
          if [ -s nancy-results.json ]; then
            echo "Vulnerabilities found, creating issue"
            echo "results=found" >> $GITHUB_OUTPUT
          else
            echo "No vulnerabilities found, halting"
            echo "results=nothing" >> $GITHUB_OUTPUT
          fi
      - name: Upload vulnerability scan report
        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        if: steps.parse-results.outputs.results == 'found'
        with:
          name: nancy-results.json
          path: nancy-results.json
          if-no-files-found: error

  open-issue:
    runs-on: ubuntu-latest
    if: needs.nancy-scan.result == 'success'
    needs: nancy-scan
    permissions:
      issues: write
    steps:
      - name: Checkout
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - name: Download scan results
        uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
        with:
          name: nancy-results.json
      - name: Set scan output
        id: set-scan-output
        run: echo "results=$(cat nancy-results.json | jq -c)" >> $GITHUB_OUTPUT
      - uses: JasonEtco/create-an-issue@1b14a70e4d8dc185e5cc76d3bec9eab20257b2c5 # v2.9.2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          RESULTS: ${{ steps.set-scan-output.outputs.results }}
        with:
          filename: .github/ISSUE_TEMPLATE/VULN-TEMPLATE.md