Merge pull request #80 from gitpod-io/dependabot/go_modules/github.co… #184
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: | |
pull_request: | |
push: | |
branches: | |
- main | |
jobs: | |
check-go: | |
name: Check Go code | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Setup Golang | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.19' | |
- 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@v3 | |
- name: Setup Golang | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.19' | |
- 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@v3 | |
- name: Setup Golang | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.19' | |
- 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 | |
services: | |
# Local registry | |
registr: | |
# Docker Hub image | |
image: registry:2 | |
ports: | |
- 5000:5000 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Setup Golang | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.19' | |
- 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: Build the test runner | |
run: pushd pkg/test/runner; ./build.sh; popd | |
- name: Install the latest buildkit release | |
run: | | |
curl -sSL "https://github.com/moby/buildkit/releases/download/v0.11.2/buildkit-v0.11.2.linux-amd64.tar.gz" | sudo tar -xz -C /usr/local | |
- name: Start buildkit daemon | |
run: | | |
sudo --non-interactive --shell <<END_SUDO | |
install -d -m 0750 -o root -g docker /run/buildkit | |
buildkitd & | |
while ! test -S /run/buildkit/buildkitd.sock; do sleep 0.1; done | |
chgrp docker /run/buildkit/buildkitd.sock | |
END_SUDO | |
- name: Run all unit tests | |
env: | |
BUILDKIT_ADDR: unix:///run/buildkit/buildkitd.sock | |
TARGET_REF: 127.0.0.1:5000 | |
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: Checkout code | |
uses: actions/checkout@v3 | |
- name: Setup Golang | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.19' | |
- 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@v3 | |
with: | |
fetch-depth: 0 | |
- 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 |