我正在寻找动态运行Azure管道的架构解决方案。让我们假设我将有一个包含各种实体信息的数据库。每个实体都拥有执行特定软件所需的基本信息。实体的数量将随着时间的推移而增加。因此,我想创建一个管道,从数据库中读取数据(这是一个简单的步骤),然后根据该信息生成适当数量的作业。这是因为每个实体都需要在单个VM上运行。所有数据都是可重复的。
我最初的想法是创建一个新的YAML模板文件,然后在第一个管道中覆盖它以触发适当的操作。然而,这种方法似乎有些不雅,我担心它的有效性。
有人遇到过类似的情况吗?不幸的是,由于可以同时执行的管道数量有限,我正在寻求解决方案。
2条答案
按热度按时间sigwle7e1#
恐怕我们无法通过单一的管道来满足您的需求。
获取示例数量和设置Pipeline中的作业数量的步骤不能同时完成。
根据您的要求,我建议您可以使用两个管道来实现这一点。一个管道用于获取示例的数量,并通过Rest API将值传递给另一个管道:Runs - Run Pipeline,另一个使用对象类型parameters来循环所有示例并设置作业号。
请参考以下步骤:
对于要获取示例数量的管道,您可以获取所有示例名称并将其传递给另一个管道:
举例来说:
对于要设置作业的管道,您可以定义对象参数并循环所有值。
举例来说:
测试结果:
当我们将3个示例传递给管道时,它将创建3个作业。
你也可以参考我的另一张票。
nwsw7zdq2#
可能矩阵作业才是正确的解决方法。
您只需要在数据收集任务中构建简单的JSON。
将其作为管道变量输出。
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#understand-variable-syntax
为下面的“Matrix”创建依赖项作为收集任务,并使用JSON中的变量作为脚本的参数。
基于示例JSON,您将获得两个具有名称的作业:
这两个作业将各自的变量传递给脚本。更多信息:https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/jobs-job-strategy?view=azure-pipelines