You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Semantic Release使用自定义Git用户而非semantic-release-bot?

解决Semantic Release自定义Git签名提交用户的问题

核心原因

你遇到的问题是因为Semantic Release的@semantic-release/git插件(负责版本提交的核心插件)默认会使用内置的semantic-release-bot用户信息,仅在publishCmd脚本中设置全局Git配置无法覆盖这个行为——要么配置优先级不够,要么执行时机不对。

有效解决方法

方法1:直接配置@semantic-release/git插件的用户信息

这是最可靠的方式,直接在Semantic Release的配置中指定提交用户,无需依赖脚本:

在你的Semantic Release配置文件(比如.release.js或package.json的release字段)中,给@semantic-release/git插件添加user选项:

// .release.js示例
module.exports = {
  plugins: [
    // 其他必要插件(如@semantic-release/commit-analyzer、@semantic-release/release-notes-generator)
    [
      "@semantic-release/git",
      {
        assets: ["package.json", "CHANGELOG.md"], // 根据你的需求调整提交的文件
        message: "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}",
        user: {
          name: process.env.GIT_USERNAME,
          email: process.env.GIT_EMAIL
        }
      }
    ],
    // 你的@semantic-release/exec插件配置
    [
      "@semantic-release/exec",
      {
        publishCmd: "your-shell-script.sh"
      }
    ]
  ]
};

同时,在脚本中保留签名密钥的配置(去掉--global,改用仓库级配置):

# your-shell-script.sh内容
git config user.signingKey "$GIT_SIGNING_KEY"
git config commit.gpgsign true # 确保自动签名提交

方法2:改用仓库级Git配置替代全局配置

如果不想修改@semantic-release/git插件配置,可在脚本中去掉--global参数,仅对当前仓库设置用户信息(仓库级配置优先级高于全局):

# 修改后的脚本内容
git config user.name "$GIT_USERNAME"
git config user.email "$GIT_EMAIL"
git config user.signingKey "$GIT_SIGNING_KEY"
git config commit.gpgsign true

这种方式需要确保脚本在Semantic Release执行提交步骤之前运行,可通过@semantic-release/exec的prepareCmd替代publishCmd(prepare阶段在版本提交前执行):

// Semantic Release配置中调整exec插件
[
  "@semantic-release/exec",
  {
    prepareCmd: "your-shell-script.sh"
  }
]

额外注意事项

  • 确保CI环境中已正确导入GPG签名密钥,否则签名提交会失败。
  • 环境变量GIT_USERNAME、GIT_EMAIL、GIT_SIGNING_KEY需在CI环境中正确配置,确保脚本和插件能读取到。

内容的提问来源于stack exchange,提问作者mstruebing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:17:25