Задание с ручным подтверждением не запускается автоматически после успешного выполнения зависимостей, а ожидает решения пользователя: подтвердить (approve) или отклонить (reject) выполнение. Такой механизм позволяет, например, проверить результат перед развертыванием в продуктовом окружении.
Важно
Принять решение в интерфейсе SourceCraft может пользователь репозитория с ролью не ниже Разработчик репозитория.
Настройте CI/CD в репозитории, если еще этого не сделали.
Откройте файл .sourcecraft/ci.yaml.
В блоке workflows:tasks найдите задание, выполнение которого нужно подтверждать вручную, и добавьте в его описание параметр approval.
Важно
Параметр approval задает настройки ручного подтверждения выполнения задания внутри блока workflows:tasks. Его нельзя использовать в заданиях верхнего уровня, описанных в отдельном блоке tasks вне workflows.
Поддерживаются следующие формы записи:
approval: true — включить ручное подтверждение со временем ожидания по умолчанию — 24 часа.
approval: {} — включить ручное подтверждение с параметрами по умолчанию.
approval: { timeout: ..., note: ..., require_comment: ... } — включить ручное подтверждение с явно заданными параметрами.
В блоке approval поддерживаются следующие параметры. Все параметры опциональны:
timeout — максимальное время ожидания решения, например 1h или 2h. Значение по умолчанию — 24h. Время отсчитывается с момента перехода задания в статус AwaitingApproval. По истечении этого времени задание автоматически отменяется.
note — инструкция для пользователя, который принимает решение. Задается строкой длиной до 1000 символов и отображается в интерфейсе. По умолчанию не задана.
require_comment — требование добавить комментарий при подтверждении или отклонении задания. Задается логическим значением. Значение по умолчанию — false. Если установлено значение true, принять решение можно только с комментарием. Максимальная длина комментария — 2000 символов, не зависит от значения require_comment.
Например, задайте зависимость от задания сборки, время ожидания, инструкцию и требование комментария:
В этом примере после успешного выполнения задания build задание deploy-prod будет ожидать решения пользователя до двух часов. Для подтверждения или отклонения выполнения потребуется комментарий. Команды echo иллюстрируют порядок выполнения заданий: замените их командами сборки и развертывания вашего приложения.
Сохраните изменения в репозитории. Если вы редактируете файл в интерфейсе SourceCraft:
В правом верхнем углу нажмите Сохранить изменения.
В открывшемся окне настройте параметры внесения изменений:
В поле Сообщение об изменениях укажите комментарий, который опишет внесенные изменения.
В блоке Ветка изменений выберите, в какую ветку внести изменения. При необходимости создайте новую ветку.
В блоке Действие после сохранения изменений выберите действие после сохранения изменений: Сохранить и создать новое предложение изменений или Просто сохранить.
Подтвердите внесение изменений.
Запустите рабочий процесс вручную, выбрав ветку с обновленным файлом .sourcecraft/ci.yaml и нужный рабочий процесс. Для приведенного примера выберите deploy.
Подтвердить или отклонить выполнение задания
Откройте репозиторий в интерфейсе SourceCraft.
В разделе Код перейдите в секцию CI/CD.
Выберите запуск с нужным рабочим процессом. У запусков, ожидающих подтверждение, отображается статус Ожидание.
Дождитесь статуса Ожидание подтверждения (AwaitingApproval). Если у задания есть зависимости, сначала дождитесь их успешного выполнения.
Напротив задания нажмите Рассмотреть.
В окне Требуется подтверждение ознакомьтесь с инструкцией из параметра note, если она задана, и проверьте результаты предыдущих заданий.
В поле Комментарий укажите причину решения. Комментарий обязателен при require_comment: true. Максимальная длина — 2000 символов.
Нажмите Одобрить, чтобы разрешить выполнение задания, или Отклонить, чтобы отклонить его.
Проверьте результат: после подтверждения задание будет передано в очередь выполнения, а после отклонения получит статус Rejected.
Если ручное подтверждение включено, после запуска CI/CD задание создается в статусе Created и помещается в очередь ожидания. Пока зависимости, заданные в параметре needs, выполняются, задание остается в этом статусе. После успешного выполнения зависимостей или при их отсутствии задание переходит в статус AwaitingApproval. С этого момента начинается отсчет времени ожидания решения.
Возможные результаты ожидания:
Подтверждение (approve) — задание переносится в очередь выполнения и запускается в обычном режиме. В сведениях о решении сохраняются результат approved, автор и комментарий.
Отклонение (reject) — задание получает статус Rejected и удаляется из очереди ожидания. В сведениях о решении сохраняются результат rejected, информация об авторе и комментарий. Статус Rejected распространяется на рабочий процесс и весь запуск CI/CD.
Истечение времени ожидания (expire) — если решение не принято вовремя, задание получает статус Canceled, а в сведениях о решении сохраняется результат expired. Статус Canceled распространяется на рабочий процесс и весь запуск CI/CD.
Примечание
При работе с ручным подтверждением учитывайте следующие ограничения:
Решение по заданию принимается один раз. Повторная попытка отклоняется с результатом ALREADY_DECIDED.
Если задано require_comment: true, попытка принять решение без комментария отклоняется с результатом COMMENT_REQUIRED.
При отмене запуска CI/CD задание в статусе AwaitingApproval также получает статус Canceled.
Если одна из зависимостей задания завершается неуспешно, задание получает статус Canceled и удаляется из очереди ожидания.