使用azure-cli镜像的GitLab Pipeline如何正确调用流水线变量
问题原因分析
报错的核心是语法混用:
mcr.microsoft.com/azure-cli镜像的默认执行环境是 Bash shell,你第二行写的$name='prefix' + $APP + 'suffix'是PowerShell的变量赋值+字符串拼接语法,Bash不识别这种写法,会把开头的$name解析成空值,然后把后面的'prefix'当成要执行的命令,所以才会报'prefix': command not found的错误。- GitLab CI的变量在azure-cli的执行环境中可以直接通过
$变量名的方式引用,不需要额外特殊适配。
正确配置示例
直接用Bash的变量赋值和字符串拼接语法即可,Bash中拼接字符串不需要加号,直接把内容相邻放置即可:
image: maven:3.3.9-jdk-8 variables: APP: "MyApp" stages: - build test_build: stage: build image: mcr.microsoft.com/azure-cli script: - echo $APP - name="prefix${APP}suffix" - echo $name
注意:Bash变量赋值时
=左右不能有空格,引用变量时建议加${}包裹变量名避免和后续字符产生歧义。
若要使用PowerShell语法的处理方案
如果你习惯PowerShell写法,可以给当前job指定执行shell为pwsh:
test_build: stage: build image: mcr.microsoft.com/azure-cli shell: pwsh script: - echo $APP - $name='prefix' + $APP + 'suffix' - echo $name
内容的提问来源于stack exchange,提问作者snippet
相关产品推荐
相关产品推荐

