name: Fetch, validate and report SNP report data.
on:
  workflow_dispatch:
  schedule:
    - cron: "0 14 * * 0"

jobs:
  build-snp-reporter:
    name: "Build SNP-reporter container"
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Set up Go
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: 1.19.4

      - name: Build and upload azure SNP reporter container image
        id: build-and-upload
        uses: ./.github/actions/build_micro_service
        with:
          name: azure-snp-reporter
          dockerfile: ./hack/azure-snp-report-verify/Dockerfile
          githubToken: ${{ secrets.GITHUB_TOKEN }}

  fetch-snp-report:
    needs: build-snp-reporter
    name: "Fetch SNP report"
    runs-on: [self-hosted, azure-cvm]
    env:
      SHELL: /bin/bash
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Fetch SNP report
        uses: ./.github/actions/azure_snp_reporter
        with:
          outputPath: ${{ github.workspace }}/maa-report.jwt

      - name: Upload report JWT
        uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3.1.1
        with:
          name: maa-report.jwt
          path: "${{ github.workspace }}/maa-report.jwt"

  validate-snp-report:
    needs: fetch-snp-report
    name: "Validate SNP report"
    runs-on: ubuntu-22.04
    env:
      SHELL: /bin/bash
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Set up Go
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: 1.19.4

      - name: Download report JWT
        uses: actions/download-artifact@9782bd6a9848b53b110e712e20e42d89988822b7 # tag=v3.0.1
        with:
          name: "maa-report.jwt"
          path: "."

      - name: Verify report
        shell: bash
        run: go run ./hack/azure-snp-report-verify/verify.go "$(cat ./maa-report.jwt)"
