【工具】jira + dingding 任务状态改变发送自定义消息
生活随笔
收集整理的這篇文章主要介紹了
【工具】jira + dingding 任务状态改变发送自定义消息
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
背景
為了通過推式消息告知在Jira上的任務(wù)狀態(tài)發(fā)生變更時(shí),將變更消息自動(dòng)發(fā)送到釘釘(或其他及時(shí)信息通道),以提醒相關(guān)干系人及時(shí)關(guān)注或處理。
本例子主要是應(yīng)用于項(xiàng)目管理
代碼可以根據(jù)自己實(shí)際業(yè)務(wù)情況,自行擴(kuò)展
Python腳本:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # -------------------- # File: PMO釘釘發(fā)送.py # Project: 3.各類腳本 # Purpose: xxxxxxx # Author: Jan Lam (honos628@foxmail.com) # Last Modified: 2019-01-17 13:10:27 # -------------------- from concurrent.futures import ThreadPoolExecutor import hug from requests import post executor = ThreadPoolExecutor(2)# config setting TOKEN_LIST = [#釘釘機(jī)器人:webhook 的 value值,字符串,支持群發(fā) ] JIRA_URL = "" # jira服務(wù)器地址class JiraTask:def __init__(self, data):try:self.issueId = data['issue'].get('key', '')self.status = data['issue']['fields']['status'].get('name', None) # 任務(wù)狀態(tài)self.title = data['issue']['fields'].get('summary', None) # 任務(wù)標(biāo)題self.reporter = data['issue']['fields']['reporter'].get('displayName', None) # 問題報(bào)告人self.created = data['issue']['fields'].get('created', None) # 問題創(chuàng)建時(shí)間self.updated = data['issue']['fields'].get('updated', None) # 問題更新時(shí)間except Exception:returntry:self.fromString = data['changelog']['items'][0].get('fromString', None)self.toString = data['changelog']['items'][0].get('toString', None)except Exception:self.fromString = self.toString = Nonedef _splice_dingtalk_msg(self):url = f'{JIRA_URL}/browse/{self.issueId}'cTime = ''if hasattr(self, 'created'):cTime = self.created.split('T')[0]try: # 觸發(fā)條件:立項(xiàng)評(píng)審中 >> 評(píng)審中if hasattr(self, 'fromString') and self.fromString is not None and self.fromString == 'PMO審核' and self.toString == '立項(xiàng)評(píng)審中':msg = f"#### hi, 大家好, {self.reporter}提交的需求:【[{self.issueId} {self.title}]({url})】進(jìn)入立項(xiàng)評(píng)審,請(qǐng)大家關(guān)注。 ####"else:msg = Noneexcept Exception:msg = Nonereturn msgdef send_dingtalk(self):msg = self._splice_dingtalk_msg()data = {"msgtype": "markdown","markdown": {"title": f'{self.title}',"text": f'{msg}',},"at": {"isAtAll": 'True'}}try:for url in TOKEN_LIST:post(url, json=data, headers={'Content-Type': 'application/json'}, timeout=20)return Trueexcept Exception:return False@hug.post() def pmonotify(body):t = JiraTask(body)message = t._splice_dingtalk_msg()try:if message is not None and message != '':executor.submit(t.send_dingtalk)return {'code': 200, 'status': 'knowledge', 'jira_issue_status': t.status, 'message': '已執(zhí)行發(fā)送釘釘信息:' + message}else:return {'code': -2, 'status': 'failed', 'jira_issue_status': t.status, 'message': 'message為空'}except Exception:return {'code': -1, 'status': 'failed', 'message': '參數(shù)不正確!'}if __name__ == '__main__':hug.API(__name__).http.serve(port=8890) #python api 端口總結(jié)
以上是生活随笔為你收集整理的【工具】jira + dingding 任务状态改变发送自定义消息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【分享】2019张小龙微信公开课要点整理
- 下一篇: 【建模】分析类