Действия Github / Выполнение задания после завершения матрицы

#github #continuous-integration #devops #github-actions

#github #непрерывная интеграция #devops #github-действия

Вопрос:

У меня такая ситуация:

 jobs:
  shake:
    name: 'NodeJS ${{ matrix.node }}'
    runs-on: ubuntu-latest
    strategy:
      matrix:
        fruit: [strawberry, banana, apple]

    steps:
      - run: echo "::set-output name=action_fruit::${{ matrix.fruit }}"
  

Я бы хотел выполнить job или step после завершения всей матрицы.

  • Я должен иметь возможность запускать задание / шаг независимо от сбоя
  • Я также должен иметь доступ к их выводам.

Ответ №1:

Кажется, что вы можете достичь желаемого результата, используя if: always() свою зависимую работу. Дополнительная информация доступна здесь: https://github.community/t/run-dependent-job-even-on-failure/115914


 jobs:
  shake:
    ...
  post_shake:
    if: ${{ always() }}
    needs: [shake]
    steps:
      ...
  

Комментарии:

1. Ко второй части вашего вопроса: доступ к выводам матрицы заданий не работает должным образом, см. github.community/t/ …

2. Нет необходимости использовать интерполяцию всегда, просто используйте if: always()

Ответ №2:

Я сделал это: вы должны добавить needs предложение в следующее задание, например

 jobs:
  shake:
    ...
  post_shake:
    needs: [shake]
    steps:
      ...
  

Комментарии:

1. job.needs Определяет все задания, которые должны быть успешно завершены до запуска этого задания.так что, похоже, он не запускается, если какой-либо из фрагментов shake терпит неудачу…