---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/task-approval.md
  - href: https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/task-approval.md
    type: text/markdown
    title: Markdown version
  - href: https://sourcecraft.dev/portal/docs/ru/llms.txt
    type: text/markdown
    title: llms.txt
title: Настроить ручное подтверждение заданий CI/CD в SourceCraft
description: 'Настройка ручного подтверждения заданий CI/CD в SourceCraft: время ожидания, инструкция для пользователя и обязательный комментарий.'
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt


# Настроить ручное подтверждение заданий CI/CD в SourceCraft

<!-- source: ru/_includes/sourcecraft/ci-cd/approval-description.md -->
Задание с ручным подтверждением не запускается автоматически после успешного выполнения зависимостей, а ожидает решения пользователя: подтвердить (`approve`) или отклонить (`reject`) выполнение. Такой механизм позволяет, например, проверить результат перед развертыванием в продуктовом окружении.

{% note warning %}

Принять решение в интерфейсе SourceCraft может пользователь репозитория с ролью не ниже [Разработчик репозитория](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/index.md#src-repositories-developer).

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/ci-cd/approval-description.md -->

Чтобы использовать ручное подтверждение:

1. [Включите ручное подтверждение в конфигурации CI/CD](#configure).
1. [Подтвердите или отклоните выполнение задания](#decide).

## Включить ручное подтверждение {#configure}

1. [Настройте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/ci-cd.md) CI/CD в репозитории, если еще этого не сделали.
1. Откройте файл `.sourcecraft/ci.yaml`.
1. В блоке `workflows:tasks` найдите задание, выполнение которого нужно подтверждать вручную, и добавьте в его описание параметр `approval`.

    <!-- source: ru/_includes/sourcecraft/ci-cd/approval.md -->
    {% note warning %}

    Параметр `approval` задает настройки ручного подтверждения выполнения задания внутри блока `workflows:tasks`. Его нельзя использовать в заданиях верхнего уровня, описанных в отдельном блоке `tasks` вне `workflows`.

    {% endnote %}

    Поддерживаются следующие формы записи:

    * `approval: true` — включить ручное подтверждение со временем ожидания по умолчанию — 24 часа.
    * `approval: false` — явно отключить ручное подтверждение. Эквивалентно отсутствию параметра `approval`.
    * `approval: {}` — включить ручное подтверждение с параметрами по умолчанию.
    * `approval: { timeout: ..., note: ..., require_comment: ... }` — включить ручное подтверждение с явно заданными параметрами.

    В блоке `approval` поддерживаются следующие параметры. Все параметры опциональны:

    * `timeout` — максимальное время ожидания решения, например `1h` или `2h`. Значение по умолчанию — `24h`. Время отсчитывается с момента перехода задания в статус `AwaitingApproval`. По истечении этого времени задание автоматически отменяется.
    * `note` — инструкция для пользователя, который принимает решение. Задается строкой длиной до 1000 символов и отображается в интерфейсе. По умолчанию не задана.
    * `require_comment` — требование добавить комментарий при подтверждении или отклонении задания. Задается логическим значением. Значение по умолчанию — `false`. Если установлено значение `true`, принять решение можно только с комментарием. Максимальная длина комментария — 2000 символов, не зависит от значения `require_comment`.
    <!-- endsource: ru/_includes/sourcecraft/ci-cd/approval.md -->

    Например, задайте зависимость от задания сборки, время ожидания, инструкцию и требование комментария:

    <!-- source: ru/_includes/sourcecraft/ci-cd/approval-example.md -->
    ```yaml
    workflows:
      deploy:
        tasks:
          - name: build
            cubes:
              - name: build-cube
                script:
                  - echo "build"
          - name: deploy-prod
            needs: [build]
            approval:
              timeout: 2h
              note: "Проверьте дашборды тестового окружения"
              require_comment: true
            cubes:
              - name: deploy-cube
                script:
                  - echo "deploy"
    ```

    В этом примере после успешного выполнения задания `build` задание `deploy-prod` будет ожидать решения пользователя до двух часов. Для подтверждения или отклонения выполнения потребуется комментарий. Команды `echo` иллюстрируют порядок выполнения заданий: замените их командами сборки и развертывания вашего приложения.
    <!-- endsource: ru/_includes/sourcecraft/ci-cd/approval-example.md -->

1. Сохраните изменения в репозитории. Если вы редактируете файл в интерфейсе SourceCraft:

    <!-- source: ru/_includes/sourcecraft/commit-message.md -->
    1. В правом верхнем углу нажмите **Сохранить изменения**.
    1. В открывшемся окне настройте параметры внесения изменений:

        <!-- source: ru/_includes/sourcecraft/commit-message-settings.md -->
        * В поле **Сообщение об изменениях** укажите комментарий, который опишет внесенные изменения.
        * В блоке **Ветка изменений** выберите, в какую ветку внести изменения. При необходимости создайте новую ветку.
        * В блоке **Действие после сохранения изменений** выберите действие после сохранения изменений: `Сохранить и создать новое предложение изменений` или `Просто сохранить`.
        <!-- endsource: ru/_includes/sourcecraft/commit-message-settings.md -->

    1. Подтвердите внесение изменений.
    <!-- endsource: ru/_includes/sourcecraft/commit-message.md -->

1. [Запустите рабочий процесс вручную](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/run-workflow-manually.md#simple-run), выбрав ветку с обновленным файлом `.sourcecraft/ci.yaml` и нужный рабочий процесс. Для приведенного примера выберите `deploy`.

## Подтвердить или отклонить выполнение задания {#decide}

1. Откройте репозиторий в интерфейсе SourceCraft.
1. В разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/arrows-3-rotate-right.svg) **CI/CD**.
1. Выберите запуск с нужным рабочим процессом. У запусков, ожидающих подтверждение, отображается статус ![image](../../_assets/console-icons/hand-stop.svg) **Ожидание**.
1. Дождитесь статуса **Ожидание подтверждения** (`AwaitingApproval`). Если у задания есть зависимости, сначала дождитесь их успешного выполнения.
1. Напротив задания нажмите ![image](../../_assets/console-icons/eye.svg) **Рассмотреть**.
1. В окне **Требуется подтверждение** ознакомьтесь с инструкцией из параметра `note`, если она задана, и проверьте результаты предыдущих заданий.
1. В поле **Комментарий** укажите причину решения. Комментарий обязателен при `require_comment: true`. Максимальная длина — 2000 символов.
1. Нажмите **Одобрить**, чтобы разрешить выполнение задания, или **Отклонить**, чтобы отклонить его.
1. Проверьте результат: после подтверждения задание будет передано в очередь выполнения, а после отклонения получит статус `Rejected`.

<!-- source: ru/_includes/sourcecraft/ci-cd/approval-results.md -->
Если ручное подтверждение включено, после запуска CI/CD задание создается в статусе `Created` и помещается в очередь ожидания. Пока зависимости, заданные в параметре `needs`, выполняются, задание остается в этом статусе. После успешного выполнения зависимостей или при их отсутствии задание переходит в статус `AwaitingApproval`. С этого момента начинается отсчет времени ожидания решения.

Возможные результаты ожидания:

* **Подтверждение** (`approve`) — задание переносится в очередь выполнения и запускается в обычном режиме. В сведениях о решении сохраняются результат `approved`, автор и комментарий.
* **Отклонение** (`reject`) — задание получает статус `Rejected` и удаляется из очереди ожидания. В сведениях о решении сохраняются результат `rejected`, информация об авторе и комментарий. Статус `Rejected` распространяется на рабочий процесс и весь запуск CI/CD.
* **Истечение времени ожидания** (`expire`) — если решение не принято вовремя, задание получает статус `Canceled`, а в сведениях о решении сохраняется результат `expired`. Статус `Canceled` распространяется на рабочий процесс и весь запуск CI/CD.

{% note info %}

При работе с ручным подтверждением учитывайте следующие ограничения:
* Решение по заданию принимается один раз. Повторная попытка отклоняется с результатом `ALREADY_DECIDED`.
* Если задано `require_comment: true`, попытка принять решение без комментария отклоняется с результатом `COMMENT_REQUIRED`.
* При отмене запуска CI/CD задание в статусе `AwaitingApproval` также получает статус `Canceled`.
* Если одна из зависимостей задания завершается неуспешно, задание получает статус `Canceled` и удаляется из очереди ожидания.

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/ci-cd/approval-results.md -->

#### Полезные ссылки {#see-also}

* [Описание блока approval в справочнике CI/CD с примерами](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/tasks.md#approval)
* [Задания (tasks)](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#tasks)
* [Запустить рабочий процесс вручную в репозитории SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/run-workflow-manually.md)
