我有一个要求,如果要运行“发布工件”任务,我想跳过所有即将发生的任务。只有在运行管道时将变量之一设置为“ true”,才运行发布工件任务。
parameters:
release: $(release)
- task: Bash@3
displayName: Release artifacts
condition: and(succeeded(), eq('${{ parameters.release }}', true))
inputs:
targetType: 'inline'
script: |
# Write your commands here
# Steps to release the artifacts ( gradle release plugin)
gradle release -Prelease.useAutomaticVersion=true
- task: Bash@3
- task: Bash@3
是否有一种退出/截断退出代码为0的管道的方法?我正在寻找一种功能,以在条件之一为真的情况下跳过所有即将执行的任务,而不必在所有任务中添加该检查?
原因:gradle版本将对gradle.properties进行修改,这将再次触发CI。
powershell
步骤之后添加一个Release artifacts
步骤。此powershell
步骤的执行条件仅是先前Release artifacts
步骤成功的条件。 在此powershell步骤中,您可以运行一个api来取消当前管道。简而言之,一旦Release artifacts
步骤执行成功,跳过所有后续步骤和作业并直接取消当前管道。
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
[String]$project = "$env:SYSTEM_TEAMPROJECT"
[String]$OrgUri = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
$header = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
$pipeline = $OrgUri + $project + "/_apis/build/builds/" + $(Build.BuildId) + “?api-version=6.0-preview.5"
$Body=@"
{"status":4}
"@
Invoke-RestMethod -Uri $pipeline -Method PATCH -Body $Body -ContentType "application/json" -Headers $header
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)