Kay*_*Kay 7 sed gitlab gitlab-ci
我想用 gitlab ci 管道中的变量替换 .yml 文件中的变量。
gitlab-ci.yml
deploy_test:
stage: deploy
script:
- sed -i 's/$TAG/$CI_COMMIT_REF_NAME/g' deploy/test.yml
- kubectl apply -f deploy/test.yml
when: manual
only:
- master
- tags
Run Code Online (Sandbox Code Playgroud)
这在 deploy/test.yml 文件中说它应该用 $CI_COMMIT_REF_NAME 的值替换 $TAG 吗?
部署/测试.yml
image: git.<removed>.com:5005/eng/my-group/my-image:$TAG
Run Code Online (Sandbox Code Playgroud)
小智 10
在 sed 中使用双引号 ( ") 而不是单引号'( ),并且还要注意正斜杠 ( /) 也需要转义(如\/)。
因此给出以下内容(假设您正在使用 docker hub)
$CI_COMMIT_REF_NAME=docker_user/repo:v1
Run Code Online (Sandbox Code Playgroud)
您首先需要先转义“/”字符,如下所示
$CI_COMMIT_REF_NAME=docker_user\/repo:v1
Run Code Online (Sandbox Code Playgroud)
然后最后在sed命令中使用双引号
sed -i "s/$TAG/$CI_COMMIT_REF_NAME/g" deploy/test.yml
Run Code Online (Sandbox Code Playgroud)
注意:除此之外,如果转义次数太多,您也可以选择使用|而不是。/
喜欢:
sed -i "s|$TAG|$CI_COMMIT_REF_NAME|g" deploy/test.yml
Run Code Online (Sandbox Code Playgroud)