stages: - build - publish - deploy build-job: stage: build image: docker:stable tags: - docker script: - docker login --username "$REGISTRY_USER" --password "$REGISTRY_PASSWORD" "$REGISTRY_BASE_URL" - docker -H unix:///var/run/docker.sock image build -t "$REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_SHORT_SHA" ./ artifacts: paths: - ~/.docker/ publish-job: stage: publish image: docker:stable dependencies: - build-job tags: - docker script: - docker -H unix:///var/run/docker.sock image push "$REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_SHORT_SHA" deploy-job: stage: deploy when: manual image: google/cloud-sdk dependencies: - build-job script: - export KUBECONFIG="$KUBE_AUTH" - cp "$ENV_PRODUCTION" "./build/.env.production" - cp "$MYSQL_ENV" "./build/mysql-secret.env" - cp "~/.docker/config.json" "./build/.dockerconfigjson" - cd "./build" - kubectl apply -k ./ - echo "Waiting for deployment..." - sleep 30 - WEBSITE_POD=$(kubectl get pod -l "$KUBE_POD_LABELS" -n "$KUBE_NAMESPACE" -o jsonpath="{.items[0].metadata.name}") - kubectl delete -n "$KUBE_NAMESPACE" pod "$WEBSITE_POD"