name: PR Comment Triggered Trivy Scan

on:
  issue_comment:
    types: [created]

jobs:
  trivy_scan:
    if: github.event.issue.pull_request && github.event.comment.body == '/trivy'
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    env:
      GH_TOKEN: ${{ github.token }}
    steps:
    - name: Checkout PR code
      uses: actions/checkout@v4
      with:
        ref: refs/pull/${{ github.event.issue.number }}/head
    
    - name: Comment Status on PR
      run: |
        gh repo set-default ${{ github.repository }}
        gh pr comment ${{ github.event.issue.number }} -b ":construction: Running Trivy scan on PR :construction: "

    - name: Build K3s Image
      run: |
        make local
        make package-image
        make tag-image-latest

    - name: Run Trivy vulnerability scanner
      uses: aquasecurity/trivy-action@0.24.0
      with:
        image-ref: 'rancher/k3s:latest'
        format: 'table'
        severity: "HIGH,CRITICAL"
        output: "trivy-report.txt"
    
    - name: Add Trivy Report to PR
      run: |
        echo '```' | cat - trivy-report.txt > temp && mv temp trivy-report.txt
        echo '```' >> trivy-report.txt
        gh issue comment ${{ github.event.issue.number }} --edit-last -F trivy-report.txt
    
    - name: Report Failure
      if: ${{ failure() }}
      run: |
        gh issue comment ${{ github.event.issue.number }} --edit-last -b ":x: Trivy scan action failed, check logs :x:"
