stages: - auth - build - publish - deploy auth-job: stage: auth image: docker:stable script: - docker login --username "$REGISTRY_USER" --password "$REGISTRY_PASSWORD" "$REGISTRY_BASE_URL" - cp "/root/.docker/config.json" "./build/.dockerconfigjson" artifacts: paths: - build/.dockerconfigjson build-job: stage: build image: docker:stable tags: - docker script: - docker -H unix:///var/run/docker.sock image build -t "$REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_SHORT_SHA" ./ publish-job: stage: publish image: docker:stable needs: - auth-job - build-job dependencies: - auth-job tags: - docker script: - mkdir "/root/.docker/" - cp "./build/.dockerconfigjson" "/root/.docker/config.json" - docker -H unix:///var/run/docker.sock image push "$REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_SHORT_SHA" deploy-job: stage: deploy only: refs: - master when: manual image: google/cloud-sdk needs: - auth-job - publish-job dependencies: - auth-job script: - export KUBECONFIG="$KUBE_AUTH" - cp "$ENV_PRODUCTION" "./build/.env.production" - cp "$MYSQL_ENV" "./build/mysql-secret.env" - cd "./build" - sed -i "s/DOCKER_IMAGE_TAG/${CI_COMMIT_SHORT_SHA}/g" kustomization.yaml - kubectl apply -k ./