name: Pull Request CI test

on:
  pull_request:
    branches:
      - master
    paths-ignore:
      - '**.md'
      - '**.yml'
      - 'LICENSE'

jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          submodules: true

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Cache Docker layers
        uses: actions/cache@v2
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Build image
        uses: docker/build-push-action@v2
        with:
          context: .
          platforms: linux/amd64
          load: true
          tags: |
            yyetsbot:latest
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new

      - name: Move cache
        run: |
          rm -rf /tmp/.buildx-cache
          mv /tmp/.buildx-cache-new /tmp/.buildx-cache

      - name: Start MongoDB
        uses: supercharge/mongodb-github-action@1.8.0
        with:
          mongodb-version: "6.0"

      - name: Restore database and run tests
        run: |
          sudo apt update && sudo apt install -y wget
          wget -q https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.6.1.deb
          sudo dpkg -i mongodb-database-tools-ubuntu2204-x86_64-100.6.1.deb
          mongorestore --gzip --archive=assets/ci.gz
          make ci-test

      - name: Install trivy
        run: |
          wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
          echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
          sudo apt-get update
          sudo apt-get install trivy -y

      - name: Scan for CVE
        uses: mathiasvr/command-output@v1
        id: trivy
        with:
          run: |
            trivy image --no-progress --severity "HIGH,CRITICAL" yyetsbot:latest

      - name: Comment on CVE PR
        uses: thollander/actions-comment-pull-request@v2
        with:
          message: |
            ```
            ${{ steps.trivy.outputs.stdout }}
            ```
          comment_tag: cve
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
