Run go test -v only if -v flag is set #259
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unit tests | |
on: | |
push: | |
branches: | |
- 'main' | |
- 'v*' | |
pull_request: | |
branches: | |
- 'main' | |
jobs: | |
check-go: | |
name: Check Go code | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Golang | |
uses: actions/setup-go@v1 | |
with: | |
go-version: '1.21' | |
- name: Download all Go modules | |
run: | | |
go mod download | |
- name: Check for tidyness of go.mod and go.sum | |
run: | | |
go mod tidy | |
git diff --exit-code -- . | |
build-go: | |
name: Build & cache Go code | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Golang | |
uses: actions/setup-go@v1 | |
with: | |
go-version: '1.21' | |
- name: Restore go build cache | |
uses: actions/cache@v1 | |
with: | |
path: ~/.cache/go-build | |
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} | |
- name: Download all Go modules | |
run: | | |
go mod download | |
lint-go: | |
name: Lint Go code | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Run golangci-lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
args: --timeout 5m | |
test-go: | |
name: Run unit tests | |
runs-on: ubuntu-latest | |
needs: | |
- build-go | |
steps: | |
- name: Create checkout directory | |
run: mkdir -p ~/go/src/github.com/gitpod-io | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Create symlink in GOPATH | |
run: ln -s $(pwd) ~/go/src/github.com/gitpod-io/leeway | |
- name: Setup Golang | |
uses: actions/setup-go@v1 | |
with: | |
go-version: '1.21' | |
- name: Restore go build cache | |
uses: actions/cache@v1 | |
with: | |
path: ~/.cache/go-build | |
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} | |
- name: Download and vendor all required packages | |
run: | | |
go mod download | |
- name: Run all unit tests | |
run: go test -v -coverprofile=coverage.out $(go list ./...) | |
- name: Generate code coverage artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: code-coverage | |
path: coverage.out | |
test-go-race: | |
name: Run unit tests with -race | |
runs-on: ubuntu-latest | |
needs: | |
- build-go | |
steps: | |
- name: Create checkout directory | |
run: mkdir -p ~/go/src/github.com/gitpod-io | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Create symlink in GOPATH | |
run: ln -s $(pwd) ~/go/src/github.com/gitpod-io/leeway | |
- name: Setup Golang | |
uses: actions/setup-go@v1 | |
with: | |
go-version: '1.21' | |
- name: Restore go build cache | |
uses: actions/cache@v1 | |
with: | |
path: ~/.cache/go-build | |
key: ${{ runner.os }}-go-build-v1-${{ github.run_id }} | |
- name: Download and vendor all required packages | |
run: | | |
go mod download | |
- name: Run all unit tests | |
run: go test -race -v $(go list ./...) | |
analyze: | |
name: Process & analyze test artifacts | |
runs-on: ubuntu-latest | |
needs: | |
- test-go | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 10 | |
- name: Create test-results directory | |
run: | | |
mkdir -p test-results | |
- name: Get code coverage artifiact | |
uses: actions/download-artifact@v2 | |
with: | |
name: code-coverage | |
- name: Upload code coverage information to codecov.io | |
uses: codecov/codecov-action@v1 | |
with: | |
file: coverage.out |