users/.gitlab-ci.yml
GnomeZworc 5cd2f11306
v1.0.1: ci: fix ci in back
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2024-03-16 22:34:52 +01:00

113 lines
No EOL
2.7 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: []
script:
- golangci-lint run --issues-exit-code 1 --print-issued-lines=false --out-format code-climate:gl-code-quality-report.json,line-number
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/
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