首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将变量组参数从azure pipeline.yml传递到模板时遇到的问题

将变量组参数从azure pipeline.yml传递到模板时遇到的问题
EN

Stack Overflow用户
提问于 2022-06-09 08:54:24
回答 1查看 427关注 0票数 2

我已经声明了一个变量组,如下所示,该组对任何管道都没有任何限制:

我使用另一个名为vars.yml的模板来存储其他变量:

代码语言:javascript
运行
复制
variables:
- group: Agile-Connections
- name: extensions_dir
  value: /apps/agile/product/agile936/integration/sdk/extensions
- name: properties_dir
  value: /apps/agile/product/Properties
- name: build_name
  value: RestrictPreliminaryBOMPX.jar
- name: resource_name
  value: RestrictPreliminaryBOMPX.properties

我的Azure管道如下所示,它正在调用一个deploy.yml模板,我将两个参数(connectionenvironment)从azure pipeline.yml传递给deploy.yml。

下面是我的天蓝色管道。

代码语言:javascript
运行
复制
trigger:
- None

pool:
  name: AgentBuildAgile

stages:
- template: templates/build.yml
- stage: DEV_Deployment
  variables: 
  - template: templates/vars.yml
  jobs:
  - job:
    steps: 
      - script:
          echo $(Dev-mnode1)
  - template: templates/deploy.yml
    parameters:
      connection: $(Dev-mnode1)
      environment: 'DEV'

下面是我的deploy.yml:

代码语言:javascript
运行
复制
parameters:
- name: connection
- name: environment

jobs:
- deployment:
  variables:
    - template: vars.yml
  environment: ${{ parameters.environment  }}
  displayName: Deploy to ${{ parameters.environment  }}
  strategy:
    runOnce:
      deploy:
        steps:
          - script:
              echo Initiating Deployment ${{ parameters.connection  }}

- template: copy-artifact.yml
  parameters:
    connection: ${{ parameters.connection  }}
# - template: copy-resources.yml
#   parameters:
#     connection: ${{ parameters.connection  }}

从我的deploy.yml中,我将一个参数连接进一步传递到另一个名为copy-artifact.yml的模板,如下所示:

代码语言:javascript
运行
复制
parameters:
- name: connection

jobs:
- job:
  variables:
    - template: vars.yml
  displayName: 'Copy jar'
  steps:
    # - script:
    #     echo ${{ parameters.connection  }}
  - task: SSH@0
    displayName: 'Task - Backup Existing jar file'
    inputs:
      sshEndpoint:  ${{ parameters.connection  }}
      runOptions: inline
      inline: 
        if [[ -f ${{ variables.extensions_dir  }}/${{ variables.build_name  }} ]]; then mv ${{ variables.extensions_dir  }}/${{ variables.build_name  }} ${{ variables.extensions_dir  }}/${{ variables.build_name  }}_"`date +"%d%m%Y%H%M%S"`"; echo "Successfully Backed up the existing jar"; fi

现在,当我运行我的管道时,我收到了错误消息:

管道无效。作业Job3:步骤SSH输入sshEndpoint引用服务连接$(Dev-mnode1 1),找不到。服务连接不存在或未被授权使用。有关授权的详细信息,请参阅https://aka.ms/yamlauthz

当我使用copy-artifacts.yml文件中注释掉的行打印$(Dev-mnode1)的值时,它会打印很好(Dev11连接),但是当我尝试使用它作为服务连接用于我的ssh任务时,它会给出上面的错误。

而且,在我的项目中有一个服务连接Dev11连接,所有管道都允许使用该服务连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-10 06:32:56

管道无效。作业Job3:步骤SSH输入sshEndpoint引用服务连接$(Dev-mnode1 1),找不到。服务连接不存在或未被授权使用。

从错误消息中,参数在展开模板时不会获得变量值。

测试相同的样本,并能重现问题。

在阶段级别定义变量模板时,模板中的变量将在运行时展开,参数:connection将在编译时展开。因此,正确的值不能传递给参数。

要解决此问题,可以在根级别定义变量模板。

请参阅样本:

代码语言:javascript
运行
复制
trigger:
- None

pool:
  name: AgentBuildAgile

variables: 
  - template: templates/vars.yml

stages:
- template: templates/build.yml
- stage: DEV_Deployment

  jobs:
  - job:
    steps: 
      - script:
          echo $(Dev-mnode1)
  - template: templates/deploy.yml
    parameters:
      connection: $(Dev-mnode1)
      environment: 'DEV'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72557416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档