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