4

背景

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

构建当前是手动触发的。

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

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

问题

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

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

问题

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

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

4

2 回答 2

7

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

有一个预定义的构建变量$(Build.SourceVersionMessage),它会给你确切的提交信息,它现在记录在官方文档中。

还有一个称为条件表达式的功能,这里有更多信息。

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

测试 CI 流水线

在我的情况下,我检查提交是否包含单词 FULLBUILD,如果是,我执行任务。

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

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

成功条件: 测试-CI-条件成功

条件失败: 在此处输入图像描述

希望它对某人有帮助:)

于 2018-08-01T16:53:13.837 回答
3

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

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

于 2016-04-28T10:10:03.063 回答