name: Continuous Integration

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source code
        uses: actions/checkout@v2
      - name: Run linters
        uses: golangci/golangci-lint-action@v2
        with:
          version: v1.51.2

  tests:
    needs:
      - Lint
    name: Tests
    # TODO: once arm64 actions are available, also run the tests on this architecture.
    # See: https://github.com/actions/virtual-environments/issues/2552#issuecomment-771478000.
    runs-on: ubuntu-latest
    steps:
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Checkout source code
        uses: actions/checkout@v2
      - name: Build testing environment
        run: make build build-tests
      - name: Run tests
        run: |
          make tests-once
          bash <(curl -s https://codecov.io/bash)