管道成功完成时发送 e-mail/webhook 调用
Send e-mail/webhook call on successful pipeline completion
我们使用 Gitlab 进行源代码控制和 CI/CD。
当特定分支上的管道成功完成时,我想通知我们的测试人员我们的应用程序已在测试环境中更新。
这样做的标准是,如果管道 a) 成功完成并且 b) 在特定分支上,我只想发送一个 e-mail/call 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)。这很容易在 Teams 上设置,所以我不需要为此担心。
我调查了 Gitlab 上的一些 Integrations 选项。例如,您可以设置 Teams 集成,或 E-mail on Push 集成。 None 但是 因为它们不允许我过滤 只有 a) 成功和 b) 在特定分支上的管道.
我还调查了 Gitlab 上的 Webhooks 选项,但这不适用于 Teams - 我得到一个 400 error summary text required
似乎无法克服(因为有无法从 Webhooks UI).
添加这样的摘要
因此假设我不能使用 Gitlab 的 UI 功能(很高兴接受这个问题的答案,但是如果我们能够满足上述标准),我现在正在考虑如何使用 Docker,就像我们在管道的其他部分所做的那样,发送电子邮件或调用 webhook。
在 Gitlab CI/CD 管道中,quickest/easiest/最少行数 的方法是什么?
我很确定 build-master
舞台使用的 docker
图像上有一个 curl
。因此,可以在 build-master
的最后一行调用一些外部电子邮件服务,如 sendgrid.com
...
- 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
我们使用 Gitlab 进行源代码控制和 CI/CD。
当特定分支上的管道成功完成时,我想通知我们的测试人员我们的应用程序已在测试环境中更新。
这样做的标准是,如果管道 a) 成功完成并且 b) 在特定分支上,我只想发送一个 e-mail/call 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)。这很容易在 Teams 上设置,所以我不需要为此担心。
我调查了 Gitlab 上的一些 Integrations 选项。例如,您可以设置 Teams 集成,或 E-mail on Push 集成。 None 但是 因为它们不允许我过滤 只有 a) 成功和 b) 在特定分支上的管道.
我还调查了 Gitlab 上的 Webhooks 选项,但这不适用于 Teams - 我得到一个 400 error summary text required
似乎无法克服(因为有无法从 Webhooks UI).
因此假设我不能使用 Gitlab 的 UI 功能(很高兴接受这个问题的答案,但是如果我们能够满足上述标准),我现在正在考虑如何使用 Docker,就像我们在管道的其他部分所做的那样,发送电子邮件或调用 webhook。
在 Gitlab CI/CD 管道中,quickest/easiest/最少行数 的方法是什么?
我很确定 build-master
舞台使用的 docker
图像上有一个 curl
。因此,可以在 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