背景
我在VSTS中设置了一个项目,它构建我的解决方案并运行octopack将包推送到我的章鱼部署Feed。我正在使用本地构建代理和本地章鱼部署服务器。
目前手动触发构建。
该项目经常处理,有多次提交。
目前还没有使用分支机构,原因有多种,它并不理想,但我现在必须与之合作。
问题
并非所有提交项目的提交都应该部署。 CI触发器和调度触发器将导致多个包被推送到章鱼部署。并非所有这些都是候选版本。
我想远离手动触发构建。长期目标是让其他人在没有我参与的情况下运行章鱼部署版本。
问题
是否可以使用提交消息触发VSTS构建或octopack?
如果没有,是否还有其他方法可以解决这个问题,或者我是否会遇到手动触发器,直到我可以对分支问题进行排序?
答案 0 :(得分:2)
不,没有办法通过提交消息触发VSTS构建或octopack。
另一种方法是在构建定义的开头添加一个powershell任务来检查最新的提交消息。如果提交消息包含要求构建的单词,那么继续。否则直接使构建失败。然而,这将导致许多失败的构建。或者您可以创建一个由commit触发的构建定义。该定义仅包括一个powershell任务来检查最新的提交消息。当提交消息包含要求构建的单词时,则通过stricter equivalent触发原始构建定义,否则不执行任何操作。
答案 1 :(得分:2)
现在,在您问了这个问题2年后,这就是我的做法:
有一个预定义的构建变量 $(Build.SourceVersionMessage),它将为您提供确切的 commit消息,它存在但未记录,有一个{ {3}},将其包含到issue created中。
还有一个名为 Conditional Expressions (条件表达式)的功能,其中的更多信息official docs。
考虑到这一点,您可以创建一个CI管道,该管道将在每次将提交推送到存储库时执行,但是在您的任务中,您可以在控制选项内创建 Conditional Expression 标签,它将执行某种“逻辑”来执行或跳过任务,而不会破坏整个管道,如下所示:
在我的情况下,我检查提交中是否包含FULLBUILD字样,然后执行任务。
条件:和(成功(),包含(变量['Build.SourceVersionMessage'],'完整的'))
这些是条件成功或失败时(不失败整个管道:D)的管道执行日志。
希望对您有所帮助:)