Skip to content

Fix go coverage collection #253

Fix go coverage collection

Fix go coverage collection #253

Workflow file for this run

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