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