循环可以在工作流中实现,以根据定义的条件重复一组任务。
循环配置可以在块配置的选项卡中访问,或通过右键单击一个块并选择。
循环设置需要一个操作对象的列表:
-
普通的单一值,这些值可以在任务参数中使用,例如
{{ @item }}。 -
一个.JSON对象,其中对象中的每个元素可以通过其键进行访问,例如
{{ @item.key }}。
访问循环的汇总结果
所有迭代的输出可以在循环完成后作为.JSON数组访问。每次迭代的输出必须是有效的.JSON文件。
可以定义四种循环类型,并在字段中选择:
-
withSequence
-
withItems
-
withComplexItems
-
withParam
带序列循环允许在数字序列上进行迭代或在工作流中生成一系列值。
它可以用于在特定次数内重复一组步骤或根据一系列值执行操作。
要创建一个示例带序列循环,请按照以下步骤操作:
-
选择一个空块并打开配置。
-
点击编辑循环。
配置选项被呈现。
-
在字段中,选择带序列。
-
在字段中输入循环迭代的次数。
-
可选地,输入循环应开始和/或结束的值。
-
点击 保存循环。
-
在 配置中,点击 编辑参数。
配置选项已呈现。
-
在 字段中,输入
{{ @item }}并点击 保存参数。该值将在运行时转换。
例如,如果计数设置为 3,起始值为 2,则此循环的结果将是:
-
loop list => ["2", "3", "4"] -
{{ @item }} => 2或3或4,基于迭代
带有项目 循环允许对项目列表进行迭代。
当需要基于项目列表执行操作时,可以使用它。
要创建一个示例 带有项目 循环,请按照以下步骤操作:
-
选择一个空块并打开配置。
-
点击编辑循环。
配置选项被呈现。
-
在 字段中,选择 带有项目
-
在 字段中输入
en并点击 +条目(创建另一个 字段)。 -
在第二个 字段中输入
de并创建第三个字段。 -
在第三个 字段中输入
fr并创建第四个字段。 -
在第四个 字段中输入
us。 -
点击 保存循环。
-
在 配置中,点击 编辑参数。
配置选项已呈现。
-
在 字段中,输入
{{ @item }}并点击 保存参数。该值将在运行时转换。
此循环的结果将是对语言代码列表的迭代:
-
loop list => ["en", "de", "fr", "ua"] -
{{ @item }} => en或de .. ua
withComplexItems 循环可以对对象列表进行迭代。
当需要根据复杂项目列表执行操作时,可以使用它。
要创建一个示例 withComplexItems 循环,请按照以下步骤操作:
-
选择一个空块并打开配置。
-
点击编辑循环。
配置选项被呈现。
-
从 字段中,选择 withComplexItems
-
点击 +Key:value 添加第二个键。
-
对于 ,输入以下内容:
-
-
: 名称
-
: 项目 1
-
-
-
: ID
-
: 11
-
-
-
点击 +Object 添加第二个对象,并点击 +Key:value 添加第二个键。
-
对于 ,输入以下内容:
-
-
: 名称
-
: 项目 2
-
-
-
: ID
-
: 22
-
设置示例:
-
-
在 配置中,点击 编辑参数。
配置选项已呈现。
-
在 字段中,输入
{{ @item.name }}并点击 保存参数。该值将在运行时转换。
此循环的结果将是对项目列表的迭代:
-
loop list=>[ { "name": "项目 1", "id": 11 }, { "name": "项目 2", "id": 22 } ] -
{{ @item }}=>{ "name": "项目 1", "id": 11 } -
{{ @item.name }}=>项目 1 -
{{ @item.id }}=>11
withParam 循环允许对从任何先前任务或触发器输出的动态列表进行迭代。
此循环仅用作参数字段中的参考。
示例:
任务的输出 (Strings: 发布版本):
{
"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": "我的安卓项目",
"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 }}=>开发或生产