允许PR构建验证构建而不发布工件

时间:2018-06-13 20:24:21

标签: git azure-devops azure-pipelines azure-pipelines-release-pipeline

我试图在我们的主分支上为PR设置一些构建验证(我们正在使用Git和VSTS)。我添加了一些构建策略来启动各种构建,具体取决于哪些文件已更改。在某些背景下,我们在流程的早期阶段创建了PR,因此我们可以在开发功能分支时跟踪更改并添加注释。

现在,我希望这些构建能够运行并成功完成PR,但是,我不希望发布这些构建的输出(工件)。我们的发布会查看要部署的最新构建工件,在这种情况下,最新的构建工件将来自PR。如果我们确实允许发布来自PR的这些构建工件,那么我们将发布功能分支代码(来自PR)到我们的主站点,这是不可取的(我们有一个单独的发布处理我们的功能分支站点)。

基本上,在进行PR时,我只想运行构建以确保一切都是犹太教,然后在构建完成后丢弃它。

除了为PR验证创建构建定义之外,我不确定我能做什么。我已经用Google搜索并问了一下,但我要么没有问正确的问题,要么答案并不像我希望的那样简单。

希望我已经包含足够的细节来解释我的问题。

TL; DR

如何在没有发布选择的情况下在PR上运行构建验证并部署由验证构建产生的构建工件?

编辑(更多细节)

我尝试在发布任务中添加条件(也尝试将发布置于阶段并有条件地运行)。但是,当我去创建一个新版本时,它仍然会看到运行的构建定义。现在,我想,如果我尝试发布该构建定义,它将失败,因为没有创建工件。但是,当我正在发布时,我甚至不想看到构建定义(不要意外地选择它)。

2 个答案:

答案 0 :(得分:2)

您可以在构建定义的最后将发布工件任务设置为自己的阶段,然后使用'运行此阶段'使用变量表达式'自定义条件'。您也可以在任务级别执行此操作,如Dan在下面的评论中所建议的那样。



not(eq(variables['Build.Reason'], 'PullRequest'))




https://docs.microsoft.com/en-us/vsts/pipelines/process/conditions?view=vsts

答案 1 :(得分:2)

您可以遵循多个选项来跳过PR构建验证的发布工件。

选项1:使用单独的构建定义进行PR构建验证

您可以克隆当前构建定义,并分别使用克隆构建定义进行PR构建验证。

enter image description here

在克隆的构建定义中,您可以删除不希望PR构建验证执行的任务(例如删除发布构建工件任务)。

选项2:使用客户条件跳过执行发布构建工件任务

或者你可以使用custom conditions来有条件地运行任务(正如Calidus和Daniel提到的那样)。

例如为Publish Build Artifacts任务添加以下自定义条件(如果构建用于PR验证,则不执行任务):

ne(variables['Build.Reason'], 'PullRequest')

enter image description here