首页 > 解决方案 > 在同一项目 Gitlab ci 中的管道之间下载工件

问题描述

我目前正在运行 2 个工作。一个运行一些测试单元,该单元从基于 php 的项目生成一个coverage.xml 文件,另一个运行基于该覆盖文件的声纳分析。

这是 gitlab-ci.yml :

stages:
  - tests
  - sonar
    tests:
      stage: "tests"
      image: some-image
      only:
        - merge_requests
      script:
         - script.sh
      artifacts:
        paths:
          - var/php/xml/coverage.xml
    
    sonarqube-scanner:
      stage: "sonar"
      only:
        - specific_branch
      image:
        name: sonarsource/sonar-scanner-cli:latest
      cache:
        key: ${CI_JOB_NAME}
        paths:
          - .sonar/cache
      script:
        - sonar-scanner -Dsonar.php.coverage.reportPaths=#with_some_parameters
      allow_failure: false
      dependencies:
        - tests

当我以相同的唯一条件运行这两个作业时(两者都只有条件设置为特定分支),声纳作业可以毫无问题地检索人工制品

一旦我在这两个作业之间设置了不同的唯一条件,这仅在我的单元测试的合并请求中,并且仅在我的声纳扫描的特定分支中。如果合并请求与仅在声纳条件中指定的分支不在同一分支中。声纳作业无法检索人工制品。

有什么方法可以将工件从一个工作传递到另一个具有不同唯一条件的工作?

提前致谢

标签: gitlabsonarqubegitlab-ci

解决方案


有什么方法可以将工件从一个工作传递到另一个具有不同唯一条件的工作?

实际上,条件本身并不重要,只要它们都评估为让作业运行即可。

如果合并请求与仅在声纳条件中指定的分支不在同一分支中。声纳作业无法检索人工制品。

如果不是only条件指定的分支,则sonarqube-scanner作业不会实际运行……您确定sonarqube-scanner作业真的被触发了吗?


推荐阅读