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

如何使用Github Actions执行npm version推送并解决用户名读取报错

问题根因

本次报错是Git推送时认证规则未生效导致,核心原因有两个:

  • 你配置的git insteadOf规则仅替换ssh://git@github.com/开头的SSH协议地址,而当前工作流拉取仓库用的是HTTPS协议的远程地址,规则未匹配生效,推送时使用的还是未携带认证信息的原始HTTPS地址,触发身份校验。你设置的用户名和令牌仅绑定在SSH转HTTPS的规则里,没有覆盖到实际使用的HTTPS地址,所以系统无法识别到对应的认证信息。
  • 你在actions/checkout步骤设置了persist-credentials: false,清空了GitHub Workflow默认提供的GITHUB_TOKEN凭据,也没有额外给HTTPS地址配置认证信息,进一步导致身份校验失败。

修复方案

1. 调整Git替换规则覆盖HTTPS地址

将原来的认证配置步骤修改为替换所有GitHub的HTTPS请求,直接给所有HTTPS地址自动带上认证信息:

- name: Reconfigure git to use HTTP authentication
  run: >
    git config --global url."https://my-user:${{ secrets.USER_TOKEN }}@github.com/".insteadOf
    https://github.com/

修改后所有访问GitHub的HTTPS请求都会自动携带你配置的用户名和令牌,不需要额外输入认证信息。

2. 可选:直接修改当前仓库远程地址

你也可以直接给当前仓库设置带认证的远程地址,避免全局配置可能的遗漏:

- name: Set authenticated remote URL
  run: git remote set-url origin https://my-user:${{ secrets.USER_TOKEN }}@github.com/${{ github.repository }}.git

额外需要修正的配置问题

你当前的工作流还存在一个不影响本次报错,但会导致后续运行异常的配置:
策略矩阵中定义的Node版本变量名为node,但actions/setup-node步骤引用的是${{ matrix.node-version }},变量名不匹配,需要统一修改:

# 方案A:修改矩阵变量名
strategy:
  matrix:
    os: [ ubuntu-latest ]
    node-version: [ 16 ]

# 方案B:修改setup-node的变量引用
- name: Use Node.js ${{ matrix.node }}
  uses: actions/setup-node@v2
  with:
    node-version: ${{ matrix.node }}
    cache: 'npm'

另外建议在推送步骤明确指定推送分支和同步标签,避免默认推送规则不匹配:

- name: Push version change
  run: |
    git show
    git push origin HEAD:${{ github.ref_name }} --follow-tags

前置校验

请提前确认你仓库的Secrets配置中确实存在名为USER_TOKEN的密钥,且该令牌拥有对应仓库的读写权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:27:03