具有gradle释放功能的Azure CI管道-跳过任务

问题描述 投票:0回答:2

我有一个要求,如果要运行“发布工件”任务,我想跳过所有即将发生的任务。只有在运行管道时将变量之一设置为“ 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。

azure-devops azure-pipelines azure-pipelines-build-task
2个回答
0
投票
我有另一个主意。您可以在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)

© www.soinside.com 2019 - 2024. All rights reserved.