GitLab (CI/CD)
GitLab — это комплексная платформа с открытым исходным кодом, объединяющая управление исходным кодом, CI/CD и безопасность в одном интерфейсе.
Шаг 1. Откройте GitLab и нажмите «Создать репозиторий»
Шаг 2. Введите название репозитория
Что выдает Alem Plus:
- Ссылка
- Логин
- Пароль
Далее Вы можете настроить автоматическую сборку Docker-контейнера и деплой в кластер Kubernetes AlemPlus.
Инструкции по настройке
- Перейдите по выданной ссылке
- Зайдите в Settings -> CI/CD -> Variables своего проекта
- С помощью кнопки Add Variable создайте 2 переменные окружения:
- Key CONTAINER_REGISTRY_USER со значением - ваш логин для входа в Gitlab
- Key CONTAINER_REGISTRY_PASSWORD со значением - ваш пароль для входа в Gitlab Затем скопируйте следующий файл .gitlab-ci.yml.example в своем проекте в .gitlab-ci.yml
image: docker:latest
services:
- docker:dind
variables:
DOCKER_REGISTRY: $CONTAINER_REGISTRY
DOCKER_IMAGE: $CI_REGISTRY_IMAGE
stages:
- build
- deploy
build_image:
stage: build
only:
- master
script:
# Build образа и сохранение в Registry
- docker login -u $CONTAINER_REGISTRY_USER -p $CONTAINER_REGISTRY_PASSWORD $CONTAINER_REGISTRY
- docker build -t $DOCKER_IMAGE:$CI_COMMIT_SHORT_SHA .
- docker push $DOCKER_IMAGE:$CI_COMMIT_SHORT_SHA
deploy:
image: alpine
stage: deploy
only:
- master
needs: ["build_image"]
script:
- apk add --no-cache curl
- |
echo "Тригерим внешний пайплайн root/deploy..."
curl -X POST \
--fail \
-F "token=$ROOT_DEPLOY_TRIGGER_TOKEN" \
-F "ref=master" \
-F "variables[DEPLOYMENT_TAG]=$CI_COMMIT_SHORT_SHA" \
-F "variables[DEPLOYMENT_NAME]=$CI_PROJECT_PATH" \
-F "variables[DEPLOYMENT_LOGS_USER]=$CONTAINER_REGISTRY_USER" \
-F "variables[DEPLOYMENT_LOGS_PASSWORD]=$CONTAINER_REGISTRY_PASSWORD" \
https://$CI_SERVER_HOST/api/v4/projects/$ROOT_DEPLOY_TRIGGER_PROJECT/trigger/pipeline
variables:
# Тэг контейнера для деплоймента
DEPLOYMENT_TAG: $CI_COMMIT_SHORT_SHA
# Название деплоймента (этот проект)
DEPLOYMENT_NAME: $CI_PROJECT_PATH
# Логин и пароль для HTTP авторизации для просмотра логов
DEPLOYMENT_LOGS_USER: $CONTAINER_REGISTRY_USER
DEPLOYMENT_LOGS_PASSWORD: $CONTAINER_REGISTRY_PASSWORD
- Теперь при любом изменении кода в ветке master будет автоматически собираться контейнер и деплоиться в кластер Kubernetes AlemPlus.
- Прогресс сборки и логи можно смотреть в Build -> Pipelines вашего проекта.
Развертывание
- Развертывание происходит автоматически в кластере Kubernetes.
- HTTP-порт образа должен находится на 80 порту.
- Автоматически настраивается **https://<ВАШ ЛОГИН="">-<ВАШЕ НАЗВАНИЕ="" ПРОЕКТА="">.gitlabapp.alem.ai**. Например, если ваш репозиторий находится по адресу Gitlab foo/bar, то домен будет **https://foo-bar.gitlabapp.alem.ai**.ВАШЕ>ВАШ>
Просмотр логов
- Во время деплоймента к вашему контейнеру автоматически создается sidecar контейнер, доступный по адресу **https://<ВАШ ЛОГИН="">-<ВАШЕ НАЗВАНИЕ="" ПРОЕКТА="">.gitlabapp.alem.ai/logs**.ВАШЕ>ВАШ>
- Для того, чтобы просмотр логов был доступен, ваш контейнер должен писать логи в файл /applogs/app.logs, а не в stdout.
- Веб страница с логами защищена HTTP-авторизацией.
- Для установки логина и пароля необходимо передать в триггер переменные DEPLOYMENT_LOGS_USER и DEPLOYMENT_LOGS_PASSWORD.
- См. .gitlab-ci.yml.example{: .yellow}, в котором передаются ваши CONTAINER_REGISTRY_USER{: .yellow} и CONTAINER_REGISTRY_PASSWORD{: .yellow}.
Лимиты
- Ваш контейнер по умолчанию лимитирован по использованию ресурсов: 2 CPU, 4 GB RAM. Если вам нужно больше ресурсов, обратитесь в поддержку.