Непрерывная интеграция и непрерывное развертывание в 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.

См. также