我如何在1个作业中定义2个工件时的条件不同?

时间:2019-05-03 04:11:42

标签: continuous-integration gitlab gitlab-ci

我试图使CI使用gradle构建代码。问题是,当构建失败时,它没有上传我的测试报告,这是我以后进行调试所需的。

build:
  stage: build
  script:
    - ./gradlew build --info
  artifacts:
    paths:
      - build/install/<app_name>/*
      - build/reports/*
    expire_in: 7 days
    reports:
      junit: build/test-results/test/TEST-*.xml

作为gitlab-ci的默认设置,它仅在构建成功时上载工件。但是我需要始终上传测试报告,并且仅在构建成功时才上传构建文件。我可以使用always和on_success,但不确定在执行一项工作时是否可以分离出这两个工件。

1 个答案:

答案 0 :(得分:0)

您可以添加阶段,以在发生故障时收集报告。
在以下示例中,我在when: on_failure中添加了 build-reports 阶段,该阶段负责收集日志和报告。

stages:
  - build
  - build-reports


build:
  stage: build
  allow_failure: false
  artifacts:
    paths:
    - report.txt
    - output.txt
    expire_in: 1 week
  script:
    - echo "Reports:" $(date) > report.txt
    - echo "Output:" $(date) > output.txt

Build-Reports:
  stage: build-reports
  when: on_failure
  artifacts:
    name: Build reports
    paths:
    - report.txt
    expire_in: 1 week
  script:
    - echo "Build Failed" >> report.txt

成功构建的管线输出: Build 阶段的工件包括:report.txtoutput.txt
Pipeline output for success build

构建失败的管道输出构建报告阶段的工件包括:report.txt
Pipeline output for failed build