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

如何在GitLab CI/CD中自动升级项目的package.json版本?

实现GitLab CI/CD自动升级package.json版本并推送回仓库

核心思路

通过GitLab CI/CD流水线完成三个关键动作:升级版本号、提交修改、推送回仓库。核心是给流水线配置仓库写入权限,同时避免流水线循环触发。

步骤1:配置仓库访问令牌

在GitLab项目中创建一个具备代码写入权限的令牌:

  • 进入项目「Settings」→「Repository」→「Deploy tokens」,新建token并勾选「write_repository」权限
  • 也可使用个人访问令牌(PAT),确保令牌拥有该项目的「repo」权限
  • 进入项目「Settings」→「CI/CD」→「Variables」,添加变量GITLAB_TOKEN,值为刚才创建的令牌,勾选「Masked」和「Protected」(按需设置)

步骤2:编写.gitlab-ci.yml配置

在项目根目录创建或修改.gitlab-ci.yml,添加以下配置:

stages:
  - version-upgrade

upgrade-version:
  stage: version-upgrade
  image: node:latest
  rules:
    # 避免循环触发:排除版本更新的自动提交,可根据实际提交信息调整规则
    - if: '$CI_COMMIT_MESSAGE !~ /^chore: bump version to.*/'
    # 仅在指定分支推送时触发,可替换为你的目标分支名
    - if: '$CI_COMMIT_BRANCH == "main"'
  before_script:
    # 配置Git提交身份,否则无法完成提交
    - git config --global user.name "GitLab CI/CD"
    - git config --global user.email "ci-cd@gitlab.example.com"
    # 替换远程仓库地址,用令牌完成身份认证
    - git remote set-url origin https://gitlab-ci-token:${GITLAB_TOKEN}@${CI_REPOSITORY_URL#*@}
    # 拉取最新代码,避免浅克隆导致的提交冲突
    - git pull origin $CI_COMMIT_BRANCH
  script:
    # 用Yarn升级patch版本,不生成Git标签
    - yarn version --patch --no-git-tag-version
    # 获取升级后的版本号,用于提交信息
    - NEW_VERSION=$(node -p "require('./package.json').version")
    # 提交修改的package.json和yarn.lock(Yarn升级版本会同步更新lock文件)
    - git add package.json yarn.lock
    - git commit -m "chore: bump version to ${NEW_VERSION}"
    # 推送修改到当前分支
    - git push origin $CI_COMMIT_BRANCH

关键细节说明

  • 避免循环触发:通过rules排除版本更新的自动提交,防止流水线推送代码后再次触发CI,形成无限循环
  • Git身份配置:流水线默认没有Git用户信息,必须通过git config设置,否则提交会失败
  • 令牌认证:替换远程仓库地址后,流水线可通过令牌获得写入权限,顺利推送代码
  • 同步lock文件:Yarn修改版本号时会更新yarn.lock,必须一起提交才能保证依赖一致性

测试验证

推送代码到目标分支后,查看GitLab CI/CD流水线状态:

  1. 流水线执行成功后,检查仓库的package.json,版本号应已完成patch升级
  2. 查看提交记录,会出现一条「chore: bump version to x.x.x」的自动提交

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:57:16