vs 团队服务使用提交消息触发构建

Posted

技术标签:

【中文标题】vs 团队服务使用提交消息触发构建【英文标题】:vs team services trigger build with commit message 【发布时间】:2016-04-28 07:54:47 【问题描述】:

背景

我在 VSTS 中设置了一个项目,它构建我的解决方案并运行 octopack 以将包推送到我的 octopus 部署提要。我正在使用本地构建代理和本地章鱼部署服务器。

当前构建是手动触发的。

该项目经常进行,有多次提交。

目前没有使用分支,这有多种原因,它并不理想,但这是我现在必须使用的。

问题

并非所有对项目的提交都应部署。 CI 触发器和预定触发器将导致多个包被推送到 octopus 部署。并非所有这些都是候选版本。

我想摆脱手动触发构建。长期目标是让其他人在没有我参与的情况下运行章鱼部署版本。

问题

是否可以使用提交消息触发 VSTS 构建或 octopack?

如果没有,是否有任何其他方法可以解决此问题,或者我是否坚持使用手动触发器,直到我可以对分支问题进行排序?

【问题讨论】:

可能相关:docs.microsoft.com/en-us/azure/devops/pipelines/repos/… 【参考方案1】:

现在,在您提出这个问题 2 年后,我就是这样做的:

有一个预定义的构建变量$(Build.SourceVersionMessage),它会为您提供准确的提交消息,现在记录在the official docs 中。 p>

还有一个名为条件表达式的功能,更多信息here。

考虑到这一点,您可以创建一个 CI 管道,每次将提交推送到存储库时都会执行该管道,但是在您的任务中,您可以在 控制选项中创建 条件表达式选项卡会执行某种“逻辑”来执行或跳过任务,而不会使整个管道失败,如下所示:

在我的例子中,我检查提交是否包含单词 FULLBUILD,如果是,我执行任务。

条件: and(succeeded(), contains(variables['Build.SourceVersionMessage'], 'FULLBUILD'))

这些是条件成功或失败时的管道执行日志(没有失败整个管道:D)。

条件成功:

条件失败:

希望对某人有所帮助:)

【讨论】:

这应该设置为正确答案!谢谢分享! 此变量仅在步骤级别可用,在作业和阶段级别均不可用(即在作业开始并签出代码之前不会提取消息)。 试过了,效果很好!此答案适用于 Azure DevOps 管道。【参考方案2】:

不,没有任何方法可以通过提交消息触发 VSTS 构建或 octopack。

另一种方法是在构建定义的开头添加一个 powershell 任务来检查最新的提交消息。如果提交消息包含要求构建的词,那么继续。否则直接使构建失败。然而,这将导致许多失败的构建。或者您可以再创建一个由提交触发的构建定义。该定义仅包含一个用于检查最新提交消息的 powershell 任务。当提交消息包含请求构建的字样时,然后通过VSTS Rest API 触发您的原始构建定义,否则,什么都不做。

【讨论】:

现在 4 年后,Azure Devops 是否提供按作业或按阶段提交消息触发器?

以上是关于vs 团队服务使用提交消息触发构建的主要内容,如果未能解决你的问题,请参考以下文章

VSTS 发布拉取请求构建触发器

jenkins构建触发器定时任务

如何让 atlassian 竹子从提交后挂钩自动触发构建

实战:向GitHub提交代码时触发Jenkins自动构建

创建Jenkins构建触发器,代码提交至gitLab即自动触发构建

Jenkins CI:如何在 SVN 提交上触发构建