2017-07-17 108 views
1

我一直在为此奋斗了一天以上。我在VSTS CI/CD管道中有一个简单的要求,我试图建立任何遵循模式release/*hotfix/*的分支应该触发部署到我的QA环境。下面是我基于支路的构成:CI/CD部署条件不触发

enter image description here

预期此配置不触发部署。正如你在下面的屏幕截图中看到的那样,该版本运行但没有触发我的任何环境。 (QA是右侧第二个灰色方块,根据部署是成功还是失败,应为绿色或红色)。

enter image description here

在试图解决这个问题,我试图用建立标签来代替。我添加了一个Powershell步骤,该步骤根据分支的名称有条件地添加Build Tags。

$branchName = $Env:BUILD_SOURCEBRANCH 

if ($branchName -like '*release/*') 
{ 
    Write-Host "##vso[build.addbuildtag]release" 
} 

if ($branchName -like '*hotfix/*') 
{ 
    Write-Host "##vso[build.addbuildtag]hotfix" 
} 

正确设置构建标记,因为我可以在构建工件和标记所应用的日志上看到它们。然而,修改我的部署条件是标签完全相同的行为,知道结果使用我尝试分支:

enter image description here enter image description here

编辑: 按照要求,这里是中获取源代码的CI定义显示的步骤。这里没有选择添加多个分支条件的选项。它们在触发器部分中设置。

Get Sources CI Config CI Triggers

+0

你用一个分支而不是通配符模式试过吗? –

+0

@DanielMann是的,它唯一触发的时间是如果我指定一个特定的分支名称。作为临时解决方案,我可以手动添加已知的发行版/修补程序分支,但VSTS应该支持更智能的部署条件。所有通过用户界面,他们让你做模式匹配 –

+0

你也可以分享释放工件的设置?它是一个构建?如果是,则在构建定义中共享“获取源”步骤的设置。 –

回答

1

这通常是由两种不同的条件造成了同一时间配置,因为VSTS使用“AND”操作符,而不是“OR”操作在这里。在这种情况下,部署条件如下所示:"Artifact Branch from Release/*" AND "Artifact Branch from Feature/*"无法满足。如果您双击“版本28”打开它并将鼠标移动到“我”图标上,您应该看到它未被触发的原因。请检查是否是我上面提到的原因。

enter image description here

解决方法是创建一个新的部署环境和克隆从QA的设置,然后将两个条件在两个环境中分离出来。

+0

谢谢!我不敢相信这是最简单的事情。用户界面可以更清楚地了解如何应用条件来帮助避免这种混淆。 –