name: build

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  linux-test:
    name: Test
    strategy:
      matrix:
        platform: [ubuntu-latest]
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Install packages
        run: |
          sudo apt-get update
          sudo apt-get install sqlite3

      - name: Install aws-cli
        uses: isbang/setup-awscli@v0.1.0

      - name: Check out source code
        uses: actions/checkout@v3

      - name: Set up Go on ${{ matrix.platform }}
        uses: actions/setup-go@v3
        with:
          go-version-file: go.mod

      - name: Decrypt secrets
        run: gpg --quiet --batch --yes --decrypt --passphrase="$GCP_CLIENT_SECRETS_PASSPHRASE" --output $GITHUB_WORKSPACE/client_secrets.json $GITHUB_WORKSPACE/client_secrets.json.gpg
        if: github.ref == 'refs/heads/main'
        env:
          GCP_CLIENT_SECRETS_PASSPHRASE: ${{ secrets.GCP_CLIENT_SECRETS_PASSPHRASE }}

      - name: Start databases
        run: |
          docker-compose up -d
          sleep 20s

      - name: Run lint
        uses: reviewdog/action-golangci-lint@v2
        with:
          go_version_file: go.mod
          reporter: github-pr-check

      - name: Run tests
        run: make ci
        env:
          DEBUG: "true"

      - name: Run BigQuery integration
        run: make test_bigquery
        if: github.ref == 'refs/heads/main'

      - name: Run install script (aka use)
        run: sh use

      - name: Run Trivy vulnerability scanner in repo mode
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: 'fs'

      - name: Run octocov
        uses: k1LoW/octocov-action@v0
        env:
          DEBUG: true
  windows-test:
    name: Test
    strategy:
      matrix:
        platform: [windows-2019]
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Use LF
        run: |
          git config --global core.autocrlf false
          git config --global core.eol lf

      - name: Install packages
        run: |
          choco install sqlite

      - name: Install aws-cli
        uses: isbang/setup-awscli@v0.1.0

      - name: Check out source code
        uses: actions/checkout@v3

      - name: Set up Go on ${{ matrix.platform }}
        uses: actions/setup-go@v3
        with:
          go-version-file: go.mod

      - name: Run tests
        run: |
          make ci_windows
        shell: bash
        env:
          DEBUG: "true"
