users/.gitlab-ci.yml
GnomeZworc fc3ef55c80
v1.1.0: ci: add coverage and test report
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2024-03-16 23:46:45 +01:00

116 lines
No EOL
2.8 KiB
YAML

variables:
IMAGE_VERSION: $CI_COMMIT_SHORT_SHA
IMAGE_TYPE: users
LATEST_NAME: main
GOLANGCI_LINT_VERSION: 'v1.56.2'
default:
image: debian:11
services:
- name: docker:24.0.7-dind
alias: docker
stages:
- check
- build
- test
- release
- release-latest
before_script:
- id
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker login -u gnomezworc -p $DOCKERHUB_TOKEN
lint:
image: golangci/golangci-lint:$GOLANGCI_LINT_VERSION
stage: check
before_script: []
services: []
script:
- golangci-lint run --issues-exit-code 0 --out-format code-climate | tee gl-code-quality-report.json
artifacts:
reports:
codequality: gl-code-quality-report.json
paths:
- gl-code-quality-report.json
build:
stage: build
image: docker:23.0.3-cli
artifacts:
paths:
- $IMAGE_TYPE-$IMAGE_VERSION-release.tar.gz
variables:
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: /certs/client
DOCKER_PATH: '.'
script:
- docker build --pull -t $CI_REGISTRY_IMAGE:$IMAGE_VERSION-release --target release $DOCKER_PATH
- docker save $CI_REGISTRY_IMAGE:$IMAGE_VERSION-release | gzip > $IMAGE_TYPE-$IMAGE_VERSION-release.tar.gz
needs:
- lint
integration_test:
stage: test
image: golang:1.21-alpine
variables:
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: /certs/client
DOCKER_HOST: tcp://docker:2376/
DOCKER_URL: docker
before_script:
- apk update && apk add --no-cache docker-cli
- apk add bash
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker login -u gnomezworc -p $DOCKERHUB_TOKEN
script:
- bash -ex ./scripts/prepar_test.sh
- . ./config/test.src
- go test -v ./cmd/
- go install gotest.tools/gotestsum@latest
- gotestsum --junitfile report.xml --format testname
needs:
- build
release-latest:
stage: release-latest
image: docker:23.0.3-cli
variables:
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: /certs/client
script:
- docker load --input $IMAGE_TYPE-$IMAGE_VERSION-release.tar.gz
- docker images
- docker tag $CI_REGISTRY_IMAGE:$IMAGE_VERSION-release $CI_REGISTRY_IMAGE:latest
- docker push $CI_REGISTRY_IMAGE:latest
dependencies:
- build
rules:
- if: $CI_COMMIT_BRANCH == $LATEST_NAME
needs:
- build
- integration_test
release-front:
stage: release
image: docker:23.0.3-cli
variables:
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: /certs/client
script:
- docker load --input $IMAGE_TYPE-$IMAGE_VERSION-release.tar.gz
- docker images
- docker tag $CI_REGISTRY_IMAGE:$IMAGE_VERSION-release $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
dependencies:
- build
only:
refs:
- tags
needs:
- build
- integration_test