Непрерывная интеграция и непрерывное развертывание в SourceCraft
Непрерывная интеграция и непрерывное развертывание (CI/CD, Continuous Integration/Continuous Deployment) — это набор практик и инструментов, с помощью которых вы можете автоматически вносить изменения, тестировать и развертывать код. Такой подход позволяет постоянно улучшать качество программного обеспечения, а также ускорить разработку.
Непрерывная интеграция (CI)
Цель CI заключается в частой и регулярной интеграции изменений кода в основную ветку репозитория. Каждый коммит проходит автоматические проверки, например юнит-тесты и статический анализ кода. Таким образом можно убедиться в корректности коммита и стабильности кода. Это снижает риски интеграционных проблем, а разработчики быстрее получают обратную связь.
Непрерывное развертывание (CD)
Подход CD строится на автоматизации развертывания кода на продуктовые серверы после проверки качества кода. Это обеспечивает уверенность в том, что приложения всегда находятся в развернутом состоянии с последними обновлениями и исправлениями.
Конфигурация CI/CD
В SourceCraft встроен механизм для работы с CI/CD-процессами.
Конфигурация CI/CD задается для конкретного репозитория и хранится в корне репозитория в файле .src.ci.yaml
.
Общий вид конфигурационного файла .src.ci.yaml
:
on:
pull_request:
- workflows: [<список_рабочих_процессов>]
filter:
source_branches: [<список_исходных_веток>]
target_branches: [<список_целевых_веток>]
paths: [<список_путей>]
push:
- workflows: [<список_рабочих_процессов>]
filter:
branches: [<список_веток>]
paths: [<список_путей>]
workflows:
<имя_рабочего_процесса>:
tasks:
- name: <имя_задачи>
cubes:
- name: <имя_кубика>
image: <путь_к_Docker-образу>
script:
- <выполняемый_скрипт>
...
В конфигурационном файле поддерживается использование секретов. Подробнее см. в разделе Использовать значение секрета в CI/CD.
Полную спецификацию файла .src.ci.yaml
см. в репозитории templates в SourceCraft.
События-триггеры (on)
В блоке on
настраиваются события в репозитории, которые будут запускать рабочие процессы CI/CD.
Такими событиями могут быть отправка изменений в ветку удаленного репозитория или создание пул-реквеста.
Для разных событий вы можете настроить разные рабочие процессы. Также срабатывание триггеров можно настроить для конкретных веток или путей в репозитории.
Подробнее см. на странице События-триггеры (on) в справочнике CI/CD.
Рабочие процессы (workflows)
В блоке workflows
определяется перечень рабочих процессов CI/CD.
Рабочий процесс предназначен для логического объединения последовательности задач, связанных с определенным этапом CI/CD. Например, один рабочий процесс может выполняться для сборки, тестов и других проверок кода, а другой — для релиза.
Подробнее см. на странице Рабочие процессы (workflows) в справочнике CI/CD.
Задачи (tasks)
В блоке tasks
определяется перечень задач, которые будут выполняться в рабочем процессе.
Каждая задача содержит в себе набор минимальных логических действий — кубиков. Результатом задачи является выполнение всех кубиков.
Кубики (cubes)
В блоке cubes
определяется перечень минимальных логических действий — кубиков, которые будут выполняться в задаче.
Подробнее о задачах и кубиках см. на странице Задачи (tasks) в справочнике CI/CD.