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

GitLab流水线Nexus IQ策略评估报错:结果文件不存在

问题分析与修复方案

核心问题:Nexus IQ CLI命令缺少扫描目标

你当前的/sonatype/evaluate命令只配置了服务器连接、认证、应用ID和评估阶段,但没有指定要扫描的构建产物路径——Nexus IQ CLI需要明确知道要扫描哪些文件(比如Jar包、War包,或者整个构建输出目录),否则它没有扫描对象,自然不会生成策略评估结果文件,这就是报错的根本原因。

具体修复步骤

1. 补充扫描目标到evaluate命令

在script的evaluate命令末尾添加构建产物的路径,比如你的模块构建产物在target/目录下,或者具体的Jar包路径:

script:
  - >
    /sonatype/evaluate
    -s https://nexus-iq.company-name.de/
    -a $NEXUS_IQ_USER_NAME:$NEXUS_IQ_USER_PASSWORD
    -i <REPO-GROUP>_com.company-name.<project-name>_<module-name>
    -t $NEXUSIQ_STAGE
    # 添加扫描目标,比如模块的target目录
    target/

如果是特定文件,比如target/*.jar,也可以直接指定。

2. 修正-r参数的语法错误

你之前使用-r参数时格式错误:多了末尾的>,且参数写法不符合CLI要求。正确的写法是用-r后跟结果文件路径,或者--result-file=文件名:

script:
  - >
    /sonatype/evaluate
    -s https://nexus-iq.company-name.de/
    -a $NEXUS_IQ_USER_NAME:$NEXUS_IQ_USER_PASSWORD
    -i <REPO-GROUP>_com.company-name.<project-name>_<module-name>
    -t $NEXUSIQ_STAGE
    -r ./policy-eval-<module-name>.json
    target/

这里把结果文件放在当前工作目录(GitLab Job的默认工作目录),方便后续artifacts捕获。

3. 调整artifacts配置匹配实际生成的文件

确保artifacts的paths指向实际生成的报告文件(包括JSON和HTML,Nexus IQ CLI默认会生成HTML报告):

artifacts:
  name: "policy-eval-<project-name>-$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
  paths:
    - ./policy-eval-<module-name>.json
    - ./<REPO-GROUP>_com.company-name.<project-name>_<module-name>-policy-eval-report.html

如果用了-r指定JSON文件名,就写对应的路径;HTML报告的默认命名格式是{应用ID}-policy-eval-report.html,和你之前的配置一致,只要应用ID正确就能捕获到。

4. 验证构建产物的可访问性

因为你的Job依赖build deploy,要确保build deploy Job已经将模块的构建产物(比如target目录)作为artifacts传递下来,否则当前Job的工作目录里没有要扫描的文件,CLI还是会报错。可以在build deploy Job里添加artifacts配置:

build deploy:
  # 其他配置...
  artifacts:
    paths:
      - <module-name>/target/

这样Nexus IQ Job就能访问到对应的构建产物了。

完整修正后的Job示例

nexusiq <module-name>:
  tags:
    - build
  image: sonatype/nexus-iq-cli
  stage: test
  needs:
    - build deploy
  rules:
    - if: $CI_COMMIT_REF_NAME == "master"
      when: never
    - if: $CI_COMMIT_REF_NAME =~ /feature/
      when: never
    - if: $CI_COMMIT_REF_NAME =~ /bugfix/
      when: never
    - when: on_success
  script:
    - >
      /sonatype/evaluate
      -s https://nexus-iq.company-name.de/
      -a $NEXUS_IQ_USER_NAME:$NEXUS_IQ_USER_PASSWORD
      -i <REPO-GROUP>_com.company-name.<project-name>_<module-name>
      -t $NEXUSIQ_STAGE
      -r ./policy-eval-<module-name>.json
      # 替换为你实际的构建产物路径
      <module-name>/target/
  artifacts:
    name: "policy-eval-<project-name>-$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
    paths:
      - ./policy-eval-<module-name>.json
      - ./<REPO-GROUP>_com.company-name.<project-name>_<module-name>-policy-eval-report.html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:37:49