Files
netology-devops-gitlab/.gitlab-ci.yml
2022-09-19 11:06:00 +07:00

72 lines
1.8 KiB
YAML

---
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
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