Как определить 2 артефакта с разными условиями в 1 задании? - PullRequest
1 голос
/ 03 мая 2019

Я пытался сделать 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 загружает артефакт только после успешной сборки,Но мне нужно, чтобы отчет о тестировании всегда загружался, а файл сборки загружался только тогда, когда сборка прошла успешно.Я могу использовать всегда и on_success, но я не уверен, смогу ли я разделить эти 2 артефакта, когда условие в 1 задании.

1 Ответ

0 голосов
/ 05 мая 2019

Вы можете добавить этап для сбора отчетов при возникновении сбоя.
В следующем примере я добавил build-reports этап с when: on_failure, и он отвечает за сборжурналы и отчеты.

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

Конвейерный вывод для успешной сборки: ( Сборка Артефакт сцены содержит: report.txt и output.txt)
Pipeline output for success build

Конвейерный вывод для неудачной сборки ( Отчеты о сборке Артефакт этапа содержит: report.txt)
Pipeline output for failed build

...