gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:06:29 26 4
gpt4 key购买 nike

我正在寻找用于动态运行 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com