在同一项目Gitlab ci的管道之间下载工件



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

这里是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

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

只要我在这两个工作之间放置不同的唯一条件,这仅在我的单元测试的合并请求中,仅在我的声纳扫描的特定分支中。在合并请求与分支不在同一分支的情况下,在声纳中只指定条件。声纳工作无法检索人工制品。

是否有办法将工件从一个作业传递到具有不同唯一条件的另一个作业?

Thanks in advance

只要依赖项是"only;子句总是包含从属的唯一子句,它应该运行。换句话说,像测试这样的东西在所有合并请求上运行,而声纳只在某些合并请求上运行。

是否有任何方法将工件从一个作业传递到具有不同唯一条件的另一个作业?

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

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

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

最新更新