Запуск шага GitHub Actions, только если предыдущий шаг был запущен - PullRequest
1 голос
/ 28 февраля 2020

Я настроил рабочий процесс в действиях GitHub для запуска моих тестов и создания артефакта тестового покрытия. Урезанная версия моего YAML-файла выглядит следующим образом:

name: Build

on: [pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Other steps here

      - name: Build app
      - name: Run tests
      - name: Create artifact of test coverage

      # Other steps here

Проблема в том, что артефакт не создается при неудачном тестировании.

Я выяснил условие if: always() из docs , но это также приведет к выполнению этого шага, когда мой шаг Build app завершится неудачно. Я не хочу, чтобы это произошло, потому что в этом случае нет ничего для архивирования.

Как я могу выполнить этот шаг, только если предыдущий шаг был выполнен (или успешно, или не удалось)?

1 Ответ

0 голосов
/ 29 февраля 2020

Попробуйте проверить success() ИЛИ failure().

name: Build

on: [pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Other steps here

      - name: Build app
      - name: Run tests
      - name: Create artifact of test coverage
        if: success() || failure()

      # Other steps here

В качестве альтернативы создайте пошаговый вывод кода выхода, который вы сможете проверить на последующих шагах. Например:

      - name: Build app
        id: build
        run: |
          <build command>
          echo ::set-output name=exit_code::$?

      - name: Run tests

      - name: Create artifact of test coverage
        if: steps.build.outputs.exit_code == 0
...