gitlab ci中配置了rules为什么不生效?


workflow:
  rules:
    - if: '$CI_COMMIT_BRANCH == "develop"'

stages:
  - install_deps
  - deploy
  - publish

variables:
  NPM_REGISTRY: "http://npm.xbongbong.com.cn"
  NPM_TOKEN: $CI_JOB_TOKEN

cache:
  key: ${CI_COMMIT_REF_NAME}
  paths:
    - node_modules/
    - storybook-static/

# 安装依赖
install_deps:
  stage: install_deps
  script:
    - echo "start npm install"
    - npm install --legacy-peer-deps

# 静态站点打包并部署
deploy:
  stage: deploy
  script:
    - echo "start npm run build-storybook"
    - npm run build-storybook
    - echo "start deploy"
    - rm -rf /home/nodeServer/dist/
    - mv -f storybook-static /home/nodeServer/dist
  
# npm打包并发布
publish:
  stage: publish
  before_script:
    - echo "//npm.xbongbong.com.cn/:_authToken=\${NPM_TOKEN}" > ~/.npmrc
    - npm config set registry $NPM_REGISTRY
  script:
    - echo "start npm run build"
    - npm run build
    - echo "start publish"
    - npm publish
  rules:
    - if: '$CI_COMMIT_MESSAGE =~ /^v?\d+\.\d+\.\d+.*$/'

配置文件如上,相同的commit message信息,我在本地使用Git提交时,不会触发publish阶段的任务。而在gitlab网页上使用在线IDE进行编辑时,却能正常触发publish阶段,这是什么原因?
image.png

阅读 597
avatarAI BotBETA

在 GitLab CI/CD 中,rules 字段用于定义哪些条件下应该触发特定的 job。如果 rules 不生效,可能有几个原因:

  1. 变量值问题:首先确认 $CI_COMMIT_MESSAGE 是否正确获取了提交消息。有时,提交消息的格式可能由于某些原因(如换行符、空格等)与预期不符,导致正则表达式匹配失败。
  2. 环境差异:你在本地和 GitLab 在线 IDE 中提交可能有环境差异。例如,本地提交可能没有正确设置环境变量,或者提交消息在某种环境下被修改。
  3. 正则表达式问题:确认你的正则表达式是否正确。在你的配置中,正则表达式 ^v?\d+\.\d+\.\d+.*$ 匹配的是类似 "1.2.3" 或 "v1.2.3" 这样的消息。确保你的提交消息符合这个格式。
  4. GitLab 版本问题:确保你使用的 GitLab 版本支持 rules 字段。虽然 rules 字段在较早的版本中就已经存在,但不同版本之间可能有细微的差异。
  5. 日志检查:查看 GitLab CI/CD 的日志,看看是否有任何错误信息或警告。这可能会提供为什么 rules 没有生效的线索。
  6. 提交方式问题:确认你使用 Git 命令提交时,提交消息是否被正确传递。有时,通过某些 GUI 工具提交可能会修改或丢失提交消息。

解决建议:

  • 确保提交消息格式正确,并尝试在本地和在线 IDE 中都使用相同的提交消息。
  • 检查环境变量和配置是否正确设置。
  • 查看 GitLab CI/CD 的日志,寻找可能的错误或警告。
  • 如果可能,尝试升级 GitLab 到最新版本。

如果以上建议都不能解决问题,建议联系 GitLab 的官方支持或查看官方文档,以获取更具体的帮助。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏