name: CI

on: [push, pull_request]

jobs:
  test:
    name: Go ${{ matrix.go-version }} with Kafka ${{ matrix.kafka-version }} on Ubuntu
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        go-version: [1.12.x, 1.13.x, 1.14.x]
        kafka-version: [2.3.1, 2.4.0]
        platform: [ubuntu-latest]

    env:
      KAFKA_PEERS: localhost:9091,localhost:9092,localhost:9093,localhost:9094,localhost:9095
      TOXIPROXY_ADDR: http://localhost:8474
      KAFKA_INSTALL_ROOT: /home/runner/kafka
      KAFKA_HOSTNAME: localhost
      DEBUG: true
      KAFKA_VERSION: ${{ matrix.kafka-version }}
      KAFKA_SCALA_VERSION: 2.12

    steps:
    - uses: actions/checkout@v1

    - name: Setup Go
      uses: actions/setup-go@v1
      with:
        go-version: ${{ matrix.go-version }}

    - uses: actions/cache@v1
      with:
        path: ~/go/pkg/mod
        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          ${{ runner.os }}-go-

    # See https://github.com/actions/setup-go/issues/14
    - name: Setup env
      run: |
        echo "::set-env name=GOPATH::$(go env GOPATH)"
        echo "::add-path::$(go env GOPATH)/bin"
      shell: bash

    - name: Install dependencies
      run: |
        curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.23.6
        export REPOSITORY_ROOT=${GITHUB_WORKSPACE}
        vagrant/install_cluster.sh
        vagrant/boot_cluster.sh
        vagrant/create_topics.sh
        vagrant/run_java_producer.sh

    - name: Run test suite
      run: make test

    - name: Run linter
      run: make lint

    - name: Teardown
      run: vagrant/halt_cluster.sh