Azure devops CI/CD部署条件未触发
我已经为此奋斗了一天多了。我在尝试构建的VSTS CI/CD管道中有一个简单的要求,即遵循模式Azure devops CI/CD部署条件未触发,azure-devops,azure-pipelines,azure-pipelines-build-task,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines,Azure Pipelines Build Task,Azure Pipelines Release Pipeline,我已经为此奋斗了一天多了。我在尝试构建的VSTS CI/CD管道中有一个简单的要求,即遵循模式release/*或hotfix/*的任何分支都应该触发到我的QA环境的部署。以下是我基于分支的配置: 此配置不会按预期触发部署。正如您在下面的屏幕截图中看到的,该版本运行了,但没有针对我的任何环境触发。(QA是右侧的第二个灰色正方形,根据部署成功与否,应为绿色或红色) 为了解决这个问题,我尝试使用Build标记。我添加了一个Powershell步骤,该步骤根据分支的名称有条件地添加构建标记 $br
release/*
或hotfix/*
的任何分支都应该触发到我的QA环境的部署。以下是我基于分支的配置:
此配置不会按预期触发部署。正如您在下面的屏幕截图中看到的,该版本运行了,但没有针对我的任何环境触发。(QA是右侧的第二个灰色正方形,根据部署成功与否,应为绿色或红色)
为了解决这个问题,我尝试使用Build标记。我添加了一个Powershell步骤,该步骤根据分支的名称有条件地添加构建标记
$branchName = $Env:BUILD_SOURCEBRANCH
if ($branchName -like '*release/*')
{
Write-Host "##vso[build.addbuildtag]release"
}
if ($branchName -like '*hotfix/*')
{
Write-Host "##vso[build.addbuildtag]hotfix"
}
这正确地设置了构建标记,正如我在构建工件和应用标记的日志中看到的那样。但是,将部署条件修改为标记感知将导致与尝试使用分支完全相同的行为:
编辑:
根据要求,下面是CI定义,其中显示了获取源步骤。此处没有添加多个分支条件的选项。它们在触发器部分中设置
这通常是由于同时配置了两种不同的条件,因为VST在此处使用“AND”运算符而不是“OR”运算符。在此场景中,部署条件如下:
“发布的工件分支/*”和“功能的工件分支/*”
,这两个条件无法满足。如果您双击“Release 28”打开它并将鼠标移动到“i”图标上,您应该会看到它未被触发的原因。请检查这是否是我上面提到的原因
解决方法是创建一个新的部署环境,并从QA克隆设置,然后在两个环境中分离这两个条件。您是否使用单个分支而不是通配符模式进行了尝试?@DanielMann是的,它唯一触发的时间是我指定一个特定的分支名称。作为一种临时解决方法,我可以手动添加已知的发布/热修复分支,但VST应该支持更智能的部署条件。在整个UI中,它们允许您进行模式匹配。您还可以共享发布工件的设置吗?这是一个构建吗?如果是,还可以共享生成定义中“获取源代码”步骤的设置。@Eddie MSFT我已经用其他屏幕截图更新了问题,以显示这些配置谢谢!我真不敢相信事情最终会这么简单。用户界面在如何应用这些条件以帮助避免这种混淆方面肯定会更加清晰。