Чтобы продолжить с примером рабочего процесса, его необходимо настроить.
К настройке блока можно получить доступ, нажав Редактировать параметры на вкладке , или щёлкнув правой кнопкой мыши по блоку и выбрав Редактировать параметры, чтобы открыть окно . После того как у блока есть параметры, кнопка переключается на .
Чтобы настроить блоки для примера, выполните следующие шаги:
-
Откройте окно для действия
.Список языковых стандартов
-
Поля и потребуют динамических значений, которые будут определяться во время выполнения.
-
Нажмите на значок ссылки
для поля и выберите действие
.Получить доступные токены
Ссылка становится зеленой, и поле можно редактировать.
-
Синтаксис для получения доступа к свойствам справочного триггера или действия следующий:
{{$.path.to.value}}Результат для
будет следующим:Fetch access tokens
{ "tokens": {"strings_token": "STRINGS_TOKEN", "tms_token": "TMS_TOKEN"} }что делает выражение обязательным для поля
{{$.tokens.strings_token}}. -
Нажмите на значок ссылки
для поля и выберите триггер
.uploads:create
Ссылка становится зеленой, и поле можно редактировать.
-
Результат триггера
выглядит следующим образом:uploads:create
{ "branch": { "name": "my_branch" }, "event": "uploads:create", "message": "user-1 инициализировал загрузку файла file.yml в проекте name_1672734591_11 в ветке my_branch\n", "project": { "created_at": "2023-01-03 08:29:51 UTC", "id": "abcdabcdabcdabcd-11", "main_format": "yml", "name": "name_1672734591_10", "point_of_contact": null, "project_image_url": null, "slug": "name_1672734591_10", "updated_at": // "обновлено_в": если требуется перевод ключа "2023-01-03 08:29:51 UTC" }, "upload": { // "загрузить": { если требуется перевод ключа "created_at": "2023-01-03 08:29:48 UTC", "filename": "file.yml", "format": "yml", // "формат": "yml", если требуется перевод ключа "id": "upload-1", "state": "initialized", "summary": {}, "tag": null, "updated_at": "2023-01-03 08:29:48 UTC" }, "user": { "gravatar_uid": "29a2d1baa67d4ea524cf0f247f7bbb94", "id": "9c365b9a6f77c247c3de959f6152b231", "name": "Joe Sixpack", "username": "user-1" } }выражение становится обязательным для поля
{{$.project.id}}. -
Нажмите «Сохранить».
Окно закрывается, и параметры для действия сохраняются.
-
-
Язык по умолчанию проекта необходим для создания задания, передав ID в действие
. ДействиеСоздать задание
принимает входной JSON, применяет указанный фильтр и затем снова выводит JSONПреобразовать JSON с помощью jq
-
На вкладке окна найдите phrase-jq.
Перетащите блок действия
ниже блока действияTransform JSON with jq
, чтобы соединить их.«список языковых стандартов»
-
Откройте окно для действия
Преобразовать JSON с помощью jq. -
Выберите из выпадающего поля .
-
Нажмите на значок ссылки
для поля и выберите действие
«список языковых стандартов»<4>.
Ссылка становится зеленой, и поле можно редактировать.
-
Поле принимает JSON-данные. Специальное фиксированное выражение (
@вместо$) гарантирует, что весь результат справочного действия передаётся в поле.Введите выражение
{{@.outputs.result}}в поле . -
Нажмите на значок ссылки
для поля и выберите действие
.list locales
Ссылка становится зеленой, и поле можно редактировать.
-
Требуется фильтровать список языковых стандартов так, чтобы возвращался новый список, содержащий все элементы, где свойство
defaultравноtrue.В каждом проекте может быть только один языковой стандарт по умолчанию, и список имеет один идентифицируемый и обязательный элемент. Этот элемент доступен напрямую с помощью синтаксиса массива
.[0].Введите выражение
map(select(.default))|.[0]в поле . -
Нажмите «Сохранить».
Окно закрывается, и параметры действия сохраняются.
-
-
Теперь действие
может быть настроено и будет использовать шаблоны из предыдущих блоков.Создать задание
-
Нажмите на значок ссылки
для поля и выберите действие
.«Получить токены доступа»
Ссылка становится зеленой, и поле можно редактировать.
Введите выражение
{{$.tokens.strings_token}}. -
Нажмите на значок ссылки
для поля и выберите триггер
uploads:создать<4>.
Ссылка становится зеленой, и поле можно редактировать.
Введите выражение
{{$.project.id}}. -
Нажмите на значок ссылки
для поля и выберите действие
Transform JSON with jq.Ссылка становится зеленой, и поле можно редактировать.
Введите выражение
{{@.outputs.result}}. -
Срок выполнения может быть рассчитан с помощью функций sprig или Expr, но для целей этого примера будет использована жестко закодированная дата, понятная API.
В поле введите 2023-12-31T12:00:00Z.
-
Нажмите «Сохранить».
Конфигурация сохранена, а детали можно просмотреть на вкладке .
-
-
Каждое действие может иметь одно или несколько условий, объединенных логическими
ИиИЛИ. Эти условия оцениваются во время выполнения, и действие и его дочерние элементы будут выполняться только в том случае, если условие оценивается как истинное.Чтобы отразить это в примере, при выбранном действии
нажмите Редактировать условия на вкладке «» или кликните правой кнопкой мыши по блоку и выберите Редактировать условия.Создать задание
Открывается окно .
-
Следуя шаблонам из предыдущих блоков, свяжите поле с триггером
и введите выражение«загрузить:создать»
{{$.upload.tag}}. -
Выберите НЕ из первого выпадающего списка, чтобы инвертировать утверждение.
-
Выберите IsNull из выпадающего списка .
-
Нажмите «Сохранить».
Условие представлено на вкладке .
Рабочий процесс остановится на этом этапе, если загрузка не содержит тег (то есть не было новых или обновлённых ключей или переводов).
-
-
Для задания теперь обязательны целевые языковые стандарты. Для целей примера будут созданы два языковых стандарта; один для испанского (es-ES) и один для немецкого (de-DE). Языковые стандарты будут добавлены к двум действиям
в окне , как на этапе 3.Преобразовать JSON с помощью jq
-
В поле обоих действий введите выражение
{{@.outputs.result}}, свяжите с действиеми сохраните параметр.«Список языковых стандартов»
-
В поле одного действия введите выражение
map(select(.name == "es-ES"))|.[0]и свяжите с действием.«Список языковых стандартов»
Сохраните параметр.
-
Во втором действии введите выражение
map(select(.name == "de-DE"))|.[0]и свяжите с действием.«Список языковых стандартов»
Сохраните параметр.
-
-
Языковые стандарты теперь будут применены к созданию задания.
Настройте два действия
с теми же шаблонами, что были определены ранее.«Добавить целевой языковой стандарт к заданию»
-
Теперь задание можно запустить.
Настройте действие
с теми же шаблонами, которые были определены ранее.«Запустить задание»