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 团队服务使用提交消息触发构建的主要内容,如果未能解决你的问题,请参考以下文章