JIRAの本日納期issueをSlackにPostする(pythonJIRAモジュール使ってみた ) | www.yoshiislandblog.net

JIRAの本日納期issueをSlackにPostする(pythonJIRAモジュール使ってみた )

pythonのjiraモジュール使ってみた。
Slackで終わっていないissueはスターをつけたいので、JIRAのissueがいっぺんにPostされるというより、別メッセージとして一つ一つポストされるように工夫した。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#python3.5.0

# ======================
# import modules

import sys
from jira.client import JIRA #jira
import urllib.request, urllib.parse, urllib.error #python3
import datetime

# ======================
# set variables

username = '<username>' 
jira_password = '<jira password>'
post_channel = '<post channel>'
slack_botname = '<bot name>'
slack_token = '<token>'
slack_icon = ':information_desk_person::skin-tone-3:'

today = datetime.date.today() #例えば'2016-10-06'のように出力される

# slack
url = "https://slack.com/api/chat.postMessage"
params = {'token': slack_token,
		'channel': post_channel,
		'text': 'error', # 送信するテキスト(デフォルト)
		'icon_emoji': slack_icon,
		'username': slack_botname
		}

# ======================
# greeting

def Greeting():

	params['text'] = '本日(%s)納期のissueは以下の通りです。' % today

	req = urllib.request.Request(url) #python3
	req.add_header('Content-Type', 'application/x-www-form-urlencoded') # ヘッダ追加
	params = urllib.parse.urlencode(params).encode('utf-8') #encode python3

	with urllib.request.urlopen(req, params) as res: #python3
		data = res.read().decode("utf-8")
		print(data)

# ======================
# post jira tickets which duedate is today

def GetJiraIssues():

	# JIRA
	options = {
	'server': 'http://<url>',
	'verify': False,
	'rest_api_version': '2',
	}

	jira = JIRA(options, basic_auth=(username, jira_password))

	all_proj_issues_but_duedate_today = jira.search_issues('project = XXX AND issuetype = Epic AND 納期 = %s' % today)
	list = [issues_in_proj.fields.summary for issues_in_proj in all_proj_issues_but_duedate_today]

	#quit when no tickets listed
	if len(list) == 0:

		params['text'] = '→本日納期issueはございません。' # 送信するテキスト
		req = urllib.request.Request(url) #python3
		req.add_header('Content-Type', 'application/x-www-form-urlencoded') # ヘッダ追加
		params = urllib.parse.urlencode(params).encode('utf-8') #encode python3

		with urllib.request.urlopen(req, params) as res: #python3
			data = res.read().decode("utf-8")
			print(data)
			sys.exit()


	#send list of tickets
	for i in list:
		print(i)

		params['text'] = i # 送信するテキスト
		req = urllib.request.Request(url) #python3
		req.add_header('Content-Type', 'application/x-www-form-urlencoded') # ヘッダ追加
		params = urllib.parse.urlencode(params).encode('utf-8') #encode python3

		with urllib.request.urlopen(req, params) as res: #python3
			data = res.read().decode("utf-8")
			print(data)

# ======================
# execution

if __name__ == "__main__":
	Greeting(url, params)
	GetJiraIssues(url, params)
%d bloggers like this: