azure - 动态创建管道中特定作业的数量

标签 azure azure-devops azure-pipelines

我正在寻找用于动态运行 Azure 管道的体系结构解决方案。假设我将有一个包含有关各种实体的信息的数据库。每个实体都拥有执行特定软件所需的基本信息。实体的数量将随着时间的推移而增加。因此,我想创建一个从数据库读取数据的管道(这是一个简单的步骤),然后根据该信息生成适当数量的作业。这是因为每个实体都需要在单个虚拟机上运行。所有数据都是可重复的。

我最初的想法是创建一个新的 YAML 模板文件,然后在第一个管道中覆盖它以触发适当的操作。然而,这种方法似乎有点不优雅,我对其有效性感到担忧。

有人遇到过类似的情况吗?不幸的是,由于可以同时执行的管道数量有限,我正在寻求解决方案。

最佳答案

恐怕我们无法通过单一 Pipeline 来满足您的需求。

获取实例数量和设置Pipeline中作业数量的步骤不能同时完成。

根据您的要求,我建议您可以使用两个管道来实现此目的。一个管道用于获取实例的数量,并通过 Rest API 将值传递到另一管道:Runs - Run Pipeline ,另一个使用对象类型 parameters循环所有实例并设置作业编号。

请引用以下步骤:

对于获取实例数量的管道,您可以获取所有实例名称并将它们传递给另一个管道:

例如:

$token = "PAT"

$url="https://dev.azure.com/{orgname}/{projectname}/_apis/pipelines/{PipelineID}/runs?api-version=5.1-preview"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$JSON = @'
{
  


  "resources": {
    "repositories": {
      "self": {
        "refName": "refs/heads/master"
      }
    }
  },
  "templateParameters": {
    "instances":"[instance1,instance2,instance3]"
   },



}
'@

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json

对于设置作业的管道,您可以定义对象参数并循环所有值。

例如:

pool:
  vmImage: ubuntu-20.04

parameters:
  - name: instances
    type: object
    default: []

jobs:
- ${{ each instance in parameters.instances }}: 
  - job: 
    steps:
      - script: echo ${{ instance }}

结果:

当我们将 3 个实例传递到管道时,它将创建 3 个作业。

enter image description here

您还可以引用my another ticket .

关于azure - 动态创建管道中特定作业的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77265923/

相关文章:

Azure Pipelines 如何以及在何处更改代理规范

azure - 在 YAML 中引用来自 KeyVault 的 SQL 用户名和密码

msbuild - 当 net461 引用 netstandard2.0 时,VSTS 在 Visual Studio Build 中失败

azure - .Net Core 2.1 Azure 回复 URL

javascript - 尝试使用 Node JS 设置 API 管理 REST API 身份验证

azure-devops - 从单个发布管道批准多个无序发布

visual-studio - Visual Studio Team Services - 编辑链接设置

azure - 有没有办法跟踪 Cosmos DB 更改历史记录

azure - 使用 VScode Azure 认知服务扩展一次在索引中插入多个文档。 (Azure 搜索服务)

reactjs - Azure React应用程序 'You do not have permission to view this directory or page'