vs team services 使用提交消息触发构建

vs team services trigger build with commit message

背景

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

构建当前是手动触发的。

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

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

问题

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

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

问题

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

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

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

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

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

有一个预定义的构建变量 $(Build.SourceVersionMessage),它会给你准确的 提交信息,它现在记录在 the official docs.

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

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

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

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

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

条件成功:

条件失败:

希望对大家有所帮助:)