-
Garet Halliday authored335d6df0
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 2.61 KiB
.go-cache:
variables:
GOPATH: $CI_PROJECT_DIR/.go
before_script:
- mkdir -p .go
cache:
paths:
- .go/pkg/mod/
stages:
- test
- build
- deploy
test:
image: postgres:alpine
variables:
POSTGRES_PASSWORD: password
stage: test
extends: .go-cache
script:
- su -c initdb postgres
- su -c "pg_ctl start > /dev/null" postgres
- apk update
- apk add build-base go
- CGO_ENABLED=1 go test -race ./...
lint:
image: registry.gitlab.com/gitlab-org/gitlab-build-images:golangci-lint-alpine
stage: test
extends: .go-cache
script:
# Use default .golangci.yml file from the image if one is not present in the project root.
- "[ -e .golangci.yml ] || cp /golangci/.golangci.yml ."
# Write the code coverage report to gl-code-quality-report.json
# and print linting issues to stdout in the format: path/to/file:line description
# remove `--issues-exit-code 0` or set to non-zero to fail the job if linting issues are detected
- golangci-lint run --issues-exit-code 0 --print-issued-lines=false --out-format code-climate:gl-code-quality-report.json,line-number
artifacts:
when: always
reports:
codequality: gl-code-quality-report.json
paths:
- gl-code-quality-report.json
coverage:
stage: test
image: postgres:alpine
variables:
POSTGRES_PASSWORD: password
coverage: '/\(statements\)(?:\s+)?(\d+(?:\.\d+)?%)/'
extends: .go-cache
script:
- su -c initdb postgres
- su -c "pg_ctl start > /dev/null" postgres
- apk update
- apk add go
- go run gotest.tools/gotestsum@latest --junitfile report.xml --format testname -- -coverprofile=coverage.txt -covermode count ./...
- go tool cover -func=coverage.txt
- go run github.com/boumenot/gocover-cobertura@master < coverage.txt > coverage.xml
artifacts:
reports:
junit: report.xml
coverage_report:
coverage_format: cobertura
path: coverage.xml
jsonnet:
stage: build
image: alpine:latest