Как предотвратить сбой шага в Bitbucket Pipelines? - PullRequest
1 голос
/ 01 августа 2020

Я запускаю все свои тестовые примеры, и некоторые из них иногда дают сбой, конвейер обнаруживает это и не выполняет шаг и сборку. это блокирует выполнение следующего шага (заархивируйте папку отчета). Я хочу отправить этот zip-файл как вложение в электронное письмо.

Вот мой bitbucket-pipelines.yml файл

custom: # Pipelines that can only be triggered manually
  QA2: # The name that is displayed in the list in the Bitbucket Cloud GUI
  - step:
      image: openjdk:8
      caches:
      - gradle
      size: 2x    # double resources available for this step to 8G
      script:
      - apt-get update
      - apt-get install zip
      - cd config/geb
      - ./gradlew -DBASE_URL=qa2 clean BSchrome_win **# This step fails** 
      - cd build/reports
      - zip -r testresult.zip BSchrome_winTest 

      after-script: # On test execution completion or build failure, send test report to e-mail lists
      - pipe: atlassian/email-notify:0.3.11
        variables:
          <<: *email-notify-config
          TO: 'email@email.com'
          SUBJECT: "Test result for QA2 environment"
          BODY_PLAIN: |
            Please find the attached test result report to the email.
          ATTACHMENTS: config/geb/build/reports/testresult.zip

Снимок экрана с ошибкой сборки

Шаги:

- cd build/reports 
and
- zip -r testresult.zip BSchrome_winTest

не выполняются, потому что - ./gradlew -DBASE_URL=qa2 clean BSchrome_win не удалось

Я не хочу, чтобы битбакет провалил шаг и остановил выполнение шага очереди .

1 Ответ

1 голос
/ 01 августа 2020

Файл bitbucket-pipelines.yml просто выполняет команды bash / shell на Unix. Средство выполнения сценария ищет коды состояния возврата каждой команды, чтобы узнать, удалось ли она (status = 0) или не удалось (status = non-zero). Таким образом, вы можете использовать различные методы для управления этим кодом состояния:

Добавьте " || true" в конец вашей команды

./gradlew -DBASE_URL=qa2 clean BSchrome_win || true

Когда вы добавляете "|| true" в конец команды оболочки , это означает «игнорировать любые ошибки и всегда возвращать код успеха 0». Подробнее:

Используйте флаг «gradlew --continue»

./gradlew -DBASE_URL=qa2 clean BSchrome_win --continue

Флаг "--continue" можно использовать, чтобы предотвратить остановку всей задачи из-за единственного сбоя теста. Поэтому, если один тест или подэтап завершится неудачно, gradle будет пытаться продолжить выполнение других тестов, пока не будут запущены все. Однако он все равно может вернуть ошибку, если важный шаг не удался. Подробнее: Игнорировать сбой сборки Gradle и продолжить сценарий сборки?

Переместите 2 шага в раздел after-script

after-script:
  - cd config/geb # You may need this, if the current working directory is reset. Check with 'pwd'
  - cd build/reports
  - zip -r testresult.zip BSchrome_winTest 

Если вы переместите 2 шага для zip в раздел after-script, то они всегда будут выполняться, независимо от статуса успешного / неудачного предыдущего шага.

...