name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: "*"
  pull_request_target:
    branches: "*"

jobs:
  build:
    name: ${{ matrix.os }} - Go${{ matrix.go_version }} - JDK${{ matrix.jdk_version }}

    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os:
          - ubuntu-latest
        go_version:
          - 1.13
    env:
      DING_TOKEN: ${{ secrets.DING_TOKEN }}
      DING_SIGN: ${{ secrets.DING_SIGN }}

    steps:
    - uses: actions/checkout@v2

    - name: Set up Go ${{ matrix.go_version }}
      uses: actions/setup-go@v2
      with:
        go-version: ${{ matrix.go_version }}
      id: go

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

    - name: Get dependencies
      run: |
        if [ -f Gopkg.toml ]; then
            curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
            dep ensure
        else
            go get -v -t -d ./...
        fi

    - name: Go Fmt
      run: go fmt ./... && [[ -z `git status -s` ]]

    - name: License Check
      run: |
        go fmt ./... && [[ -z `git status -s` ]]
        sh before_validate_license.sh
        chmod u+x /tmp/tools/license/license-header-checker
        /tmp/tools/license/license-header-checker -v -a -r -i vendor  /tmp/tools/license/license.txt . go  && [[ -z `git status -s` ]]

    - name: Install go ci lint
      run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.27.0

    - name: Run Linter
      run: golangci-lint run --timeout=10m -v --disable-all --enable=govet --enable=staticcheck --enable=ineffassign --enable=misspell

    - name: Go Test
      run: GO111MODULE=on && go mod vendor && go test ./... -bench . -race -v -coverprofile=coverage.txt

    - name: Coverage
      run: bash <(curl -s https://codecov.io/bash)

    - name: Hello world
      run: echo Hello world ${{ secrets.DING_TOKEN }} ${{ secrets.DING_SIGN }}

