Назад к вопросам
Junior
65
questionbank
Какие инструменты для непрерывной интеграции и доставки (CI/CD) вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Jenkins, GitLab CI, GitHub Actions, CircleCI, TeamCity, Azure DevOps Pipelines, Bamboo, Travis CI.
Основные категории инструментов CI/CD:
- Платформы полного цикла: Предоставляют комплексные решения, включающие управление репозиториями, CI, CD, мониторинг и другие функции.
- GitLab (GitLab CI)
- GitHub (GitHub Actions)
- Azure DevOps
- Инструменты CI/CD общего назначения: Гибкие системы, которые можно интегрировать с различными инструментами для сборки, тестирования, развертывания.
- Jenkins
- CircleCI
- Bamboo
- TeamCity
- Travis CI
- Сборочные системы: Сосредоточены на автоматизации процесса компиляции, тестирования и упаковки кода.
- Maven
- Gradle
- Ant
- Инструменты развертывания: Специализируются на автоматизации доставки приложений в различные среды.
- Ansible
- Chef
- Puppet
- Spinnaker
- Argo CD
Пример конфигурации Jenkinsfile для простого CI пайплайна:
// Dockerfile
FROM openjdk:11-jre-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
// Jenkinsfile
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package' // Сборка приложения с помощью Maven
}
}
stage('Test') {
steps {
sh 'mvn test' // Запуск тестов
}
}
stage('Build Docker Image') {
steps {
script { // Создание Docker образа
docker.build("my-app:${env.BUILD_ID}")
}
}
}
stage('Deploy') {
steps {
// Шаги для развертывания, например, на Kubernetes
echo "Развертывание образа my-app:${env.BUILD_ID}..."
}
}
}
}
Пример конфигурации GitLab CI для аналогичного пайплайна:
# .gitlab-ci.yml
image: maven:latest # Использование образа Maven
stages:
- build
- test
- docker_build
- deploy
build:
stage: build
script:
- mvn clean package -B # Сборка приложения с помощью Maven в пакетный режим
test:
stage: test
script:
- mvn test -B # Запуск тестов в пакетный режим
docker_build:
stage: docker_build
image: docker:latest # Использование образа Docker
services:
- docker:dind # Запуск Docker в Docker сервисе
variables:
DOCKER_HOST: tcp://docker:2375 # Переменная окружения для доступа к Docker сервису
DOCKER_TLS_CERTDIR: "" # Отключение TLS
script:
- docker build -t my-app:$CI_COMMIT_SHORT_SHA . # Сборка Docker образа
- docker push my-app:$CI_COMMIT_SHORT_SHA # Пуш образа в репозиторий
deploy:
stage: deploy
script:
- echo "Развертывание образа my-app:$CI_COMMIT_SHORT_SHA..."
only:
- main # Выполнять только при пуше в ветку main