76 lines
1.6 KiB
YAML
76 lines
1.6 KiB
YAML
include:
|
|
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
|
|
|
|
image: golang:1.21.0
|
|
|
|
stages:
|
|
- deps
|
|
- test
|
|
- prepare
|
|
- release
|
|
|
|
run-pre-commit:
|
|
stage: .pre
|
|
image: unbound/pre-commit
|
|
variables:
|
|
PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit
|
|
cache:
|
|
- key:
|
|
files:
|
|
- .pre-commit-config.yaml
|
|
paths:
|
|
- ${PRE_COMMIT_HOME}
|
|
script:
|
|
- pre-commit run --all-files
|
|
|
|
deps:
|
|
stage: deps
|
|
script:
|
|
- go mod download
|
|
|
|
test:
|
|
stage: test
|
|
dependencies:
|
|
- deps
|
|
script:
|
|
- CGO_ENABLED=1 go test -mod=readonly -race -coverprofile=coverage.txt -covermode=atomic -coverpkg=$(go list ./... | tr '\n' , | sed 's/,$//') ./...
|
|
- go tool cover -html=coverage.txt -o coverage.html
|
|
- go tool cover -func=coverage.txt
|
|
- curl -Os https://uploader.codecov.io/latest/linux/codecov
|
|
- chmod +x codecov
|
|
- ./codecov -t ${CODECOV_TOKEN} -R $CI_PROJECT_DIR -C $CI_COMMIT_SHA -r $CI_PROJECT_PATH
|
|
|
|
vulnerabilities:
|
|
stage: test
|
|
image: golang:1.21.0
|
|
script:
|
|
- go install golang.org/x/vuln/cmd/govulncheck@latest
|
|
- govulncheck ./...
|
|
|
|
prepare_release:
|
|
image: node:18
|
|
stage: prepare
|
|
before_script:
|
|
- npm install -g conventional-changelog-cli
|
|
script:
|
|
- conventional-changelog -p conventionalcommits > ./release.description
|
|
artifacts:
|
|
paths:
|
|
- release.description
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
|
|
release:
|
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
stage: release
|
|
needs:
|
|
- job: prepare_release
|
|
artifacts: true
|
|
script:
|
|
- echo "Running release_job for $TAG"
|
|
release:
|
|
tag_name: '$CI_COMMIT_TAG'
|
|
description: ./release.description
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|