Personal_Website/.gitlab-ci.yml

63 lines
1.5 KiB
YAML

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 ./
- 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"