CI/CD при защите ветки
Подготовительные действия
Установите  docker, скачайте раннер и настройте  CICD_branch_protection_demo.yaml файл конфигурации CI/CD.
Для проверки примеров CI/CD с конфигурацией CICD_branch_protection_demo.yaml доступен репозиторий CICD_examples, ветка CICD_branch_protection_demo, в нем:
- подготовлен файл конфигурации .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Структура:
- 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— конец условия.
 
 
 
 
 
Настройка защиты ветки с проверкой статуса
- В профиле репозитория на вкладке Настройки > Репозиторий включите CI/CD, Запросы на слияние и нажмите Обновить:  - Отобразятся новые вкладки:  
- Создайте новое правило:  - Далее:  
Получение токена и запуск раннера
- Создайте токен раннера:  
- Запустите раннер. Пример регистрации и запуска раннера в докер контейнере 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.4
Создание и проверка запроса
- Для создания запроса перейдите на вкладку Запросы и нажмите Создать новый запрос:  - Заполните форму создания запроса:  
- Отобразится страница запроса, где слияние недоступно, пока не будет выполнена успешная проверка:  
- После успешной проверки слияние станет доступно:  
Проверка статуса задачи
- На странице запроса нажмите Подробнее:  
- На статусе задачи видно, что сообщение в запросе содержит слово - TASK-и поэтому проверка прошла успешно.- Вывод сообщения из запроса:  - Результат проверки: 