Получить статус ошибки из вызванных целей make - PullRequest
0 голосов
/ 07 октября 2019

У меня есть настройка make-файла, когда создается несколько модулей:

foo:
  <command to build foo>

bar:
  <command to build bar>

baz:
  <command to build baz>

deploy: pre_check foo bar baz display_result

Когда я звоню make deploy, сначала он вызывает pre_check, а затем зависит от foo, bar и baz, поэтому при необходимости он строит их последовательно. Это отлично работает. После того, как сборка завершена, я хочу отобразить результат сборки (например, отправить уведомление в какой-либо инструмент коллективной работы, например, Slack).

Как определить цель display_result, чтобы он знал, все лицели до сих пор были успешными или неуспешными (и какая из них провалилась), чтобы на ней могло отображаться подходящее сообщение о состоянии (например, «успех» или «сбой: bar ошибка»)?

Я использую GNU Make4.1 с Bash на Ubuntu.

1 Ответ

0 голосов
/ 07 октября 2019

Когда вы запускаете 'make deploy' без каких-либо опций, цели обрабатываются последовательно, и сбой в одной цели помешает перемещению make к следующей цели.

Несколько исключений из правила: * При запросеПоскольку для параллельной сборки ('make -j ...'), make начнет обрабатывать цель параллельно, поэтому возможно, что он попытается выполнить две (или более) цели одновременно. * С помощью '-k' сделайте так, чтобы он не останавливался после первого сбоя, так что будет отображаться display_result, независимо от успеха на предыдущих шагах.

Один из возможных обходных путей, добавить явные зависимости между display_result и шагами, которыетребуется, прежде чем он может быть запущен:

display_result: pre_check foo ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...