name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:

  build:
    name: Console CI
    runs-on: ubuntu-18.04
    timeout-minutes: 5
    steps:

    - name: Set up Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.16.x
      id: go

    - name: Setup Go binary path
      shell: bash
      run: |
        echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
        echo "${{ github.workspace }}/bin" >> $GITHUB_PATH

    - name: Check out code
      uses: actions/checkout@v2
      with:
        path: src/github.com/containerd/console
        fetch-depth: 25

    - name: Checkout project
      uses: actions/checkout@v2
      with:
        repository: containerd/project
        path: src/github.com/containerd/project

    - name: Install dependencies
      env:
        GO111MODULE: off
      run: |
        go get -u github.com/vbatts/git-validation
        go get -u github.com/kunalkushwaha/ltag
        GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.23.8

    - name: Check DCO/whitespace/commit message
      env:
        GITHUB_COMMIT_URL: ${{ github.event.pull_request.commits_url }}
        DCO_VERBOSITY: "-q"
        DCO_RANGE: ""
      working-directory: src/github.com/containerd/console
      run: |
        if [ -z "${GITHUB_COMMIT_URL}" ]; then
          DCO_RANGE=$(jq -r '.before +".."+ .after' ${GITHUB_EVENT_PATH})
        else
          DCO_RANGE=$(curl ${GITHUB_COMMIT_URL} | jq -r '.[0].parents[0].sha +".."+ .[-1].sha')
        fi
        ../project/script/validate/dco

    - name: Check file headers
      run: ../project/script/validate/fileheader ../project/
      working-directory: src/github.com/containerd/console

    - name: Go Linting
      run: GOGC=75 golangci-lint run
      working-directory: src/github.com/containerd/console

    - name: Build & Test
      working-directory: src/github.com/containerd/console
      run: |
        go test -race
        GOOS=openbsd go build
        GOOS=windows go build
        GOOS=solaris go build
