Azure sql database 一次运行单个SQL生成管道

Azure sql database 一次运行单个SQL生成管道,azure-sql-database,azure-pipelines,Azure Sql Database,Azure Pipelines,TLDR 我希望一次只运行一个构建实例,该实例共享一个资源,该资源一次只能处理一次执行,同时仍然能够在其他构建上一次运行多个代理。另一个选项是在构建中运行Azure SQL数据库实例(如果可能的话) 1.)如何将共享资源的生成一次限制为一个代理?我正在寻找一个命名的azure代理,它可以被限制或添加某种名称空间,一次只能使用一个名称空间 2.)作为构建管道的一部分测试SQL安装脚本的更好方法是什么 详细信息 我在Azure中设置了几个构建管道和发布管道。我的一个管道正在测试用于初始化数据库新实例

TLDR

我希望一次只运行一个构建实例,该实例共享一个资源,该资源一次只能处理一次执行,同时仍然能够在其他构建上一次运行多个代理。另一个选项是在构建中运行Azure SQL数据库实例(如果可能的话)

1.)如何将共享资源的生成一次限制为一个代理?我正在寻找一个命名的azure代理,它可以被限制或添加某种名称空间,一次只能使用一个名称空间

2.)作为构建管道的一部分测试SQL安装脚本的更好方法是什么

详细信息

我在Azure中设置了几个构建管道和发布管道。我的一个管道正在测试用于初始化数据库新实例的大型SQL脚本。这是使用Azure SQL执行查询任务执行的。运行SQL时遇到的任何错误都应该作为失败的构建回退到Github。然而,当我将代理的数量从1增加到2时,我偶尔会遇到一个问题,即在前一个构建完成之前触发构建。这将破坏第一个构建

这是我正在使用的代理


如果我理解正确,将一个代理限制为生成。您可以尝试以下步骤

首先转到构建管道,编辑管道。指定管道的需求。那么管道将只在满足需求的代理上运行

例如,如果我指定如下pic所示的需求。然后管道将仅在名为agentname的代理上运行

您可以找到代理的详细功能并定义自定义功能。进入项目设置页面的管道下的代理池。 选择您的代理池,选择您的代理,然后添加新的能力以添加自定义功能。然后,您可以根据需要使用自定义的功能。

更新:

在yaml样式的管道中,您可以通过定义vmImage指定要运行管道的代理,查看详细信息

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管道代理池,在那里您可以指定一个特定的代理来运行管道


希望您能对此有所帮助。

您的测试过程应该负责创建和删除测试上下文所需的任何资源。@DanielMann我希望它能够这样做,但我还没有找到一个能够使用SQL Server数据库这样做的任务。我曾考虑让它启动一个新的Azure SQL实例来运行脚本,但在第一次构建中断时,可能需要大量的工作来执行任何错误消息?一次限制一个代理。我认为您可以使用我在下面发布的代理请求。为了清楚地了解如何在新状态下创建数据库,我先删除所有内容,然后在完成创建之前创建所有内容,第二个可能会启动并删除打破依赖关系的内容。当使用Azure代理时,是否可以创建代理的命名实例?或者这取决于对所有azure代理的独占访问吗?不知道我是否正确理解你?在yaml管道中,您可以为代理名称定义
vmImage
,以指定要运行管道的代理。检查以上更新。如果您满意的话,您可以将管道更改为yaml样式。我能够找到答案。我添加了“sqlrunner”,然后添加了exists,而不是Agent.Name(它不会出错,但会消失)。我需要验证它没有在第二个托管代理上运行,以确保这很好,我认为您可以发布您的解决方案,以防其他人可能遇到类似的问题。