我目前正在开发 GitLab CI/CD 管道,并尝试使用 sed 命令在管道运行时动态更新文件的内容。我的目标是用根据管道执行上下文而变化的动态值替换 json 文件中的占位符版本。我在 .gitlab-ci.yml 文件中写了一个命令,但我不知道我的语法是否正确,或者是否有更好的方法。
我的问题是:
我的 sed 命令语法是否适合在 GitLab CI 管道中使用?
是否有更有效或推荐的方法来在 GitLab CI 管道中的文件中执行文本替换?
build:
image: node:alpine
services:
- docker:dind
variables:
VARIABLE: changed
before_script:
- [commands]
- [commands]
- [commands]
- |
sed -i 's/"version": "[^"]*"/"version": "'"$VARIABLE"'"/' app.json
script:
- cat app.json
此命令适用于跑步者:
$ sed -i 's/"version": "[^"]*"/"version": "'"$variable"'"/' app.json
$ cat app.json
{
"something": {
"version": "changed"
}
}
尝试过这个并且有效 我能够更新 helm 值文件中的标签
脚本: - docker build -t "$DOCKER_IMAGE_NAME" 。 - 泊坞窗标签“$DOCKER_IMAGE_NAME”“$DOCKER_IMAGE_NAME:$BUILD_NUMBER” - docker 推送“$DOCKER_IMAGE_NAME:$BUILD_NUMBER” - git 克隆 $HELM_REPO_URL - cd helm-chart-repo - | sed -i 's/tag: "[^"]*"/tag: "'"$BUILD_NUMBER"'"/'values.yaml