Azure Pipelines调用Shell脚本时变量未正确引用求助
Azure Pipelines变量未按声明引用问题排查与解决
可能原因及排查步骤
分支匹配验证
你的变量是基于Build.SourceBranchName分支名条件定义的,仅当分支为main或test_branch时变量才会赋值。先确认触发流水线的分支是否属于这两个分支:
在inlineScript中添加日志输出当前分支:echo "当前触发分支: $(Build.SourceBranchName)"运行后查看流水线日志,确认分支是否符合条件。如果是其他分支,变量会处于未定义状态。
变量替换验证
在调用脚本前添加变量值输出,确认变量是否被正确解析:echo "subPref值: ${{ variables.subPref }}" echo "rgType值: ${{ variables.rgType }}" echo "location值: ${{ variables.location }}" echo "config值: ${{ variables.config }}"检查日志中这些变量的输出是否与你预期一致,若为空则说明条件分支未触发或变量定义有误。
调整变量引用方式
在bash脚本中,除了编译时的${{ variables.xxx }},也可以尝试使用运行时变量引用格式$(xxx)(无需写variables前缀):deploy.sh deploy_azr $(subPref) $(rgType) $(location) $(config)两种引用方式在你的场景下都应生效,但可以测试是否解决变量未替换问题。
检查条件变量语法
确认条件判断的语法正确性,${{ if eq(variables['Build.SourceBranchName'], 'test_branch') }}写法无误,也可以替换为${{ if eq(variables.Build.SourceBranchName, 'test_branch') }}尝试。
修改后的示例脚本片段
inlineScript: | set -e set -x echo "当前触发分支: $(Build.SourceBranchName)" echo "subPref值: ${{ variables.subPref }}" echo "rgType值: ${{ variables.rgType }}" echo "location值: ${{ variables.location }}" echo "config值: ${{ variables.config }}" sudo apt install -y gridsite-clients cd 'bicep' echo "starting the lib deployment" deploy.sh deploy_azr ${{ variables.subPref }} ${{ variables.rgType }} ${{ variables.location }} ${{ variables.config }}
内容的提问来源于stack exchange,提问作者chandu
相关产品推荐
相关产品推荐

