name: Tests on: pull_request: branches: - master types: [opened, synchronize] paths-ignore: - 'scripts/**' - '**/*.md' workflow_dispatch: env: GO111MODULE: "on" jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: golangci-lint uses: golangci/golangci-lint-action@v2 with: version: latest test_cover: name: Coverage runs-on: ubuntu-20.04 env: CGO_ENABLED: 0 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Sync VM submodule run: | git submodule sync git submodule update --init - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.17 - name: Restore Go modules from cache uses: actions/cache@v2 with: path: /home/runner/go/pkg/mod key: deps-${{ hashFiles('go.sum') }} - name: Update Go modules run: go mod download -json - name: Write coverage profile run: go test -v ./... -coverprofile=./coverage.txt -covermode=atomic -coverpkg=./pkg...,./cli/... - name: Upload coverage results to Codecov uses: codecov/codecov-action@v1 with: fail_ci_if_error: false path_to_write_report: ./coverage.txt verbose: true tests_ubuntu: name: Ubuntu, Go runs-on: ubuntu-20.04 strategy: matrix: go_versions: [ '1.15', '1.16' ] fail-fast: false steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: '${{ matrix.go_versions }}' - name: Restore Go modules from cache uses: actions/cache@v2 with: path: /home/runner/go/pkg/mod key: deps-${{ hashFiles('go.sum') }} - name: Update Go modules run: go mod download -json - name: Sync VM submodule run: | git submodule sync git submodule update --init - name: Run tests run: go test -v -race ./... tests_win: name: Windows, Go (1.17) runs-on: windows-2019 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.17 - name: Restore Go modules from cache uses: actions/cache@v2 with: path: /home/runner/go/pkg/mod key: deps-${{ hashFiles('go.sum') }} - name: Update Go modules run: go mod download -json - name: Sync VM submodule run: | git submodule sync git submodule update --init - name: Run tests run: go test -v -race ./... build_cli: name: Build CLI runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.17 - name: Restore Go modules from cache uses: actions/cache@v2 with: path: /home/runner/go/pkg/mod key: deps-${{ hashFiles('go.sum') }} - name: Update Go modules run: go mod download -json - name: Build CLI run: make build build_image: needs: build_cli name: Build Docker image runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.17 - name: Restore Go modules from cache uses: actions/cache@v2 with: path: /home/runner/go/pkg/mod key: deps-${{ hashFiles('go.sum') }} - name: Update Go modules run: go mod download -json - name: Build Docker image run: make image