我正在使用 Azure Pipelines,并遇到使用 ##vso[task.setvariable] 语法设置管道变量的问题。我的目的是根据管道中的环境参数设置变量 kaasServiceConnection 不同的值。但是,当我稍后在管道中引用该变量时,它似乎并未获取指定的值;相反,它似乎解析为 $(kaasServiceConnection)。
这是我的管道中的相关片段:
- script: |
if [ "$(parameters.environment)" == "dev" ]; then
echo "##vso[task.setvariable variable=kaasServiceConnection;]SVC-DEV-CONN"
elif [ "$(parameters.environment)" == "qa" ]; then
echo "##vso[task.setvariable variable=kaasServiceConnection;]SVC-QA-Conn"
fi
displayName: 'getting Service Connection'
- task: HelmDeploy@0
displayName: 'Helm upgrade'
inputs:
connectionType: 'Kubernetes Service Connection'
kubernetesServiceEndpoint: '$(kaasServiceConnection)'
...
最佳答案
我认为这适合您的情况,并且更适合 azure DevOps 管道。
变量部分也接受表达式,请参阅 conditionally-assign-a-variable
parameters:
- name: environment
type: string
values:
- dev
- prod
variables:
- ${{ if eq(parameters.environment, 'dev') }}:
- name: kaasServiceConnection
value: "SVC-DEV-CONN"
- ${{ if eq(parameters.environment, 'qa') }}:
- name: kaasServiceConnection
value: "SVC-QA-CONN"
stages:
- stage: yourStage
steps:
- task: HelmDeploy@0
displayName: 'Helm upgrade'
inputs:
connectionType: 'Kubernetes Service Connection'
kubernetesServiceEndpoint: $(kaasServiceConnection)
Please adjust the pipeline accordingly.
关于Azure Pipelines : Variable not taking assigned value, 相反解析为 $(variableName),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76917639/