Я знаю, что в CircleCI можно выполнить шаг только в том случае, если задание, содержащее его, не удалось, но можно ли сделать то же самое с заданиями (без добавления дополнительного шага обработки сбоя к каждому заданию)?
В частности, я пытаюсь отправить слабое уведомление, если какое-либо задание (например, проверка) в рабочем процессе завершается сбоем.
Я не вижу простого способа сделать это; на уровне работы нет эквивалента атрибуту when: on_fail
уровня шага.
Все, что я могу предложить, это использовать Dynamic Config. Ваш «рабочий процесс установки» будет включать в себя основные задания, результаты которых вы хотите проверить, а также задание «официанта», которое:
Failed
.Failed
, задание «официант» устанавливает параметр в true
(например, { "extra-job": true }
, который вы передаете команде continue круга/сферы продолжения (через параметр parameters
команды), вместе с « продолжение» config.yml
(которое будет включать только задание, которое отправляет уведомление об отключении).Вы можете найти пример работы «официант» в этом посте CircleCI Discuss. Он не включает часть, где вы проверяете статусы Failed
и устанавливаете объект JSON, который позже будет использоваться в качестве параметра; вам нужно будет добавить это.
В конфиге "продолжение":
Вам нужно объявить логический параметр конвейера extra-job
со значением по умолчанию false
Выполнение одного рабочего процесса, который имеет «Slack job» , будет зависеть от параметра конвейера extra-job
, который будет true
:
when: << pipeline.parameters.extra-job >>
Надеюсь, это поможет.
Пожалуйста! Теперь, возможно, есть более простой способ, который я упускаю, так что отнеситесь к моему предложению с щепоткой соли: D
Боже, если это действительно единственный другой способ сделать это, я думаю, я бы предпочел просто добавить дополнительный этап обработки сбоев ко всем своим работам. Спасибо за ответ!