使用釘釘機器人發(fā)送事件通知
運行工作流時,您可能需要在工作流運行結(jié)束或它的某個步驟完成時通知外部系統(tǒng)。例如郵件通知、即時消息(例如釘釘)、消息總線(例如Kafka)。本文以發(fā)送釘釘消息為例介紹如何在工作流運行中發(fā)送消息通知。
前提條件
已創(chuàng)建分布式工作流Argo集群,且工作流集群的VPC具有公網(wǎng)訪問能力。
實現(xiàn)原理
外部系統(tǒng)一般通過暴露HTTP Webhook接口的方式,接受消息輸入。
Argo工作流支持Exit Handler機制。您可以在工作流的步驟中定義
exit-handler
,也可以在工作流本身定義exit-handler
。Exit Handler以容器的方式運行。您可以在容器中運行
curl
命令向外部系統(tǒng)發(fā)送HTTP消息,從而實現(xiàn)事件通知。
步驟一:創(chuàng)建釘釘機器人
創(chuàng)建釘釘機器人后會生成專屬的Webhook地址,通過Webhook地址可以關(guān)聯(lián)到其他服務(wù)接收通知,例如Argo工作流。
設(shè)置完成后,復(fù)制并保存Webhook地址。
步驟二:在工作流中使用釘釘機器人
使用以下YAML示例代碼,創(chuàng)建工作流,并在工作流中使用釘釘機器人。關(guān)于創(chuàng)建工作流的具體操作,請參見創(chuàng)建工作流。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: notification-demo-
spec:
entrypoint: say-hello
onExit: exit-handler # 工作流運行完成后,運行exit-handler。
templates:
- name: say-hello
container:
image: alpine:latest
command: [sh, -c]
args: ["echo hello"]
- name: exit-handler
container:
image: curlimages/curl
command: [sh, -c]
# 運行curl發(fā)送釘釘消息,消息類型為鏈接類型,可以嵌入Argo工作流控制臺鏈接,快速查看工作流詳情。
# 可以引用變量包括:{{workflow.name}} {{workflow.status}} {{workflow.failures}} {{workflow.workflow.duration}}。
args: [
"curl -H 'Content-Type: application/json' -d '{
\"msgtype\": \"link\",
\"link\": {
\"title\":\"Argo workflow notification\",
\"text\":\"WF {{workflow.name}} {{workflow.status}}\",
\"messageUrl\":\"https://argo.xxx.cn-zhangjiakou.alicontainer.com:2746/workflows/default/{{workflow.name}}?tab=workflow\"
}
}'
https://oapi.dingtalk.com/robot/send?access_token=b97fb519129fdfce879baa4e3b905b14e6a64e8994f0ea3b11dda****" #Webhook地址,此處替換為您釘釘群的Webhook地址。
]
發(fā)送的釘釘消息示例如下所示。
相關(guān)文檔
關(guān)于釘釘自定義機器人接入的具體操作,請參見自定義機器人接入。
文檔內(nèi)容是否對您有幫助?