Курс очень молодого бойца
Рассмотрим пример создания pipeline на основе gitlab-ci.yaml
Посмотрим, какие пункты мы можем внести gitlab.
В gitlab-ci.yaml
будет внесены пукнты 3-5 прошлой статьи. То есть, gitlab-ci
будет отвечать за создание, тестирование, выпуск образа и развертывание его в рабочем окружении.
Рассмотрим основные шаги пайплан:
Заполним его, для этого воспользуемся готовым шаблон пайплайн:
image: docker:latest
variables:
DOCKER_DRIVER: overlay
CONTAINER_TEST_IMAGE: $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_NAME
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY/$CI_PROJECT_PATH:latest
services:
- docker:dind
stages:
- build
- test
- release
- deploy
build:
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build --pull -t $CONTAINER_TEST_IMAGE . --build-arg=secret_key=secret
- docker push $CONTAINER_TEST_IMAGE
only:
- tags
test:
image: $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_NAME
stage: test
services:
- postgres:11-alpine
variables:
SECRET_KEY: runner
POSTGRES_DB: runner
POSTGRES_USER: runner
POSTGRES_PASSWORD: runner
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
TEST: 1
script:
- python3 /code/backend/manage.py qa
only:
- tags
release:
stage: release
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
only:
- tags
deploy:
image: kroniak/ssh-client
stage: deploy
script:
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- ssh -o StrictHostKeyChecking=no -p $TESTPORT $TESTUSER@$STAGINGHOST make --directory=$TESTPATH deployfront TAG=$CI_COMMIT_REF_NAME
only:
- tags
# when: manual
Для начала разберем переменные используемые в данном файле конфигурации, но которые необхдимо задать в окружении gitlab(Settings->CI\CD->Variables->"Add variables" уберите галочку "Protected variable" для ознакомления она вам не понадобится):
Все остальные переменные перечислены в секции variables
(используются в местах где они начинаются с символа$
) геренируются в процессе запуска скрипта. Берутся они из gitlab окружения, можно найти в документации к gitlab.
Теперь рассмотрим стадии, в приведенном примере в разделе stages
их 4 стадии:
Рассмотрим общие части шагов пайплайна