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

Azure devops vs团队服务使用提交消息触发构建,azure-devops,octopus-deploy,octopack,Azure Devops,Octopus Deploy,Octopack,背景 我在VSTS中设置了一个项目,它构建了我的解决方案并运行octopack将包推送到我的octopus部署提要。我正在使用本地构建代理和本地八达通部署服务器 生成当前是手动触发的 该项目工作频繁,有多个提交 目前没有使用分支,这有各种原因,它并不理想,但这是我目前必须处理的问题 问题 不应部署对项目的所有提交。CI触发器和计划触发器将导致多个包被推送到octopus deploy。并不是所有这些都是候选发布 我不想手动触发构建。长期目标是让其他人在没有我参与的情况下运行八达通部署版本 问题

背景

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

生成当前是手动触发的

该项目工作频繁,有多个提交

目前没有使用分支,这有各种原因,它并不理想,但这是我目前必须处理的问题

问题

不应部署对项目的所有提交。CI触发器和计划触发器将导致多个包被推送到octopus deploy。并不是所有这些都是候选发布

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

问题

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


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

否,没有任何方法可以通过提交消息触发VSTS build或octopack


另一种方法是在生成定义的开始处添加powershell任务,以检查最新的提交消息。如果提交消息包含要请求构建的单词,则继续。否则将直接导致构建失败。然而,这将导致许多失败的构建。或者,您可以创建由提交触发的另一个生成定义。该定义仅包含一个powershell任务以检查最新提交消息。当提交消息包含要请求生成的单词时,则通过触发原始生成定义,否则,什么也不做。

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

有一个预定义的构建变量$(build.SourceVersionMessage),它将为您提供确切的提交消息,现已在中进行了说明

还有一个功能名为条件表达式,提供了它们的更多信息

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

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

条件:和(succeed(),包含(变量['Build.SourceVersionMessage'],'FULLBUILD'))

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

条件成功:

条件失败:


希望它能帮助一些人:)

这应该是正确的答案!谢谢分享!此变量仅在步骤级别上可用,在作业或阶段级别上都不可用(即,在作业启动并签出代码之前不会提取消息)。4年后,Azure Devops是否提供了每个作业或每个阶段提交消息触发器?