可以在工作流中实现循环,以根据定义的条件重复执行一组任务。
循环配置可在块配置的 选项卡中访问,或通过右键点击块并选择 来访问。
循环设置需要一个操作对象列表:
-
普通、单一的值,随后可在任务参数(如
{{ @item }})中使用。 -
一个 .JSON 对象,其中对象中的每个元素都可以通过其键(如
{{ @item.key }})进行寻址。
访问循环的聚合结果
循环完成后,可以以 .JSON 数组的形式访问所有迭代的输出。每次迭代的输出必须是有效的 .JSON 文件。
有四种循环类型可供定义,并在 字段中进行选择:
-
withSequence
-
withItems
-
withComplexItems
-
withParam
withSequence 循环支持在工作流中对数字序列进行迭代或生成一系列值。
它可用于重复执行一组步骤特定次数,或基于一系列值执行操作。
要创建示例 withSequence 循环,请按照以下步骤操作:
-
选择一个空块并打开 配置。
-
点击 Edit loop。
显示 配置选项。
-
在 字段中,选择 withSequence。
-
在 字段中输入循环迭代次数。
-
(可选)输入循环应开始和/或结束的值。
-
点击 保存循环。
-
在 配置中,点击 编辑参数。
显示配置选项。
-
在 字段中,输入
{{ @item }}并点击 保存参数。此值将在运行时转换。
例如,如果计数设置为 3 且起始值为 2,则此循环的结果将为:
-
loop list => ["2", "3", "4"] -
{{ @item }} => 2或3或4,基于迭代
withItems 循环支持对条目列表进行迭代。
当需要基于条目列表执行操作时,可以使用它。
要创建示例 withItems 循环,请按照以下步骤操作:
-
选择一个空块并打开 配置。
-
点击 Edit loop。
显示 配置选项。
-
在 字段中,选择 withItems
-
在 字段中输入
en并点击 +条目(将创建另一个 字段)。 -
在第二个 字段中输入
de并创建第三个字段。 -
在第三个 字段中输入
fr并创建第四个字段。 -
在第四个 字段中输入
us。 -
点击 保存循环。
-
在 配置中,点击 编辑参数。
显示配置选项。
-
在 字段中,输入
{{ @item }}并点击 保存参数。此值将在运行时转换。
此循环的结果将是对语言代码列表的迭代:
-
loop list => ["en", "de", "fr", "ua"] -
{{ @item }} => en或de .. ua
withComplexItems 循环支持遍历对象列表。
当需要基于复杂项目列表执行操作时,可以使用它。
要创建示例 withComplexItems 循环,请按照以下步骤操作:
-
选择一个空块并打开 配置。
-
点击 Edit loop。
显示 配置选项。
-
在 字段中,选择 withComplexItems
-
点击 +键:值 以添加第二个键。
-
对于 ,输入以下内容:
-
-
: name
-
: 项目 1
-
-
-
: ID
-
: 11
-
-
-
点击 +对象 以添加第二个对象,并点击 +键:值 以添加第二个键。
-
对于 ,输入以下内容:
-
-
: name
-
: 项目 2
-
-
-
: ID
-
: 22
-
设置示例:
-
-
在 配置中,点击 编辑参数。
显示配置选项。
-
在 字段中,输入
{{ @item.name }}并点击 保存参数。此值将在运行时转换。
此循环的结果将是对项目列表的迭代:
-
循环列表=>[ { "name": "项目 1", "id": 11 }, { "name": "项目 2", "id": 22 } ] -
{{ @item }}=>{ "name": "项目 1", "id": 11 } -
{{ @item.name }}=>项目 1 -
{{ @item.id }}=>11
withParam 循环支持对任何先前任务或触发器输出的动态列表进行迭代。
此循环仅在参数字段中用作参考。
例如:
任务 (Strings: Publish a release) 的输出:
{
"created_at": "2015-01-28T09:52:53Z",
"environments": ["development", "production"],
"id": "abcd1234cdef1234abcd1234cdef1234",
"locales": [
{
"code": "en-GB",
"id": "abcd1234cdef1234abcd1234cdef1234",
"name": "English"
},
{
"id": "abcd5678cdef5678abcd5678cdef5678",
"name": "German",
"code": "de_DE"
}
],
"platforms": ["android"],
"project": {
"created_at": "2015-01-28T09:52:53Z",
"id": "abcd1234cdef1234abcd1234cdef1234",
"main_format": "xml",
"name": "My Android Project",
"updated_at": "2015-01-28T09:52:53Z"
},
"updated_at": "2015-01-28T09:52:53Z",
"version": 1
}
如果循环设置 设置为 {{ $.locales }},则:
-
列表=>[ { "code": "en-GB", "id": "abcd1234cdef1234abcd1234cdef1234", "name": "English" }, { "id": "abcd5678cdef5678abcd5678cdef5678", "name": "German", "code": "de_DE" } ] -
第一个
{{ @item }}=>{ "code": "en-GB", "id": "abcd1234cdef1234abcd1234cdef1234", "name": "English" } -
{{ @item.code }}=>en-GB -
{{ @item.name }}=>英语
或者如果引用了 {{ $.environments }},则:
-
loop list=>["development", "production"] -
{{ @item }}=>development或production