diff --git a/content/documentation/admin/actions/overview.ru.md b/content/documentation/admin/actions/overview.ru.md index 067cc15..9bc278d 100644 --- a/content/documentation/admin/actions/overview.ru.md +++ b/content/documentation/admin/actions/overview.ru.md @@ -61,11 +61,11 @@ weight: 10 Действие может выполняться с использованием одного из двух типов бэкенда: -- **Встроенный (BuiltIn)** — основная логика действия выполняется внутри платформы. +- **Встроенный** — основная логика действия выполняется внутри платформы. > При выборе встроенного бэкенда необходимо указать конкретный тип встроенного действия. В зависимости от выбранного типа платформа автоматически формирует пример тела запроса и определяет перечень учетных данных, необходимых для выполнения действия. -- **Вебхук (Webhook)** — основная логика действия выполняется внешним сервисом, которому платформа отправляет HTTP-запрос. +- **Вебхук** — основная логика действия выполняется внешним сервисом, которому платформа отправляет HTTP-запрос. #### Маскирование полей действия @@ -195,6 +195,23 @@ Headers — HTTP-заголовки в формате ключ-значение, * Источник: `{{ .response.id }}`. * Параметр сущности: `repository_id`. +#### Запись в хранилище процесса + +После выполнения действия результат записывается в поле **response**. В разделе **«Обновление»** конфигурации действия доступен блок **«Запись в хранилище процесса»**. Он применяется только при выполнении действия в рамках процесса: если заданы правила записи в хранилище, то после успешного выполнения действия значения по этим правилам записываются в хранилище. + +В блоке задаётся список правил: + +| Поле | Описание | Примеры | +|------|----------|---------| +| **Источник** | Строка Go-шаблона, в котором контекстом является **response** этого действия. Шаблон выполняется после успешного выполнения действия; результат (строка) записывается в хранилище. | `{{ .id }}` — получить поле id из ответа; `{{ .result.projectId }}` — получить вложенное поле projectId из result из ответа | +| **Ключ в хранилище** | Название ключа в хранилище процесса. Под этим ключом сохраняется значение из источника. | `projectId`, `deployJobId` | + +Если правил нет (список пустой), при выполнении действия в процессе в хранилище ничего не записывается. Данные из хранилища можно использовать в последующих действиях того же процесса через плейсхолдеры `{{ .store.<ключ> }}`. Подробнее об использовании хранилища см. в разделе [«Хранилище процесса»](../processes/#хранилище-процесса). + +{{< alert level="info" >}} +Запись в хранилище выполняется только после успешного выполнения действия. +{{< /alert >}} + #### Обновление учётных данных пользователя После выполнения действия результат записывается в поле **response**. Если включена опция **обновление учётных данных пользователя**, то на основании данных из **response** действие автоматически обновляет учётные данные пользователя в соответствии с правилами обновления. diff --git a/content/documentation/admin/processes.ru.md b/content/documentation/admin/processes.ru.md index b684b57..07fa6f8 100644 --- a/content/documentation/admin/processes.ru.md +++ b/content/documentation/admin/processes.ru.md @@ -86,7 +86,30 @@ moduleStatus: experimental На вкладке `Параметры` настраиваются параметры процесса, которые могут использоваться во всех действиях процесса. -Конфигурация и использование параметров процесса описаны в разделе [шаблонизация](../user/templating.html#параметры-процесса). +Конфигурация и использование параметров процесса описаны в разделе [шаблонизация](../user/templating/#параметры-процесса). + +### Хранилище процесса + +Хранилище процесса — это хранилище формата ключ-значение для передачи данных между действиями в процессе. + +#### Основные характеристики + +- **Одно хранилище на запуск процесса** — каждый запуск процесса имеет своё хранилище. +- **Плоские ключи** — в хранилище используются только логические ключи (например `projectId`, `deployJobId`). +- **Запись только по правилам** — в хранилище записывается только то, что задано в настройках действий, входящих в процесс (см. [«Запись в хранилище процесса»](../actions/overview/#запись-в-хранилище-процесса)). Если правил записи нет — в хранилище ничего не записывается. +- **Чтение через плейсхолдеры** — в конфигурации действий (URL, заголовки, body и т.д.) можно использовать Go-шаблоны вида `{{ .store.<ключ> }}` (см. [«Хранилище процесса»](../../user/templating/#хранилище-процесса)). + +#### Как данные попадают в хранилище + +1. Действие в процессе завершилось **успешно**. +2. У действия настроены правила «Запись в хранилище процесса». +3. Для каждого правила выполняется Go-шаблон из поля **Источник** с данными ответа действия; полученная строка записывается в хранилище под ключом, указанным в поле **Ключ в хранилище**. + +Если для одного и того же ключа пишут несколько действий (или одно и то же действие при повторном запуске), **значение перезаписывается**. + +#### Поведение при отсутствующих данных + +Если **ключа нет** в хранилище (действие ещё не выполнялось, не имело правил записи или запись не произошла), при выполнении шаблона `{{ .store.<ключ> }}` действие завершится с ошибкой. ## Запуск процесса diff --git a/content/documentation/admin/workflows.ru.md b/content/documentation/admin/workflows.ru.md index 85df7e1..9bac1dd 100644 --- a/content/documentation/admin/workflows.ru.md +++ b/content/documentation/admin/workflows.ru.md @@ -28,4 +28,4 @@ moduleStatus: experimental ### Параметры сценария -Конфигурация и использование параметров сценария описаны в разделе [шаблонизация](../user/templating.html#параметры-сценария). +Конфигурация и использование параметров сценария описаны в разделе [шаблонизация](../user/templating/#параметры-сценария). diff --git a/content/documentation/release-notes/v1.3.0.ru.md b/content/documentation/release-notes/v1.3.0.ru.md index 4dcdb13..0af2639 100644 --- a/content/documentation/release-notes/v1.3.0.ru.md +++ b/content/documentation/release-notes/v1.3.0.ru.md @@ -22,9 +22,10 @@ weight: 940 - **Jira. Задачи** — для просмотра задач в Jira ([подробнее](../../admin/widgets/types/#jira-задачи)). - **Vault. Секреты** — для просмотра секретов в HashiCorp Vault или Deckhouse Stronghold ([подробнее](../../admin/widgets/types/#vault-секреты)). -### Действия +### Процессы и действия -Добавлена возможность отмены запущенных действий и процессов. +- Добавлен механизм обмена данными между действиями процесса: результаты выполнения действия можно записать в хранилище и использовать в последующих действиях ([подробнее](../../admin/processes/#хранилище-процесса)). +- Добавлена возможность отмены запущенных действий и процессов. ### Команды diff --git a/content/documentation/user/templating.ru.md b/content/documentation/user/templating.ru.md index c0a20eb..074c430 100644 --- a/content/documentation/user/templating.ru.md +++ b/content/documentation/user/templating.ru.md @@ -497,3 +497,31 @@ title: Шаблонизация {{ .workflow.notificationEmail }} // Email для уведомлений из параметров сценария {{ .workflow.retryAttempts }} // Количество попыток повтора из параметров сценария ``` + +## Хранилище процесса + +Хранилище доступно только в процессах и используется для передачи данных между действиями. В настройках действия задаются правила записи в хранилище (см. [«Запись в хранилище процесса»](../../admin/actions/overview/#запись-в-хранилище-процесса)), а в конфигурации последующих действий используются плейсхолдеры для чтения данных. + +Для получения значения из хранилища используйте следующую конструкцию: + +```go +{{ .store.<ключ> }} +``` + +где: + +- `store` — указывает на то, что идет обращение к хранилищу процесса. +- `<ключ>` — название ключа в хранилище, под которым было сохранено значение (поле **Ключ в хранилище** в правилах записи). + +Особенности использования: + +- Хранилище доступно только в процессах, в обычных действиях и сценариях плейсхолдеры `{{ .store.* }}` не работают. +- Если ключа нет в хранилище (действие ещё не выполнялось, не имело правил записи или запись не произошла), действие завершится с ошибкой. +- Если для одного и того же ключа пишут несколько действий, остаётся последнее записанное значение. + +Примеры использования: + +```go +{{ .store.projectId }} // ID проекта из хранилища +{{ .store.orderRef }} // Референс заказа из хранилища +```