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
- конец условия.
Настройка защиты ветки с проверкой статуса
В профиле репозитория на вкладке Настройки > Репозиторий включите 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.1
Создание и проверка пулл реквеста
Создайте пулл реквест.
Пример:
Отобразится страница пулл реквеста. Слияние недоступно, пока не будет выполнена успешная проверка.
Пример:
После успешной проверки слияние станет доступно.
Пример:
Проверка статуса задачи
На странице пулл реквеста нажмите Подробнее.
Пример:
На статусе задачи видно, что сообщение в пулл реквесте содержит слово "TASK-" и поэтому проверка прошла успешно.
Пример:
Вывод сообщения из пулл реквеста:
Результат проверки: