variables: CI_PROJECT_DIR: "." CI_REGISTRY_IMAGE: hub.ducoterra.net/ducoterra/mysite stages: - build - test - deploy build: only: variables: - $CI_COMMIT_TAG stage: build image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] script: - echo $DEPLOY - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG test: stage: test only: variables: - $CI_COMMIT_TAG image: name: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG entrypoint: [""] script: - python manage.py test deploy_to_test: variables: DEPLOY: test stage: deploy only: variables: - $CI_COMMIT_TAG image: name: debian:10 entrypoint: [""] script: - apt -qq update >> /dev/null && apt -qq install -y curl gettext >> /dev/null - curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl - chmod +x ./kubectl - mkdir /deploy - for f in $(find k8s -regex '.*\.ya*ml'); do envsubst < $f > "/deploy/$(basename $f)"; done - for f in $(find k8s/test -regex '.*\.ya*ml'); do envsubst < $f > "/deploy/$(basename $f)"; done - ./kubectl apply -f /deploy - ./kubectl rollout status deploy $DEPLOY - POD=$(./kubectl get pods --selector=app=$DEPLOY --output=jsonpath='{.items[*].metadata.name}') - ./kubectl exec $POD -- python manage.py migrate deploy_to_prod: variables: DEPLOY: prod stage: deploy only: variables: - $CI_COMMIT_TAG when: manual image: name: debian:10 entrypoint: [""] script: - apt -qq update >> /dev/null && apt -qq install -y curl gettext >> /dev/null - curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl - chmod +x ./kubectl - mkdir /deploy - for f in $(find k8s -regex '.*\.ya*ml'); do envsubst < $f > "/deploy/$(basename $f)"; done - for f in $(find k8s/prod -regex '.*\.ya*ml'); do envsubst < $f > "/deploy/$(basename $f)"; done - ./kubectl apply -f /deploy - ./kubectl rollout status deploy $DEPLOY - POD=$(./kubectl get pods --selector=app=$DEPLOY --output=jsonpath='{.items[*].metadata.name}') - ./kubectl exec $POD -- python manage.py migrate