steps:
  - label: ":golang: build"
    agents:
      queue: "default"
      docker: "*"
    command: "make ci-build"
    plugins:
      - docker-compose#v3.1.0:
          run: build
          config: ./develop/buildkite/docker-compose.yml

  - wait

  - label: ":golang: unit test"
    agents:
      queue: "default"
      docker: "*"
    command: "make unit-test-coverage"
    artifact_paths:
      - ".coverage/*.out"
    plugins:
      - docker-compose#v3.1.0:
          run: unit-test
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration test with cassandra"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-cassandra
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration test with cassandra (ES6)"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-cassandra
          config: ./develop/buildkite/docker-compose-es6.yml

  - label: ":golang: integration xdc test with cassandra"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-xdc-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-xdc-cassandra
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration ndc test with cassandra"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-ndc-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-xdc-cassandra
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration test with mysql"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-mysql
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration xdc test with mysql"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-xdc-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-xdc-mysql
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration ndc test with mysql"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-ndc-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-xdc-mysql
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration test with postgresql"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-postgresql
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration xdc test with postgresql"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-xdc-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-xdc-postgresql
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: integration ndc test with postgresql"
    agents:
      queue: "default"
      docker: "*"
    command: "make integration-test-ndc-coverage"
    artifact_paths:
      - ".coverage/*.out"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-compose#v3.1.0:
          run: integration-test-xdc-postgresql
          config: ./develop/buildkite/docker-compose.yml

  - label: ":golang: fossa"
    agents:
      queue: "default"
      docker: "*"
    command: "make fossa-init fossa-analyze"
    plugins:
      - docker-compose#v3.1.0:
          run: build
          config: ./develop/buildkite/docker-compose.yml

  - wait

  - label: ":golang: coverage-report"
    agents:
      queue: "default"
      docker: "*"
    command: "./develop/buildkite/scripts/coverage-report.sh"
    artifact_paths:
      - ".coverage/summary_coverprofile.out"
      - ".coverage/summary_coverprofile.out.html"
    retry:
      automatic:
        limit: 2
    plugins:
      - docker-compose#v3.1.0:
          run: coverage-report
          config: ./develop/buildkite/docker-compose.yml

  - label: ":docker: build and push master"
    agents:
      queue: "default"
      docker: "*"
    branches: "master"
    command: "./develop/buildkite/scripts/docker-push.sh"
    retry:
      automatic:
        limit: 1
    plugins:
      - docker-login#v2.0.1:
          username: temporaltech
          password-env: DOCKER_LOGIN_PASSWORD
