如何在GitLab流水线中用sed替换文件占位符为Git短提交SHA
问题修正方案
你编写的GitLab CI脚本中,sed命令的变量引用存在错误,导致无法正确将GitHash替换为Git提交短SHA。以下是修正后的完整脚本:
set-revesion: image: registry.gitlab.com/gitlab-org/release-cli:latest stage: Set script: - apk update - apk add zip # 处理.odt文件需要先解压 - mkdir MyFile - unzip MyFile.odt -d unpack - cd unpack # 修正变量引用方式,确保shell能解析CI_COMMIT_SHORT_SHA变量 - sed -e 's|GitHash|'"$CI_COMMIT_SHORT_SHA"'|g' -i content.xml - sed -e 's|GitHash|'"$CI_COMMIT_SHORT_SHA"'|g' -i styles.xml - zip -r ../MyFile/MyFile.odt . artifacts: when: always paths: - Specification/
关键修正点
- 原脚本中
${$CI_COMMIT_SHORT_SHA}多了一个美元符号,且sed单引号内的变量无法被shell解析,改为'"$CI_COMMIT_SHORT_SHA"'的写法,既保留sed替换规则的单引号包裹,又能让shell正确解析环境变量。 - 解压后重新打包.odt文件的逻辑保持正确,确保替换后的内容被写入目标文件。
内容的提问来源于stack exchange,提问作者N0cynym
相关产品推荐
相关产品推荐

