Отправьте e-mail / вызов webhook после успешного завершения конвейера - PullRequest
0 голосов
/ 12 апреля 2019

Мы используем Gitlab для контроля источников и CI / CD.

Я хотел бы уведомить наших тестировщиков, что наше приложение было обновлено в тестовой среде, когда конвейер в определенной ветви успешно завершен.

Критерием для этого является то, что я хочу отправлять электронную почту / вызывать веб-крючок только в том случае, если конвейер a) успешно завершен и b) находится в определенной ветви.

Наши конвейеры CI / CD обычно имеют следующие стадии:

stages:
 - setup
 - compliance
 - test
 - build
 - deploy

Пример одной из частей нашей build сцены, например:

build-master:
  image: docker
  services:
    - docker:dind
  stage: build
  script:
    - docker login -u $DEV_DOCKER_REGISTRY_USER -p $DEV_DOCKER_REGISTRY_PW $DEV_DOCKER_REGISTRY_HOST
    - docker build --pull --build-arg HG_APP_DEPLOY_KEY="$HG_APP_DEPLOY_KEY" -t $DEV_DOCKER_REGISTRY_HOST/$CI_PROJECT_NAME:stable .
    - docker push $DEV_DOCKER_REGISTRY_HOST/$CI_PROJECT_NAME
  only:
    - master

Я пытаюсь найти способ добавить заключительный этап, например, notify, который отправляет электронное письмо (или вызывает веб-крючок) на один из наших каналов Microsoft Teams. Это достаточно легко настроить в командах, поэтому мне не нужно беспокоиться об этом.

Я исследовал несколько вариантов Integrations на Gitlab. Например, вы можете настроить интеграцию Teams или интеграцию E-mail на Push . Ничего из этого не достаточно, однако , потому что они не позволяют мне фильтровать только конвейеры, которые являются a) успешными и b) в определенной ветви .

Я также исследовал опцию Webhooks на Gitlab, но это не работает с командами - я получаю 400 error summary text required, который кажется непреодолимым (так как нет возможности добавить такую ​​сводку из пользовательский интерфейс Webhooks).

Предполагая поэтому, что я не могу использовать функции пользовательского интерфейса Gitlab (однако я рад принять ответ на этот вопрос, если мы сможем соответствовать вышеуказанным критериям), я сейчас думаю о том, как я могу потенциально использовать Docker, как мы это делаем в других частях. конвейера, чтобы отправить электронное письмо или позвонить через веб-крючок.

Каким будет самый быстрый / простой / наименьшее количество строк способ сделать это в конвейере Gitlab CI / CD?

1 Ответ

2 голосов
/ 15 апреля 2019

Я совершенно уверен, что на борту есть curl изображение docker, используемое сценой build-master. Таким образом, некоторые внешние почтовые сервисы, такие как sendgrid.com , могут вызываться в последней строке build-master

...
- docker push $DEV_DOCKER_REGISTRY_HOST/$CI_PROJECT_NAME
- curl --request POST \
   --url https://api.sendgrid.com/v3/mail/send \ ...

Это было бы решением с наименьшими строками кода .

Если в образе докера нет curl, я предлагаю новый этап:

notify_team:
  image: ruby:2.1
  stage: notify
  script:
    - curl --request POST 
        --url https://api.sendgrid.com/v3/mail/send ...
  only: master
...