如何让GitLab CI不解析文件类型预定义变量中的变量引用
解决GitLab CI忽略变量文件中变量引用的问题
我来帮你搞定这个问题——GitLab CI确实会自动解析变量引用,导致你文件里的${myVar}被替换成空字符串。这里有几个靠谱的解决办法,看哪个适合你的场景:
转义美元符号:把文件里的
${myVar}改成$${myVar}。GitLab CI会把连续的两个$解析成单个$,这样最终文件里就会保留原始的${myVar}。比如你原本的变量文件内容是echo ${myVar},改成echo $${myVar}之后,用cat查看就会显示echo ${myVar},不会被解析为空。用单引号包裹内容生成文件:如果是在CI作业里动态生成这个变量文件,记得用单引号而不是双引号。比如执行
echo '${myVar}' > my-config.txt,单引号会阻止GitLab CI解析里面的变量,文件里就会原样保留${myVar}。要是用双引号的话,GitLab就会去解析${myVar},结果就变成空了。使用Raw类型变量(GitLab 15.1+支持):如果你的变量是在
.gitlab-ci.yml的variables块里定义的文件类型变量,可以给它加上type: raw属性。这样GitLab会直接保留变量的原始内容,不会解析里面的变量引用。示例如下:variables: MY_VAR_FILE: value: | 这是包含${myVar}的内容 其他行也不会被解析 type: raw这样在作业中使用这个变量时,里面的
${myVar}就会原封不动地保留下来。
这几种方法都能解决你的问题,根据你实际生成或定义文件的方式选就行~
内容的提问来源于stack exchange,提问作者Roman Banakh
相关产品推荐
相关产品推荐

