Назад к вопросам
Junior
544
questionbank
Как выполнить деплой на GitLab?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Деплой в GitLab CI/CD выполняется через конфигурирование файла .gitlab-ci.yml в корневом каталоге проекта. В этом файле определяются пайплайны, стейджи и джобы.
Типичный процесс деплоя включает:
- Сборка: Создание артефактов (образов Docker, исполняемых файлов и т.д.).
- Тестирование: Выполнение Unit, Integration и End-to-End тестов.
- Деплой: Развертывание артефактов на целевых окружениях.
Пример .gitlab-ci.yml для деплоя Docker образа:
stages:
- build
- deploy
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
deploy_staging:
stage: deploy
image: registry.gitlab.com/gitlab-org/cloud-native/gitlab-agent/agentk/kubectl:latest # Использование kubectl
script:
- kubectl config use-context my-kubernetes-context # Переключение на нужный контекст
- kubectl apply -f kubernetes/deployment-staging.yaml # Деплой YAML файла
environment:
name: staging
only:
- main # Запуск джобы только при коммите в ветку main
deploy_production:
stage: deploy
image: registry.gitlab.com/gitlab-org/cloud-native/gitlab-agent/agentk/kubectl:latest
script:
- kubectl config use-context my-kubernetes-context
- kubectl apply -f kubernetes/deployment-production.yaml
environment:
name: production
when: manual # Ручной запуск джобы
only:
- main
Ключевые концепции:
- Stages: Определяют последовательность выполнения джоб.
- Jobs: Конкретные задачи, выполняемые в стейджах. Могут использовать различные Docker образы.
- Runners: Агенты, выполняющие джобы. Могут быть shared, specific, or group.
- Variables: Используются для хранения чувствительных данных или конфигурации. Могут быть предопределенными или пользовательскими (в настройках CI/CD).
- Environments: Позволяют связывать деплои с конкретными окружениями (staging, production). Упрощают отслеживание версий и откаты.
- Rules/Only/Except: Определяют, когда должна выполняться джоба.
Для деплоя на различные платформы используются соответствующие инструменты:
| Платформа | Инструмент | Пример использования в .gitlab-ci.yml |
|---|---|---|
| Kubernetes | kubectl, Helm | Использование образа с kubectl или Helm |
| Docker Swarm | docker | Использование образа docker |
| Cloud Platforms (AWS, GCP, Azure) | AWS CLI, gcloud, az | Использование образов с соответствующими CLI |
| SSH | ssh | Использование образа с ssh и выполнением команд |
Оптимизация деплоя включает:
- Кеширование: Ускоряет сборку.
- Параллельное выполнение джоб: Сокращает время пайплайна.
- Blue/Green или Canary деплой: Для снижения рисков.
Конфиденциальные данные (пароли, ключи API) следует хранить в CI/CD переменных с маской.