users/.gitlab-ci.yml
GnomeZworc 92c62aa993
v1.0.0: ci: add latest push
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2024-03-15 18:09:31 +01:00

98 lines
No EOL
2.3 KiB
YAML

variables:
IMAGE_VERSION: $CI_COMMIT_SHORT_SHA
IMAGE_TYPE: users
LATEST_NAME: main
default:
image: debian:11
services:
- name: docker:24.0.7-dind
alias: docker
stages:
- 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
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
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:
IMAGE_TYPE: front
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