CI/CD при защите ветки

CI/CD при защите ветки

Подготовительные действия

Установите docker, скачайте раннер и настройте CICD_branch_protection_demo.yaml файл конфигурации CI/CD.

💡

Для проверки примеров CI/CD с конфигурацией CICD_branch_protection_demo.yaml доступен репозиторий CICD_examples, ветка CICD_branch_protection_demo (opens in a new tab), в нем:

  • подготовлен файл конфигурации .gitverse/workflows/CICD_branch_protection_demo.yaml;
  • загружен раннер act_runner.

Конфигурация CICD_branch_protection_demo.yaml

Файл CICD_branch_protection_demo.yaml следует расположить в директории .gitverse/workflows вашего проекта, он определяет конфигурацию работы CI/CD для GitVerse:

name: Демонстрация защиты ветки
on:
  pull_request:
jobs:
  build-test:
    name: CICD branch protection
    runs-on: ubuntu-latest
    steps:
      - name: Display pull request title
        run: echo ${{ github.event.pull_request.title }}
      - name: Display commit message
        run: echo ${{ github.event.head_commit.message }}
      - name: Check pull request title
        run: |
          if [[ "${{ github.event.pull_request.title }}" == *"TASK-"* ]]; then
            echo "Pull request title contains 'TASK-'"
          else
            echo "Pull request title does not contain 'TASK-'"
            exit 1
          fi
⚠️

Раннер так же обработает .yaml файлы в директории .github/workflows.

Структура:

  • name: Демонстрация защиты ветки - название конфигурации CI/CD;
  • on: pull_request: - указывает, что конфигурация будет запускаться при событиях pull request;
  • jobs: - оределяет список задач, которые нужно выполнить:
    • build-test:
      • name: CICD branch protection - название этой конкретной задачи;
      • runs-on: ubuntu-latest - указывает, что задача будет выполняться на последней версии Ubuntu;
      • steps - шаги, которые нужно выполнить в рамках этой задачи:
        • name: Display pull request title - название шага:
          • run: echo ${{ github.event.pull_request.title }} - выводит заголовок пулл реквеста;
        • name: Display commit message - название шага:
          • run: echo ${{ github.event.head_commit.message }} - выводит сообщение коммита;
        • name: Check pull request title - название шага:
          • run: | - многострочная команда:
            • if [[ "${{ github.event.pull_request.title }}" == *"TASK-"* ]]; then - условие проверяет, содержит ли заголовок пулл реквеста слово "TASK-".Если содержит, то:
              • echo "Pull request title contains 'TASK-'" - выводится сообщение "Pull request title contains 'TASK-'":
            • else - если не содержит, то:
              • echo "Pull request title does not contain 'TASK-'" выводится сообщение "Pull request title does not contain 'TASK-'";
              • exit 1 - и завершает выполнение с ошибкой;
            • fi - конец условия.

Настройка защиты ветки с проверкой статуса

  1. В профиле репозитория на вкладке Настройки > Репозиторий включите CI/CD, Запросы на слияние и нажмите Обновить.

    Пример:

    включение CICD и запросов на слияние, шаг 1_1

    Отобразятся новые вкладки:

    включение CICD и запросов на слияние, шаг 1_2
  2. Создайте новое правило.

    Пример:

    включение CICD и запросов на слияние, шаг 2_1

    Далее:

    включение CICD и запросов на слияние, шаг 2_2

Получение токена и запуск раннера

  1. Создайте токен раннера.

    Пример:

    Создайте токен раннера
  2. Запустите раннер.

    Пример регистрации и запуска раннера в докер контейнере c полученным токеном:

    sudo docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e INSTANCE_URL=https://gitverse.ru/sc/ \
    -e RUNNER_REGISTRATION_TOKEN=IfFghH5STMA6jbAausBUHw4NsVwWabCtd2rpWrTq \
    gitverse.ru/gitverse/act-runner:3.0.1

Создание и проверка пулл реквеста

  1. Создайте пулл реквест.

    Пример:

    Выполнение и проверка пулл реквеста, шаг 4_1
    Выполнение и проверка пулл реквеста, шаг 4_2
  2. Отобразится страница пулл реквеста. Слияние недоступно, пока не будет выполнена успешная проверка.

    Пример:

    Отобразится страница пулл реквеста. Слияние недоступно, пока не будет выполнена успешная проверка, шаг 5
  3. После успешной проверки слияние станет доступно.

    Пример:

    После успешной проверки слияние станет доступно, шаг 6

Проверка статуса задачи

  1. На странице пулл реквеста нажмите Подробнее.

    Пример:

    На странице пулл реквеста нажмите Подробнее, шаг 7
  2. На статусе задачи видно, что сообщение в пулл реквесте содержит слово "TASK-" и поэтому проверка прошла успешно.

    Пример:

    Вывод сообщения из пулл реквеста:

    Вывод сообщения из пулл реквеста, шаг 8_1

    Результат проверки:

    Результат проверки, шаг 8_2