【问题标题】:How to create Azure Pipeline Template to run a jobList all on the same agent?如何创建 Azure 管道模板以在同一个代理上运行一个 jobList?
【发布时间】:2022-12-15 12:08:04
【问题描述】:

我正在尝试制作一个采用 JobList 参数并运行所有作业的管道模板,同时确保它们每次都在同一个代理上运行。基本上,我一直采用的方法是尝试将 this answer 调整为通用模板格式。

这是我到目前为止所做的,我已经尝试了很多细微的调整,但没有通过调用它的管道上的验证测试。

parameters:
  - name: jobsToRun
    type: jobList
  - name: pool
    type: string
    default: Default
  - name: demands
    type: object
    default: []

jobs:
  - job:
    steps: 
      - script: echo "##vso[task.setvariable variable=agentName;isOutput=true;]$(Agent.Name)" 
    pool:
      name: ${{ parameters.pool }}
      demands:
      - ${{ each demand in parameters.demands }}:
          ${{ demand }}
  - ${{ each j in parameters.jobsToRun }}:
      ${{ each pair in j }}:
        ${{ pair.key }} : ${{ pair.value }}
      pool:
        name: Default
        demands:
        - Agent.Name -equals $(agentName)

我在这里做错了什么?如果我引用的那个答案是正确的,似乎应该是可能的,但似乎我只是有点偏离。

【问题讨论】:

  • 你得到的错误是什么?

标签: azure-devops azure-pipelines azure-pipelines-yaml


【解决方案1】:

工作中缺少姓名......,示例如下。

- job: 'test-Name'

步骤需要关联的作业和池才能运行在内部声明

 jobsToRun:
        - job: sample_job1
          displayName: "sample_job1"
          pool:
            name: "your_PoolName"
          steps:
            - script: |
                  echo "Hi"

在这个底部池声明中...... 水池: 名称:默认 需要: - Agent.Name -等于 $(agentName)

我不确定,但我已经尝试了很多次,但我认为这不能单独包含在作业中,因为每个单独的作业都作为参数传递。如果您使用的是模板,池定义需要在作业或作业模板内。

例子:

jobsToRun:
            - job: output_message_job1
              displayName: "in pipe Output Message Job"
              pool:
                name: "your_PoolName"
              steps:
                - script: |
                      echo "Hi"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2020-04-25
    • 1970-01-01
    • 2022-10-14
    • 2023-03-05
    • 2022-08-10
    相关资源
    最近更新 更多