如何在.releaserc.json中使用环境变量适配semantic-release配置
semantic-release 传入CI环境变量实现方案
你的现有配置写法本身就支持读取CI传入的环境变量,只需要按以下规则操作即可:
- 你在CI任务中设置的所有环境变量,只要在运行
semantic-release命令的进程上下文里可被读取,就能直接在@semantic-release/exec的命令参数里用${环境变量名}的格式调用,不需要额外插件配置。
示例配置如下:["@semantic-release/exec", { "prepareCmd": "echo hello ${HOME} 自定义CI变量值: ${MY_CUSTOM_VAR};" }], - CI侧只需要在执行
semantic-release命令前导出对应的环境变量即可,示例CI执行脚本:# 导出自定义环境变量,也可以在CI配置的全局env字段中统一设置 export MY_CUSTOM_VAR="ci传入的自定义值" # 启动semantic-release npx semantic-release - 如果你需要同时使用semantic-release内置变量(比如版本号
${nextRelease.version}、分支名${branch.name}等),直接和自定义环境变量拼接即可,插件会先替换内置模板变量,再交给shell解析环境变量,二者完全兼容:["@semantic-release/exec", { "prepareCmd": "echo 本次发布版本号: ${nextRelease.version} CI自定义变量: ${MY_CUSTOM_VAR};" }],
注意事项
- 敏感类环境变量(比如访问密钥)不要在命令中打印输出,绝大多数CI平台会自动对日志里的敏感变量做脱敏处理,直接在命令中调用即可。
- 如果你的变量值包含空格、特殊符号,在shell命令中使用时要给变量包裹双引号,避免解析错误,比如
echo "${MY_CUSTOM_VAR}"。 - 若使用Windows环境的CI节点,需要把变量写法调整为Windows默认的
%变量名%格式,或者用cross-env类工具统一跨平台变量读取逻辑。
内容的提问来源于stack exchange,提问作者Evan Carroll
相关产品推荐
相关产品推荐

