首页 > 解决方案 > 一次运行单个 SQL 构建管道

问题描述

TLDR

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

1.) 如何将共享资源的构建一次限制为 1 个代理?我一直在寻找一种命名的 azure 代理,它可以受到限制或添加某种一次只能使用一个的命名空间。

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

细节

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

这是我正在使用的代理

在此处输入图像描述

标签: azure-sql-databaseazure-pipelines

解决方案


如果我理解正确,请限制一个代理进行构建。您可以尝试以下步骤。

首先转到您的构建管道,编辑您的管道。指定管道的需求。然后管道将仅在满足需求的代理上运行。

例如,如果我指定如下图所示的要求。然后管道将仅在名为 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 Pipelines代理池,您可以在其中指定特定代理来运行您的管道。

在此处输入图像描述

希望您能从中受益。


推荐阅读