借助变量和表达式,您可以在管道任务中使用输入参数和输出参数。您输入的参数会将管道任务绑定到一个或多个变量、表达式或条件,并会确定管道的运行行为。
管道可以运行简单或复杂的软件交付解决方案
将管道任务绑定在一起时,可以包括默认表达式和复杂表达式。因此,管道可以运行简单或复杂的软件交付解决方案。
要在管道中创建参数,请单击输入或输出选项卡,然后通过输入美元符号 $ 和表达式来添加变量。例如,此参数用作调用 URL 的任务输入:${Stage0.Task3.input.URL}。
变量绑定的格式使用名为 SCOPE 和 KEY 的语法组件。SCOPE 将上下文定义为输入或输出,KEY 则定义详细信息。在参数示例 ${Stage0.Task3.input.URL} 中,input 是 SCOPE,URL 是 KEY。
任何任务的输出属性都可以解析为任意数量的变量绑定嵌套级别。
要了解有关如何在管道中使用变量绑定的更多信息,请参见如何在 Automation Pipelines 管道中使用变量绑定。
将美元表达式与 SCOPE 和 KEY 结合使用以绑定管道任务
您可以通过在美元符号变量中使用表达式来将管道任务绑定在一起。将表达式输入为 ${SCOPE.KEY.<PATH>}。
为确定管道任务的行为,在每个表达式中,SCOPE 都是 Automation Pipelines 使用的上下文。SCOPE 将查找 KEY,它定义了任务执行的操作的详细信息。当 KEY 的值是嵌套对象时,您可以提供一个可选的 PATH。
这些示例介绍了 SCOPE 和 KEY,并向您展示了如何在管道中使用它们。
表 1.
使用 SCOPE 和 KEY
| SCOPE |
表达式的用途和示例 |
KEY |
如何在管道中使用 Scope 和 Key |
| input |
管道的输入属性: ${input.input1} |
输入属性的名称 |
要在任务中引用管道的输入属性,请使用以下格式:
tasks:
mytask:
type: REST
input:
url: ${input.url}
action: get
input:
url: https://www.vmware.com
|
| output |
管道的输出属性: ${output.output1} |
输出属性的名称 |
要引用用于发送通知的输出属性,请使用以下格式:
notifications:
email:
- endpoint: MyEmailEndpoint
subject: "Deployment Successful"
event: COMPLETED
to:
- [email protected]
body: |
Pipeline deployed the service successfully. Refer ${output.serviceURL}
|
| task input |
任务的输入: ${MY_STAGE.MY_TASK.input.SOMETHING} |
在通知中指示任务输入 |
当 Jenkins 作业启动时,它可以引用从任务输入触发的作业的名称。在这种情况下,请使用以下格式发送通知:
notifications:
email:
- endpoint: MyEmailEndpoint
stage: MY_STAGE
task: MY_TASK
subject: "Build Started"
event: STARTED
to:
- [email protected]
body: |
Jenkins job ${MY_STAGE.MY_TASK.input.job} started for commit id ${input.COMMITID}.
|
| task output |
任务的输出: ${MY_STAGE.MY_TASK.output.SOMETHING} |
在后续任务中指示任务的输出 |
要在任务 2 中引用管道任务 1 的输出,请使用以下格式:
taskOrder:
- task1
- task2
tasks:
task1:
type: REST
input:
action: get
url: https://www.example.org/api/status
task2:
type: REST
input:
action: post
url: https://status.internal.example.org/api/activity
payload: ${MY_STAGE.task1.output.responseBody}
|
| var |
变量: ${var.myVariable} |
引用端点中的变量 |
要对密码引用端点中的机密变量,请使用以下格式:
---
project: MyProject
kind: ENDPOINT
name: MyJenkinsServer
type: jenkins
properties:
url: https://jenkins.example.com
username: jenkinsUser
password: ${var.jenkinsPassword}
|
| var |
变量: ${var.myVariable} |
在管道中引用变量 |
要在管道 URL 中引用变量,请使用以下格式:
tasks:
task1:
type: REST
input:
action: get
url: ${var.MY_SERVER_URL}
|
| task status |
任务的状态: ${MY_STAGE.MY_TASK.status} ${MY_STAGE.MY_TASK.statusMessage} |
|
|
| stage status |
阶段的状态: ${MY_STAGE.status} ${MY_STAGE.statusMessage} |
|
|
默认表达式
可在管道中使用变量和表达式。此摘要包括您可以使用的默认表达式。
| 表达式 |
说明 |
${comments} |
管道执行请求时提供的注释。 |
${duration} |
管道执行的持续时间。 |
${endTime} |
执行管道的结束时间(如果结束)(UTC)。 |
${executedOn} |
管道执行的开始时间 (UTC),与开始时间相同。 |
${executionId} |
管道执行的 ID。 |
${executionUrl} |
在用户界面中导航到管道执行的 URL。 |
${name} |
管道的名称。 |
${requestBy} |
请求执行的用户的名称。 |
${stageName} |
当前阶段在阶段的范围内使用时的名称。 |
${startTime} |
管道执行的开始时间 (UTC)。 |
${status} |
执行的状态。 |
${statusMessage} |
管道执行的状态消息。 |
${taskName} |
当前任务在任务输入或通知中使用时的名称。 |
在管道任务中使用 SCOPE 和 KEY
您可以将表达式与任何支持的管道任务结合使用。以下示例展示了如何定义 SCOPE 和 KEY 并确认语法。这些代码示例使用 MY_STAGE 和 MY_TASK 作为管道阶段和任务名称。
要了解有关可用任务的更多信息,请参见 Automation Pipelines 中提供哪些类型的任务。
表 2.
控制任务
| 任务 |
Scope |
Key |
如何在任务中使用 Scope 和 Key |
| 用户操作 |
|
Input |
summary:用户操作请求的摘要 description:用户操作请求的描述 approvers:审批者电子邮件地址列表,其中每个条目可以是包含逗号的变量,也可以使用分号分隔电子邮件 approverGroups:平台和身份的审批者组地址列表 sendemail:(可选)如果设置为 true,则可以根据请求或响应发送电子邮件通知 expirationInDays:表示请求的到期时间的天数 |
${MY_STAGE.MY_TASK.input.summary} ${MY_STAGE.MY_TASK.input.description} ${MY_STAGE.MY_TASK.input.approvers} ${MY_STAGE.MY_TASK.input.approverGroups} ${MY_STAGE.MY_TASK.input.sendemail} ${MY_STAGE.MY_TASK.input.expirationInDays} |
|
Output |
index:表示请求的 6 位十六进制字符串 respondedBy:批准/拒绝用户操作的人员的帐户名称 respondedByEmail:响应人员的电子邮件地址 comments:响应期间提供的注释 |
${MY_STAGE.MY_TASK.output.index} ${MY_STAGE.MY_TASK.output.respondedBy} ${MY_STAGE.MY_TASK.output.respondedByEmail} ${MY_STAGE.MY_TASK.output.comments} |
| 条件 |
|
|
Input |
condition:要评估的条件。当条件的评估结果为 true 时,会将该任务标记为完成,而其他响应将导致任务失败 |
${MY_STAGE.MY_TASK.input.condition} |
|
Output |
result:评估结果 |
${MY_STAGE.MY_TASK.output.response} |
表 3.
管道任务
| 任务 |
Scope |
Key |
如何在任务中使用 Scope 和 Key |
| 管道 |
|
Input |
name:要运行的管道的名称 inputProperties:要传递到嵌套管道执行的输入属性 |
${MY_STAGE.MY_TASK.input.name} ${MY_STAGE.MY_TASK.input.inputProperties} # 引用所有属性 ${MY_STAGE.MY_TASK.input.inputProperties.input1} # 引用 input1 的值 |
|
Output |
executionStatus:管道执行的状态 executionIndex:管道执行的索引 outputProperties:管道执行的输出属性 |
${MY_STAGE.MY_TASK.output.executionStatus} ${MY_STAGE.MY_TASK.output.executionIndex} ${MY_STAGE.MY_TASK.output.outputProperties} # 引用所有属性 ${MY_STAGE.MY_TASK.output.outputProperties.output1} # 引用 output1 的值 |
表 4.
自动执行持续集成任务
| 任务 |
Scope |
Key |
如何在任务中使用 SCOPE 和 KEY |
| CI |
|
Input |
steps:一组字符串,表示要运行的命令 export:运行步骤后要保留的环境变量 artifacts:要保留在共享路径中的工件的路径 process:用于 JUnit、JaCoCo、Checkstyle、FindBugs 处理的配置元素集 |
${MY_STAGE.MY_TASK.input.steps} ${MY_STAGE.MY_TASK.input.export} ${MY_STAGE.MY_TASK.input.artifacts} ${MY_STAGE.MY_TASK.input.process} ${MY_STAGE.MY_TASK.input.process[0].path} # 引用第一个配置的路径 |
|
Output |
export:键值对,表示从输入 exports 中导出的环境变量 artifacts:已成功保留的工件的路径 process:输入 processResponse 的已处理结果集 |
${MY_STAGE.MY_TASK.output.exports} # 引用所有导出 ${MY_STAGE.MY_TASK.output.exports.myvar} # 引用 myvar 的值 ${MY_STAGE.MY_TASK.output.artifacts} ${MY_STAGE.MY_TASK.output.processResponse} ${MY_STAGE.MY_TASK.output.processResponse[0].result} # 第一个进程配置的结果 |
| 自定义 |
|
Input |
name:自定义集成的名称 version:自定义集成版本(已发布或已弃用) properties:要发送到自定义集成的属性 |
${MY_STAGE.MY_TASK.input.name} ${MY_STAGE.MY_TASK.input.version} ${MY_STAGE.MY_TASK.input.properties} # 引用所有属性 ${MY_STAGE.MY_TASK.input.properties.property1} # 引用 property1 的值 |
|
Output |
properties:自定义集成响应中的输出属性 |
${MY_STAGE.MY_TASK.output.properties} # 引用所有属性 ${MY_STAGE.MY_TASK.output.properties.property1} # 引用 property1 的值 |
表 5.
自动执行持续部署任务:云模板
| 任务 |
Scope |
Key |
如何在任务中使用 Scope 和 Key |
| 云模板 |
|
|
Input |
action:createDeployment、updateDeployment、deleteDeployment、rollbackDeployment 之 blueprintInputParams:用于创建部署和更新部署操作 allowDestroy:可以在更新部署过程中销毁计算机。 CREATE_DEPLOYMENT
blueprintName:云模板的名称
blueprintVersion:云模板的版本
或
fileUrl:选择 GIT 服务器后远程云模板 YAML 的 URL。
UPDATE_DEPLOYMENT 以下任意组合:
blueprintName:云模板的名称
blueprintVersion:云模板的版本
或
fileUrl:选择 GIT 服务器后远程云模板 YAML 的 URL。
------
或
------ DELETE_DEPLOYMENT
或
ROLLBACK_DEPLOYMENT 以下任意组合:
或
------
blueprintName:云模板的名称
rollbackVersion:要回滚到的版本
|
|
|
Output |
|
可以绑定到其他任务或管道输出的参数:
- 部署名称可以作为 ${Stage0.Task0.output.deploymentName} 进行访问
- 部署 ID 可以作为 ${Stage0.Task0.output.deploymentId} 进行访问
- 部署详细信息是一个复合对象,可以使用 JSON 结果访问内部详细信息。
要访问任何属性,请使用点运算符遵循 JSON 层次结构。例如,要访问资源 Cloud_Machine_1[0] 的地址,则 $ 绑定为: ${Stage0.Task0.output.deploymentDetails.resources['Cloud_Machine_1[0]'].address} 同样,对于特定实例,$ 绑定为: ${Stage0.Task0.output.deploymentDetails.resources['Cloud_Machine_1[0]'].flavor} 在 Automation Pipelines 用户界面中,可以获取任何属性的 $ 绑定。
- 在任务输出属性区域中,单击查看输出 JSON。
- 要查找 $ 绑定,请输入任何属性。
- 单击搜索图标,之后,将显示相应的 $ 绑定。
|
JSON 输出示例:
部署详细信息对象示例:
{
"id": "6a031f92-d0fa-42c8-bc9e-3b260ee2f65b",
"name": "deployment_6a031f92-d0fa-42c8-bc9e-3b260ee2f65b",
"description": "Pipeline Service triggered operation",
"orgId": "434f6917-4e34-4537-b6c0-3bf3638a71bc",
"blueprintId": "8d1dd801-3a32-4f3b-adde-27f8163dfe6f",
"blueprintVersion": "1",
"createdAt": "2020-08-27T13:50:24.546215Z",
"createdBy": "[email protected]",
"lastUpdatedAt": "2020-08-27T13:52:50.674957Z",
"lastUpdatedBy": "[email protected]",
"inputs": {},
"simulated": false,
"projectId": "267f8448-d26f-4b65-b310-9212adb3c455",
"resources": {
"Cloud_Machine_1[0]": {
"id": "/resources/compute/1606fbcd-40e5-4edc-ab85-7b559aa986ad",
"name": "Cloud_Machine_1[0]",
"powerState": "ON",
"address": "10.108.79.33",
"resourceLink": "/resources/compute/1606fbcd-40e5-4edc-ab85-7b559aa986ad",
"componentTypeId": "Cloud.vSphere.Machine",
"endpointType": "vsphere",
"resourceName": "Cloud_Machine_1-mcm110615-146929827053",
"resourceId": "1606fbcd-40e5-4edc-ab85-7b559aa986ad",
"resourceDescLink": "/resources/compute-descriptions/1952d1d3-15f0-4574-ae42-4fbf8a87d4cc",
"zone": "Automation / Vms",
"countIndex": "0",
"image": "ubuntu",
"count": "1",
"flavor": "small",
"region": "MYBU",
"_clusterAllocationSize": "1",
"osType": "LINUX",
"componentType": "Cloud.vSphere.Machine",
"account": "bha"
}
},
"status": "CREATE_SUCCESSFUL",
"deploymentURI": "https://api.yourenv.com/automation-ui/#/deployment-ui;ash=/deployment/6a031f92-d0fa-42c8-bc9e-3b260ee2f65b"
}
表 6.
自动执行持续部署任务:Kubernetes
| 任务 |
Scope |
Key |
如何在任务中使用 Scope 和 Key |
| Kubernetes |
|
Input |
action:GET、CREATE、APPLY、DELETE、ROLLBACK 之一
timeout:任何操作的整体超时
filterByLabel:要针对操作 GET 使用 K8S labelSelector 筛选的其他标签:
GET、CREATE、DELETE、APPLY
yaml:要处理并发送到 Kubernetes 的内嵌 YAML
parameters:键值对 - 将 $$KEY 替换为内嵌 YAML 输入区域中的 VALUE:
filePath:SCM Git 端点(如果已提供)中要从中获取 YAML 的相对路径
scmConstants:键值对 - 将 $${KEY} 替换为通过 SCM 获取的 YAML 中的 VALUE。
continueOnConflict:设置为 true 时,如果资源已存在,任务将继续执行。
ROLLBACK
resourceType:要回滚的资源类型
resourceName:要回滚的资源名称
namespace:必须执行回滚的命名空间
revision:要回滚到的修订版本
|
${MY_STAGE.MY_TASK.input.action} # 确定要执行的操作。 ${MY_STAGE.MY_TASK.input.timeout} ${MY_STAGE.MY_TASK.input.filterByLabel} ${MY_STAGE.MY_TASK.input.yaml} ${MY_STAGE.MY_TASK.input.parameters} ${MY_STAGE.MY_TASK.input.filePath} ${MY_STAGE.MY_TASK.input.scmConstants} ${MY_STAGE.MY_TASK.input.continueOnConflict} ${MY_STAGE.MY_TASK.input.resourceType} ${MY_STAGE.MY_TASK.input.resourceName} ${MY_STAGE.MY_TASK.input.namespace} ${MY_STAGE.MY_TASK.input.revision} |
|
Output |
response:捕获整个响应 response.<RESOURCE>:资源对应于 configMaps、部署、端点、输入、作业、命名空间、容器、replicaSets、Replicationcontroller、密钥、服务、statefulSets、节点、loadBalancers。 response.<RESOURCE>.<KEY>:键对应于 apiVersion、种类、元数据、规范之一 |
${MY_STAGE.MY_TASK.output.response} ${MY_STAGE.MY_TASK.output.response.} |
表 7.
集成开发、测试和部署应用程序
| 任务 |
Scope |
Key |
如何在任务中使用 SCOPE 和 KEY |
| Bamboo |
|
Input |
plan:计划的名称 planKey:计划键 variables:要传递到计划的变量 parameters:要传递到计划的参数 |
${MY_STAGE.MY_TASK.input.plan} ${MY_STAGE.MY_TASK.input.planKey} ${MY_STAGE.MY_TASK.input.variables} ${MY_STAGE.MY_TASK.input.parameters} # 引用所有参数 ${MY_STAGE.MY_TASK.input.parameters.param1} # 引用 param1 的值 |
|
Output |
resultUrl:生成的构建的 URL buildResultKey:生成的构建的键 buildNumber:内部版本号 buildTestSummary:运行的测试摘要 successfulTestCount:通过的测试结果数 failedTestCount:失败的测试结果数 skippedTestCount:跳过的测试结果数 artifacts:内部版本中的工件 |
${MY_STAGE.MY_TASK.output.resultUrl} ${MY_STAGE.MY_TASK.output.buildResultKey} ${MY_STAGE.MY_TASK.output.buildNumber} ${MY_STAGE.MY_TASK.output.buildTestSummary} # 引用所有结果 ${MY_STAGE.MY_TASK.output.successfulTestCount} # 引用特定的测试计数 ${MY_STAGE.MY_TASK.output.buildNumber} |
| Jenkins |
|
Input |
job:Jenkins 作业的名称 parameters:要传递到作业的参数 |
${MY_STAGE.MY_TASK.input.job} ${MY_STAGE.MY_TASK.input.parameters} # 引用所有参数 ${MY_STAGE.MY_TASK.input.parameters.param1} # 引用参数的值 |
|
Output |
job:Jenkins 作业的名称 jobId:生成的作业的 ID,例如 1234 jobStatus:Jenkins 中的状态 jobResults:测试/代码覆盖率结果的集合 jobUrl:生成的作业运行的 URL |
${MY_STAGE.MY_TASK.output.job} ${MY_STAGE.MY_TASK.output.jobId} ${MY_STAGE.MY_TASK.output.jobStatus} ${MY_STAGE.MY_TASK.output.jobResults} # 引用所有结果 ${MY_STAGE.MY_TASK.output.jobResults.junitResponse} # 引用 JUnit 结果 ${MY_STAGE.MY_TASK.output.jobResults.jacocoRespose} # 引用 JaCoCo 结果 ${MY_STAGE.MY_TASK.output.jobUrl} |
| TFS |
|
Input |
projectCollection:来自 TFS 的项目集合 teamProject:从可用集合中选择的项目 buildDefinitionId:要运行的构建定义 ID |
${MY_STAGE.MY_TASK.input.projectCollection} ${MY_STAGE.MY_TASK.input.teamProject} ${MY_STAGE.MY_TASK.input.buildDefinitionId} |
|
Output |
buildId:生成的构建 ID buildUrl:用于访问构建摘要的 URL logUrl:用于访问日志的 URL dropLocation:工件(如果有)的放置位置 |
${MY_STAGE.MY_TASK.output.buildId} ${MY_STAGE.MY_TASK.output.buildUrl} ${MY_STAGE.MY_TASK.output.logUrl} ${MY_STAGE.MY_TASK.output.dropLocation} |
| vRO |
|
Input |
workflowId:要运行的工作流的 ID parameters:要传递到工作流的参数 |
${MY_STAGE.MY_TASK.input.workflowId} ${MY_STAGE.MY_TASK.input.parameters} |
|
Output |
workflowExecutionId:工作流执行的 ID properties:工作流执行的输出属性 |
${MY_STAGE.MY_TASK.output.workflowExecutionId} ${MY_STAGE.MY_TASK.output.properties} |
表 8.
通过 API 集成其他应用程序
| 任务 |
Scope |
Key |
如何在任务中使用 SCOPE 和 KEY |
| REST |
|
Input |
url:要调用的 URL action:要使用的 TTP 方法 headers:要传递的 HTTP 标头 payload:请求负载 fingerprint:URL 为 https 时要匹配的指纹 allowAllCerts:设置为 true 时,可以是任何具有 https URL 的证书 |
${MY_STAGE.MY_TASK.input.url} ${MY_STAGE.MY_TASK.input.action} ${MY_STAGE.MY_TASK.input.headers} ${MY_STAGE.MY_TASK.input.payload} ${MY_STAGE.MY_TASK.input.fingerprint} ${MY_STAGE.MY_TASK.input.allowAllCerts} |
|
Output |
responseCode:HTTP 响应代码 responseHeaders:HTTP 响应标头 responseBody:收到的响应的字符串格式 responseJson:Traversable 响应(如果 content-type 为 application/json) |
${MY_STAGE.MY_TASK.output.responseCode} ${MY_STAGE.MY_TASK.output.responseHeaders} ${MY_STAGE.MY_TASK.output.responseHeaders.header1} # 引用响应标头“header1” ${MY_STAGE.MY_TASK.output.responseBody} ${MY_STAGE.MY_TASK.output.responseJson} # 引用 JSON 响应 ${MY_STAGE.MY_TASK.output.responseJson.a.b.c} # 在响应中的 a.b.c JSON 路径之后引用嵌套对象 |
| Poll |
|
Input |
url:要调用的 URL headers:要传递的 HTTP 标头 exitCriteria:任务成功或失败需要满足的条件。“成功”的键值对 → 表达式,“失败”→ 表达式 pollCount:要执行的迭代次数。Automation Pipelines 管理员最多可以将轮询计数设置为 10000。 pollIntervalSeconds:每次迭代之间等待的秒数。轮询时间间隔必须大于或等于 60 秒。 ignoreFailure:设置为 true 时,将忽略中间响应失败 fingerprint:URL 为 https 时要匹配的指纹 allowAllCerts:设置为 true 时,可以是任何具有 https URL 的证书 |
${MY_STAGE.MY_TASK.input.url} ${MY_STAGE.MY_TASK.input.headers} ${MY_STAGE.MY_TASK.input.exitCriteria} ${MY_STAGE.MY_TASK.input.pollCount} ${MY_STAGE.MY_TASK.input.pollIntervalSeconds} ${MY_STAGE.MY_TASK.input.ignoreFailure} ${MY_STAGE.MY_TASK.input.fingerprint} ${MY_STAGE.MY_TASK.input.allowAllCerts} |
|
Output |
responseCode:HTTP 响应代码 responseBody:收到的响应的字符串格式 responseJson:Traversable 响应(如果 content-type 为 application/json) |
${MY_STAGE.MY_TASK.output.responseCode} ${MY_STAGE.MY_TASK.output.responseBody} ${MY_STAGE.MY_TASK.output.responseJson} # Refer to response as JSON |
表 9.
运行远程脚本和用户定义的脚本
| 任务 |
Scope |
Key |
如何在任务中使用 SCOPE 和 KEY |
| PowerShell 要运行 PowerShell 任务,您必须:
|
|
Input |
host:计算机的 IP 地址或主机名 username:用于连接的用户名 password:用于连接的密码 useTLS:尝试 https 连接 trustCert:设置为 true 时,信任自签名证书 script:要运行的脚本 workingDirectory:运行脚本之前要切换到的目录路径 environmentVariables:要设置的环境变量的键-值对 arguments:要传递到脚本的参数 |
${MY_STAGE.MY_TASK.input.host} ${MY_STAGE.MY_TASK.input.username} ${MY_STAGE.MY_TASK.input.password} ${MY_STAGE.MY_TASK.input.useTLS} ${MY_STAGE.MY_TASK.input.trustCert} ${MY_STAGE.MY_TASK.input.script} ${MY_STAGE.MY_TASK.input.workingDirectory} ${MY_STAGE.MY_TASK.input.environmentVariables} ${MY_STAGE.MY_TASK.input.arguments} |
|
Output |
response:文件 $SCRIPT_RESPONSE_FILE 的内容 responseFilePath:$SCRIPT_RESPONSE_FILE 的值 exitCode:进程退出代码 logFilePath:包含 stdout 的文件的路径 errorFilePath:包含 stderr 的文件的路径 |
${MY_STAGE.MY_TASK.output.response} ${MY_STAGE.MY_TASK.output.responseFilePath} ${MY_STAGE.MY_TASK.output.exitCode} ${MY_STAGE.MY_TASK.output.logFilePath} ${MY_STAGE.MY_TASK.output.errorFilePath} |
| SSH |
|
Input |
host:计算机的 IP 地址或主机名 username:用于连接的用户名 password:用于连接的密码(可以选择性地使用 privateKey) privateKey:用于连接的 privateKey passphrase:用于解除锁定 privateKey 的可选密码短语 script:要运行的脚本 workingDirectory:运行脚本之前要切换到的目录路径 environmentVariables:要设置的环境变量的键-值对 |
${MY_STAGE.MY_TASK.input.host} ${MY_STAGE.MY_TASK.input.username} ${MY_STAGE.MY_TASK.input.password} ${MY_STAGE.MY_TASK.input.privateKey} ${MY_STAGE.MY_TASK.input.passphrase} ${MY_STAGE.MY_TASK.input.script} ${MY_STAGE.MY_TASK.input.workingDirectory} ${MY_STAGE.MY_TASK.input.environmentVariables} |
|
Output |
response:文件 $SCRIPT_RESPONSE_FILE 的内容 responseFilePath:$SCRIPT_RESPONSE_FILE 的值 exitCode:进程退出代码 logFilePath:包含 stdout 的文件的路径 errorFilePath:包含 stderr 的文件的路径 |
${MY_STAGE.MY_TASK.output.response} ${MY_STAGE.MY_TASK.output.responseFilePath} ${MY_STAGE.MY_TASK.output.exitCode} ${MY_STAGE.MY_TASK.output.logFilePath} ${MY_STAGE.MY_TASK.output.errorFilePath} |
如何在任务之间使用变量绑定
此示例说明了如何在管道任务中使用变量绑定。
表 10.
语法格式示例
| 示例 |
语法 |
| 为管道通知和管道输出属性使用任务输出值 |
${<Stage Key>.<Task Key>.output.<Task output key>} |
| 引用以前的任务输出值,作为当前任务的输入 |
${<Previous/Current Stage key>.<Previous task key not in current Task group>.output.<task output key>} |
了解更多
要了解有关任务中绑定变量的更多信息,请参见: