14d3733bf5
Changes the golang image used in the build and check stages from a generic image to the amd64 variant. This ensures better compatibility with the tools and libraries being used in the pipeline.
84 lines
2.1 KiB
YAML
84 lines
2.1 KiB
YAML
include:
|
|
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
|
|
- project: unboundsoftware/ci-templates
|
|
file: Release.gitlab-ci.yml
|
|
- project: unboundsoftware/ci-templates
|
|
file: Pre-Commit-Go.gitlab-ci.yml
|
|
|
|
stages:
|
|
- build
|
|
- test
|
|
- deploy-prod
|
|
- release
|
|
|
|
variables:
|
|
UNBOUND_RELEASE_TAG_ONLY: true
|
|
|
|
.buildtools:
|
|
image: buildtool/build-tools:${BUILDTOOLS_VERSION}
|
|
|
|
check:
|
|
stage: .pre
|
|
image: amd64/golang:1.23.6@sha256:c9ea99470c05ab0741496b239028480a072934a7a0286809740b3d77cb3ae011
|
|
script:
|
|
- go install mvdan.cc/gofumpt@latest
|
|
- go install golang.org/x/tools/cmd/goimports@latest
|
|
- go generate ./...
|
|
- git diff --stat --exit-code
|
|
|
|
build:
|
|
extends: .buildtools
|
|
stage: build
|
|
script:
|
|
- build
|
|
- 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
|
|
- push
|
|
|
|
vulnerabilities:
|
|
stage: build
|
|
image: amd64/golang:1.23.6@sha256:c9ea99470c05ab0741496b239028480a072934a7a0286809740b3d77cb3ae011
|
|
script:
|
|
- go install golang.org/x/vuln/cmd/govulncheck@latest
|
|
- govulncheck ./...
|
|
|
|
deploy-prod:
|
|
extends: .buildtools
|
|
stage: deploy-prod
|
|
before_script:
|
|
- echo Deploy to prod
|
|
script:
|
|
- deploy prod
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "main"
|
|
environment:
|
|
name: prod
|
|
|
|
check_release:
|
|
stage: test
|
|
image:
|
|
name: goreleaser/goreleaser:v2.7.0@sha256:41247b711fc423eddcd8395b998b9de5c7d169bfe99e6a474ba35e87896c1343
|
|
entrypoint: [ '' ]
|
|
script: |
|
|
goreleaser check
|
|
goreleaser release --snapshot --clean
|
|
|
|
release:
|
|
stage: release
|
|
needs:
|
|
- unbound_release_prepare_release
|
|
image:
|
|
name: goreleaser/goreleaser:v2.7.0@sha256:41247b711fc423eddcd8395b998b9de5c7d169bfe99e6a474ba35e87896c1343
|
|
entrypoint: [ '' ]
|
|
variables:
|
|
# Disable shallow cloning so that goreleaser can diff between tags to
|
|
# generate a changelog.
|
|
GIT_DEPTH: 0
|
|
GITLAB_TOKEN: $GITLAB_CI_TOKEN
|
|
# Only run this release job for tags, not every commit (for example).
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
script: |
|
|
goreleaser release --clean --release-notes=CHANGES.md
|