成功完成管道后发送电子邮件/ webhook电话

问题描述 投票:0回答:1

我们使用Gitlab进行源代码控制和CI / CD。

我想通知我们的测试人员,当特定分支上的管道成功完成时,我们的应用程序已在测试环境中更新。

对此的标准是,如果管道a)成功完成并且b)在特定分支上,我只想发送电子邮件/调用webhook。

我们的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频道发送电子邮件(或称为webhook)。这很容易设置在团队中,所以我不需要担心这一点。

我在Gitlab上调查了一些Integrations选项。例如,您可以设置Teams集成,或者在Push集成上设置电子邮件。然而,这些都不足以因为它们不允许我仅过滤a)成功的管道和b)在特定分支上的管道。

我还调查了Gitlab上的Webhooks选项,但这对团队不起作用 - 我得到了一个看似无法克服的400 error summary text required(因为没有能力从Webhooks UI添加这样的摘要)。

因此假设我不能使用Gitlab的UI功能(很高兴接受这方面的答案,但是如果我们能够满足上述标准),我现在正在考虑如何使用Docker,就像我们在管道的其他部分一样,发送电子邮件或致电webhook。

在Gitlab CI / CD管道中执行此操作的最快/最简单/最少行数是多少?

gitlab continuous-delivery
1个回答
2
投票

我很确定在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 \ ...

这将是具有最少代码行的解决方案。

如果docker图像中没有curl,我建议一个新的阶段:

notify_team:
  image: ruby:2.1
  stage: notify
  script:
    - curl --request POST 
        --url https://api.sendgrid.com/v3/mail/send ...
  only: master
© www.soinside.com 2019 - 2024. All rights reserved.