我已经声明了一个变量组,如下所示,该组对任何管道都没有任何限制:
我使用另一个名为vars.yml的模板来存储其他变量:
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模板,我将两个参数(connection
,environment
)从azure pipeline.yml传递给deploy.yml。
下面是我的天蓝色管道。
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:
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的模板,如下所示:
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连接,所有管道都允许使用该服务连接。
发布于 2022-06-10 06:32:56
管道无效。作业Job3:步骤SSH输入sshEndpoint引用服务连接$(Dev-mnode1 1),找不到。服务连接不存在或未被授权使用。
从错误消息中,参数在展开模板时不会获得变量值。
测试相同的样本,并能重现问题。
在阶段级别定义变量模板时,模板中的变量将在运行时展开,参数:connection将在编译时展开。因此,正确的值不能传递给参数。
要解决此问题,可以在根级别定义变量模板。
请参阅样本:
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'
https://stackoverflow.com/questions/72557416
复制相似问题