diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4fe8113 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,40 @@ +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 + 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 + 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"