【问题标题】:Azure devops multi stage YML build pipelines does not allow agent pool name as variable with approvals & checks on agent poolAzure devops 多阶段 YAML 构建管道不允许代理池名称作为对代理池进行批准和检查的变量
【发布时间】:2021-09-17 23:13:30
【问题描述】:

如果对代理应用批准和检查,Azure devops 多阶段 YML 构建管道不允许代理池名称作为变量,并且在管道运行时会出现以下错误。

错误

##[错误]作业正在使用未评估检查的受保护资源队列:MY_AGENT_PROD,队列:MY_AGENT_PROD。更多详情请参考https://aka.ms/pipelinechecks

示例

私人代理池名称为:“MY_AGENT_PROD”, Applied Security > Approvals & Check > Approvals(添加了一个可以批准的组)

我的管道:添加了管道变量 agent.pool.name=MY_AGENT_PROD

stages:
  - stage:
    jobs:
      - job:
        displayName: "READ_PARAM"
        pool:
          name: $(agent.pool.name)
        steps:
          - script: |
              echo appName: $(appName)

观察:如果直接使用池名而不是变量名,效果很好。

这是 ADO 管道中的错误吗?

我们不想在管道中硬编码代理池名称。

在管道变量中添加 my.agent.pool

【问题讨论】:

  • 你考虑用runtime parameters 替换这个变量吗?
  • 但是对于运行时参数,我们还需要在我们不想要的管道中对其进行硬编码。如果您在运行时说文本框,那么我们也不想要(用户每次运行时都必须输入池名称)。

标签: azure-devops azure-pipelines


【解决方案1】:

当我使用宏方法使用变量($(variable))时,我可以重现同样的问题。

要解决这个问题,需要改用[模板表达式][1] (${{ variables.var }})。

同时需要将变量名修改为agent_pool_name

这是我的例子:

variables:
  agent_pool_name : my.agent.pool

stages:
  - stage:
    jobs:
      - job:
        displayName: "READ_PARAM"
        pool:
          name: ${{ variables.agent_pool_name }}
        steps:
          - script: |
              echo appName: AA

这个问题的原因可能是添加检查的过程发生在运行之前。

【讨论】:

  • 您是否将代理池名称硬编码(默认)保存在“变量:agent_pool_name:默认”中
  • 我使用管道变量来保留agent.pool.name=MY_AGENT_NAME,即使使用模板表达式也会出现同样的错误
  • 变量是在哪里设置的?在变量组还是其他地方?
  • 在管道变量中:Azure devops > 管道 > 选择管道 > 编辑 > 变量:
  • 在变量Option中定义变量时,模板编译后值不会传给YAML,所以还是存在这个问题,需要定义变量给Yaml才行跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
  • 2022-11-12
  • 2021-05-13
  • 1970-01-01
  • 2020-12-21
  • 2021-09-08
相关资源
最近更新 更多