Вопрос проверяет знание ключевых инструментов автоматизации разработки, сборки, тестирования и деплоя приложений.
Для CI/CD чаще всего используют инструменты вроде Jenkins, GitLab CI, GitHub Actions, CircleCI и TeamCity. Они помогают автоматизировать процесс сборки, тестирования и доставки приложения, снижая количество ошибок и ускоряя выпуск. Эти системы интегрируются с репозиториями кода и позволяют выстраивать пайплайны.
CI/CD (Continuous Integration / Continuous Delivery) — это практика, в которой:
CI (непрерывная интеграция) — автоматически собирает и тестирует код при каждом коммите.
CD (непрерывная доставка/развёртывание) — автоматически доставляет код на тестовые и продакшн-среды.
Наиболее распространённые инструменты:
Jenkins
Открытая система с множеством плагинов.
Гибкий, но требует ручной настройки.
Скрипты пишутся на Groovy (Pipeline DSL).
GitLab CI/CD
Встроен в GitLab.
Удобен для команд, уже работающих в GitLab.
Конфигурация описывается в .gitlab-ci.yml.
GitHub Actions
Подходит для проектов на GitHub.
Прост в настройке, много готовых action'ов.
Конфигурация в YAML-файлах.
CircleCI
Облачный CI/CD с простой настройкой.
Хорошо работает с Docker и Kubernetes.
TeamCity
Коммерческий продукт от JetBrains.
Удобный UI, интеграция с IDE.
Пример пайплайна (GitHub Actions):
name: Java CI
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup JDK
uses: actions/setup-java@v3
with:
java-version: '17'
- name: Build with Maven
run: mvn clean installКогда использовать:
Jenkins — для гибких кастомных решений.
GitHub/GitLab — если вы используете соответствующие хостинги.
CircleCI/TeamCity — для интеграции с Docker и сложными сценариями.