From 5611558820b9d3d9c4a111a25d0b181e191a5837 Mon Sep 17 00:00:00 2001 From: Bruno Carlin Date: Fri, 19 Nov 2021 17:18:01 +0100 Subject: [PATCH] Add CI configuration --- .gitlab-ci.yml | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..3245401 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,60 @@ +image: golang:latest + +stages: + - test + - build + - release + +variables: + GOPATH: "${CI_PROJECT_DIR}/.gocache" + GOLANGCI_LINT_CACHE: "${GOPATH}/golangci-lint_cache" + GOCACHE: "${GOPATH}/go-build" + +.cache: &depscache + key: $CI_COMMIT_REF_SLUG + paths: + - $CI_PROJECT_DIR/.gocache + +lint: + stage: test + image: golangci/golangci-lint:latest + script: + - golangci-lint cache status + - golangci-lint run --timeout 5m --out-format junit-xml > lint.junit.xml + cache: + <<: *depscache + policy: pull-push + artifacts: + reports: + junit: lint.junit.xml + +tests: + stage: test + script: + - go install gotest.tools/gotestsum@latest + - gotestsum --junitfile tests.junit.xml -- -coverprofile=coverage.txt -covermode atomic -race ./... + after_script: + - export PATH="$PATH:$GOPATH/bin" + - go install github.com/boumenot/gocover-cobertura@latest + - gocover-cobertura < coverage.txt > coverage.xml + - go tool cover -func=coverage.txt | grep "total:" + coverage: '/total:\s+\(statements\)\s+(\d+.\d+\%)/' + cache: + <<: *depscache + policy: pull-push + artifacts: + reports: + cobertura: coverage.xml + junit: tests.junit.xml + +release: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + rules: + - if: $CI_COMMIT_TAG + script: + - | + release-cli create \ + --name "${CI_COMMIT_TAG}" \ + --tag-name "${CI_COMMIT_TAG}" \ + --milestone "${CI_COMMIT_TAG}"