我尝试在 GitLab CI 中运行管道作业来执行 npm build,但前提是项目中存在触发上游管道的 package.json。我使用“needs:”从上游管道下载文件。当管道作业运行时,我收到一条错误消息:
jobs:packages.react:rules:rule exists should be an array of strings
。我检查了 GitLab 文档中的规则:存在:项目并且 YAML 语法是正确的。我确保 YAML 缩进正确。如何解决该错误?
这是代码:
packages.react:
stage: app-build
needs:
- project: $UPSTREAM_PROJECT_PATH
job: get-source-files
ref: $UPSTREAM_BRANCH_REF
artifacts: true
rules:
- exists:
paths:
- package.json
project: $UPSTREAM_PROJECT_PATH
image: $NODE_IMAGE
script:
- npm install --frozen-lockfile
- npm run build
我解决了这个问题。这是由于我使用的 GitLab 版本是 16.9。 “rules:exists:project”功能在 16.9 版本中不存在,仅在 16.11 及更高版本中存在。我有一个自我管理的 GitLab 实例,因此我需要升级到 16.11。