Условный 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рабочие места.

Другие вопросы по тегам