name: CI

on:
  push:
    branches: [master, develop, "1.5", "3.0"]
  pull_request:
    branches: "*"

jobs:
  build:
    name: ${{ matrix.os }} - Go ${{ matrix.go_version }}
    runs-on: ${{ matrix.os }}
    strategy:
      # If you want to matrix build , you can append the following list.
      matrix:
        go_version:
          - 1.15
        os:
          - ubuntu-latest

    env:
      DING_TOKEN: ${{ secrets.DING_TOKEN }}
      DING_SIGN: ${{ secrets.DING_SIGN }}

    steps:

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

    - name: Check out code into the Go module directory
      uses: actions/checkout@v2

    - name: Cache dependencies
      uses: actions/cache@v2.1.6
      with:
        # Cache
        path: ~/go/pkg/mod
        # Cache key
        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
        # An ordered list of keys to use for restoring the cache if no cache hit occurred for key
        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: gofmt
      run: |
        go fmt ./... && git status && [[ -z `git status -s` ]]
        # diff -u <(echo -n) <(gofmt -d -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.41.1

    - name: Run Linter
      run: golangci-lint run --timeout=10m -v

    - name: Verify
      run: |
        make verify

    # This step only runs when the event type is a pull_request
    - name: Integrate Test
      if: ${{ github.event_name == 'pull_request' }}
      run: |
        chmod +x integrate_test.sh && [[ -n "${{github.event.pull_request.head.repo.full_name}}" ]] && [[ -n "${{github.event.pull_request.head.sha}}" ]] && [[ -n "${{github.base_ref}}" ]] && ./integrate_test.sh ${{github.event.pull_request.head.repo.full_name}} ${{github.event.pull_request.head.sha}} ${{github.base_ref}}

    # This step only runs when the event type is a push
    - name: Integrate Test
      if: ${{ github.event_name == 'push' }}
      run: |
        chmod +x integrate_test.sh && ./integrate_test.sh $GITHUB_REPOSITORY $GITHUB_SHA $GITHUB_BASE_REF

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

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