使用Python调用JIRA API提交任务日志及相关操作

在工作中,需要用到JIRA项目任务管理平台,对于某项问题划分为若干个子任务,各自分配给不同的人员。因为我们比较特殊,所有人员的任务进度的录入是固定专人录入的,所以单人的录入量相对也比较大。每人每天可能要录入几十个账号的任务日志,所以就有自动登录并提交任务日志并更新任务状态的需求了。
一、python是有第三方的可操作jira API的jira库的,只是我后来才知道,自己没用过,不做评价,有兴趣的可以参考这个哥们写的:

https://blog.csdn.net/weixin_43790276/article/details/89892699?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

二、再就是自己写的原生代码了,以下展开说:
由于任务日志是事先整理到了excel中的,格式如下:
在这里插入图片描述
先是理清下大致流程,编写了伪代码:

  1. 从excel读取账号、密码、日期、任务名称、日志内容
    以下逐条日志循环(因为每个账号对应一条日志,所以即遍历每个账号):
    2. 登录,获取cookie
    3. 访问日志详情:
    ①查出所有问题列表,找到需要提交日志的问题,如果存在该问题:
    ②判断当天是否在该问题提交过日志,如果已经提交过则停止。
    ③如果是首次提交日志,则先 开始进行,然后 提交日志;
    ④如果是最后一次提交日志,则 提交日志后,然后 解决问题。
    如果不是,则继续:
    如果不存在该问题,提示需要创建
    最终的代码:
    main.py 主流程模块
    getExcelIssue.py excel处理模块
    login.py 登录模块
    workLog.py 日志操作模块
    issue.py 问题查询模块
    getIssueId.py 反向匹配任务Id模块
    util.py 工具模块

这里贴上main.py的代码:

# coding=utf8


from util import getStartdate
from getExcelIssue import GetExcelIssue
from getIssueId import GetIssueId
from login import Login
from workLog import WorkLog

# 参数
excelfilepath = "umpriqing.xlsx"   # excel文件路径
sheet = 'HIGNS-4716'               # excel中的sheet名称

urlhome = "http://192.168.176.141:8081"      # JIRA地址
timeLogged = "1d"     # 默认1d
startdate = getStartdate().decode('utf8')    # 此处需要转换编码

excelissueinstance = GetExcelIssue(excelfilepath,sheet)
excelissues = excelissueinstance.get_excel_issues()
print(excelissues)
# 根据row最后一列的0/1判断是否是该子任务的最后一条:1代表最后一条日志
for row in excelissues:
    if str(row[4]) == startdate:
        username = row[1]
        password = row[2]
        issuename = row[3]
        comment =  row[6]
        islastcomment = row[8]
        if comment is not None:
            # print("comment %s" % comment)
            logininstance = Login(urlhome, username, password)
            cookie, atl_token = logininstance.get_cookie()
            if cookie is not None and atl_token is not None:
                print(u"%s 登录成功" % username)
                issueidinstance = GetIssueId(issuename, urlhome, cookie, atl_token)
                issueid, issuekey = issueidinstance.getissueid()
                if issueid != "":
                    # 判断该账号今天是否已经提交过该问题的日志,如果提交过则停止该账号的操作,继续下一个账号
                    workloginstance = WorkLog(urlhome,cookie,atl_token)
                    worklogdates = workloginstance.getWorkLogDate(issuekey)
                    print("worklogdates:",worklogdates)
                    if startdate not in worklogdates or worklogdates == []:
                        print(u"重复提交检查:%s : %s的日志今天没有提交过,可以提交..." % (username,issuekey))
                        startstatuslabel = workloginstance.getStartStatus(issuekey)

                        if startstatuslabel != u'开始进行':
                            print(u"开始状态检查:工作已开始"  )
                        else:
                            print(u"开始状态检查:工作未开始,开始工作"  )
                            resstatus = workloginstance.workstart(issueid)
                        workloginstance.commitWorkLog(issueid, comment, timeLogged)
                        print(u'账号:%s,项目:%s ,问题:%s,日志:%s 提交成功.' % (username, issuekey, issuename, comment))
                        # 判断是否是最后一条日志,如果是则 解决问题
                        if islastcomment == '1':
                            assignissuestatus = workloginstance.assignissue(issueid, username)
                            print(u'解决问题检查:是最后一条日志,执行 解决问题 操作')
                            if 'error' not in assignissuestatus:
                                print(u'已进行操作:解决问题 ')
                            else:
                                print(u'异常:解决问题')
                        else :
                            print(u'解决问题检查:不是最后一条日志,不需操作')
                    else:
                        print(u"重复提交检查:%s : %s的日志今天已经提交过,忽略..." % (username, issuekey))
                        continue
                else:
                    print(u"请检查该子任务是否存在")
            else:
                print(u'%s 登录失败,请检查网络...' % username)

完整代码地址:https://github.com/wangnan229/jirapy

发布了2 篇原创文章 · 获赞 0 · 访问量 62

猜你喜欢

转载自blog.csdn.net/wangnan229/article/details/104451694
今日推荐