Условный after_script в.gitlab-ci.yml
Я написал несколько рабочих мест в .gitlab-ci.yml
и мой вопрос похож на этот один вопрос так. Однако предоставленные и принятые ответы не работают для моего сценария.
Задание имеет раздел after_script, который выполняется, когда основная задача завершается или не выполняется.
Проблема: я отправляю оповещение по электронной почте в зависимости от того, успешно или нет выполнено основное задание, но я не могу найти ни одну переменную Gitlab CI, которая указывает результат задания, чтобы уточнить в сообщении с предупреждением.
Как я могу сказать, в разделе after_script, успешно ли выполнена основная задача?"
Если я использую when: on_failure
, тогда мой вопрос, когда я могу определить свой when: on_success
задание, так как эти задания будут зависеть от задания перед первым, поэтому я могу выполнить только одно из них. Я пытался найти переменные в переменных Gitlab для этого, но не смог найти.
Кроме того, в моем после сценария - я могу написать, если условие, но я проверяю, может ли кто-то предоставить лучшее альтернативное решение
3 ответа
Обратите внимание, что ответ - это другой вопрос - начиная с v13.5, естьCI_JOB_STATUS
переменная, доступная вafter_script
.
Или вы можете установить свои собственные условия, такие как:
scripts:
- ./script_that_fails.sh > /dev/null 2>&1 || FAILED=true
- if [ $FAILED ]
then ./do_something.sh
fi
Проблема: я отправляю оповещение по электронной почте в зависимости от того, успешно ли выполнена основная задача или нет, но я не могу найти переменную Gitlab CI, которая указывает результат задания для уточнения в оповещении по электронной почте.
Кроме того, в моем послескрипте я могу написать условие, но я проверяю, может ли кто-нибудь предоставить лучшее альтернативное решение.
Возможно вас заинтересуют новые
stage
предоставить работу уведомления по электронной почте.
Пример полного
.gitlab-ci.yml
:
stages:
- build
- notify
build_job:
stage: build
script:
- echo "Your awesome script"
allow_failure: false # it's here just clarify the workflow, it's false by default
email_alarm:
stage: notify
when: on_failure
script:
- echo "Your alarm notification to email"
email_success:
stage: notify
when: on_success
script:
- echo "Your success notification to email"
Итак, вот оно:
email_alarm
будет выполняться только в случае неудачи. А также
email_success
будет выполняться только в случае успешного завершения.
Если вам нужно предоставить какие-то артефакты от на почту - используйте
gitlab artifacts
в
build_job
а также
email_alarm/email_success
рабочие места.