51 lines
1.3 KiB
YAML
51 lines
1.3 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"
|
|
artifacts:
|
|
paths:
|
|
- "~/.docker/"
|
|
|
|
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
|
|
dependencies:
|
|
- auth-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:
|
|
- auth-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"
|