Задать вопрос
@AskarKazTeleRadio

GITLAB ci, проблема в последовательности джобов, как лучше сделать?

631f964627b9a127411774.png
Приветствую
Как видите из изображения тестовый CI для эксперимента состоит из трех стадий, первая стадия Подготовка ничего особенного)). Вторая стадия это непосредственно ТЕСТ который состоит из четырех джобов, запускается в ручную в зависимости что нужно, обычно запускается только один из них. Вопрос состоит в последней стадии, задумывалось что оповещение в телеграмм(bash script) отправиться если ОДНА ИЗ джоб преведущей стадии завершилась успешно. Но не получается никак это сделать, КАК СДЕЛАТЬ ТАК, ЧТОБЫ ЕСЛИ ОДНА ИЗ ДЖОБ ВТОРОЙ СТАДИИ ЗАВЕРШИЛАСЬ УСПЕШНО, ЗАПУСКАЛОСЬ ДЖОБА ИЗ ТРЕТЬЕЙ СТАДИИ

Вот как сейчас это выглядит:
include:
  - project: "devops/public-resources/cicd-templates/telegram-notification"
    ref: v1.0.0
    file: "template.yml"

stages:
  - prepare
  - test
  - notificatoin

.common_tags: &common_tags
  tags:
    - tele2-infra-runners

Prepare_job:
  stage: prepare
  image: alpine:latest
  script:
    - echo "prepare"
  <<: *common_tags

test-one:
  stage: test
  image: alpine:latest
  script:
    - echo "test-one"
  needs:
    - Prepare_job
  variables:
    JOB_NAME: $CI_JOB_NAME
  when: manual
  <<: *common_tags

test-two:
  stage: test
  image: alpine:latest
  script:
    - echo "test-two"
  needs:
    - Prepare_job
  variables:
    JOB_NAME: $CI_JOB_NAME
  when: manual
  <<: *common_tags

test-three:
  stage: test
  image: alpine:latest
  script:
    - echo "test-three"
  needs:
    - Prepare_job
  variables:
    JOB_NAME: $CI_JOB_NAME
  when: manual
  <<: *common_tags


test-four:
  stage: test
  image: alpine:latest
  script:
    - echo "test-four"
  needs:
    - Prepare_job
  when: manual
  variables:
    JOB_NAME: $CI_JOB_NAME
  <<: *common_tags

# Notification jobs
Notify Success:
  needs:
    - test-one
    - test-two
    - test-three
    - test-four
  stage: notificatoin
  extends: .telegram_notify
  variables:
    MESSAGE: |
      ✅ Successfully deployed to Production
      test: $JOB_NAME
      Text: THIS IS TEST PIPELINE
  when: on_success

Notify Failure:
  stage: notificatoin
  extends: .telegram_notify
  variables:
    MESSAGE: |
      Text: THIS IS TEST PIPELINE
  when: on_failure


Notify Success:
needs:
- test-one
- test-two
- test-three
- test-four
Это фигня сверху работает если все джобы второй стадии завершились успешно, нам нужно чтобы если хотябы один завершился успешно, запускалось Notify Success)
  • Вопрос задан
  • 427 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Можно конечно наплодить нотификаторов для каждого задания... Но как мне кажется проще "врезать" нотификацию в сами задания шага test

ps. Успех/неуспех проще всего ловить взводя флаг в before_script/script и обрабатывать в after_script
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы