--- stages: - build - test - deploy pre-build: image: busybox:latest stage: build script: - | if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then tag="latest" echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'" else tag="$CI_COMMIT_REF_SLUG" echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag" fi - echo "DOCKER_IMAGE=netology-devops-gitlab:${tag}" > docker.env artifacts: reports: dotenv: docker.env docker-build: stage: build variables: DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "" DOCKER_HOST: tcp://localhost:2375/ image: cr.yandex/yc/metadata-token-docker-helper:0.2 services: - docker:19.03.1-dind needs: - pre-build script: - docker build --pull -t "cr.yandex/${YA_DOCKER_REGISTRY}/${DOCKER_IMAGE}" -f docker/Dockerfile . - docker push "cr.yandex/${YA_DOCKER_REGISTRY}/${DOCKER_IMAGE}" rules: - if: $CI_COMMIT_BRANCH exists: - docker/Dockerfile test-api: image: alpine/curl:latest stage: test variables: PYTHON_API_HOSTNAME: python-api services: - name: "cr.yandex/${YA_DOCKER_REGISTRY}/${DOCKER_IMAGE}" alias: python-api needs: - pre-build - docker-build script: - ./test/validate_api.sh deploy: image: gcr.io/cloud-builders/kubectl:latest stage: deploy variables: DOCKER_IMAGE: "cr.yandex/${YA_DOCKER_REGISTRY}/${DOCKER_IMAGE}" needs: - pre-build - docker-build script: - kubectl config set-cluster k8s --server="$KUBE_URL" --insecure-skip-tls-verify=true - kubectl config set-credentials admin --token="$KUBE_TOKEN" - kubectl config set-context default --cluster=k8s --user=admin - kubectl config use-context default - sed -i "s/__YA_REGISTRY__/${YA_DOCKER_REGISTRY}/" docker/k8s.yaml - sed -i "s/__DOCKER_IMAGE__/${DOCKER_IMAGE}/" docker/k8s.yaml - kubectl apply -f docker/k8s.yaml