TLDR
我想一次只运行一个构建实例,而该实例共享一个资源,该资源一次只能处理一个执行,而同时仍然能够一次在其他构建上运行多个代理。另一种选择是在构建中运行Azure SQL数据库实例(如果可能的话)。
1。)如何将一次共享资源的构建限制为1个代理?我一直在寻找一种命名的Azure代理,该代理可以被限制或添加某种只能一次使用的命名空间。
2。)有什么更好的方法可以将SQL安装脚本作为构建管道的一部分进行测试。
详细信息
我在Azure中有几个构建管道和发布管道设置。我的管道之一是测试用于初始化数据库新实例的大型SQL脚本。这是使用Azure SQL Execute Query
任务执行的。运行SQL时遇到的任何错误都应该以失败的构建形式回踢到Github。但是,当我将代理程序的数量从1增加到2时,我时不时遇到一个问题,即在上一个完成之前触发构建的问题。这样会破坏第一个版本。
这是我正在使用的代理商
答案 0 :(得分:0)
如果我理解正确的话,则可以限制一个代理的构建。您可以尝试以下步骤。
首先转到您的构建管道,编辑管道。为管道指定需求。然后管道将仅在满足需求的代理上运行。
例如,如果我指定如下图所示的要求。然后,管道将仅在名为agentname的代理上运行。
您可以找到代理的详细功能并定义自定义功能。请转到项目设置页面中管道下的座席池。 选择您的代理程序池,选择您的代理程序,然后添加新功能以添加自定义功能。然后,您可以根据需要使用自定义定义的功能。
更新:
在yaml样式管道中,您可以通过定义 vmImage 来指定哪个代理运行您的管道,有关详细信息,请检查here
pool:
name: string # name of the pool to run this job in
demands: string | [ string ] ## see below
vmImage: string # name of the vm image you want to use
您还可以尝试使用 Azure Pipelines 代理程序池,在该池中可以指向特定的代理程序来运行您的管道。
希望您会发现这很有帮助。