• 利用jira-python对jira项目


    前沿:最近需要对jira项目中issue的规范性进行检查,故研究了一下python中的第三方包jira,并在此做以记录。

    参考文档:https://jira.readthedocs.io/en/latest/index.html

    1.安装

    pip install jira

    2.操作实例

    下面是一个快速使用的例子:

     1 # 这个脚本显示了如何在匿名模式下使用客户机
     2 # 域名地址jira.atlassian.com.
     3 from jira import JIRA
     4 import re
     5 
     6 # 默认情况下,客户端将连接到从Atlassian插件SDK启动的JIRA实例。
     7 # 参见:https://developer.atlassian.com/display/DOCS/Installing+the+Atlassian+Plugin+SDK for details
     8 # 使用option参数链接服务
     9 options = {
    10     'server': 'https://jira.atlassian.com'}
    11 jira = JIRA(options)
    12 
    13 # 使用server参数直接链接服务,和上述链接方式任选一种即可
    14 # jira = JIRA(server='https://jira.abcft.com')
    15 
    16 # 匿名权限下获取所有能看到的项目
    17 projects = jira.projects()
    18 
    19 # 按照所有项目的key进行排序并只取key中包含大写字母E的key,然后返回第二个、第三个和第四个key。
    20 keys = sorted(filter(lambda x: re.search(r'E', x), [project.key for project in projects]))[2:5]
    21 
    22 # 获得一个问题
    23 issue = jira.issue('JRA-1330')
    24 
    25 # 找到Atlassians在这个问题上的所有评论
    26 atl_comments = [comment for comment in issue.fields.comment.comments
    27                 if re.search(r'@atlassian.com$', comment.author.emailAddress)]
    28 
    29 # 在这个问题上添加一个评论
    30 jira.add_comment(issue, 'Comment text')
    31 
    32 # 修改已选择问题的摘要和描述
    33 issue.update(
    34     summary="I'm different!", description='Changed the summary to be different.')
    35 
    36 # 在不发送更新的情况下更改问题
    37 issue.update(notify=False, description='Quiet summary update.')
    38 
    39 # 你可以像这样更新整个标签
    40 issue.update(labels=['AAA', 'BBB'])
    41 
    42 # 或者修改现有标签的列表。新标签是没有空格的unicode字符串
    43 issue.fields.labels.append(u'new_text')
    44 issue.update(fields={"labels": issue.fields.labels})
    45 
    46 # 删除这个问题
    47 issue.delete()
    48 
    49 # 将两个问题进行关联
    50 issue = jira.issue('JRA-1330')
    51 issue2 = jira.issue('XX-23')  # could also be another instance
    52 jira.add_remote_link(issue, issue2)

    下面这个例子展示了如何使用JIRA用户名和密码进行身份验证:

     1 from collections import Counter
     2 from jira import JIRA
     3 
     4 jira = JIRA(basic_auth=('admin', 'admin'))    # a username/password tuple
     5 
     6 # 获取此服务器的可变应用程序属性(需要支支系统管理员权限)
     7 props = jira.application_properties()
     8 
     9 # 找到报告人为admin的所有问题
    10 issues = jira.search_issues('assignee=admin')
    11 
    12 # 在报告人为管理员的报告中,问题最多的三个项目
    13 top_three = Counter(
    14     [issue.fields.project.key for issue in issues]).most_common(3)

    下面的例子使用JQL对问题进行删选:

     1 from collections import Counter
     2 from jira import JIRA
     3 
     4 jira = JIRA(basic_auth=('admin', 'admin'))    # a username/password tuple
     5 
     6 # 获取此服务器的可变应用程序属性(需要支支系统管理员权限)
     7 props = jira.application_properties()
     8 
     9 # 获得满足筛选条件的问题
    10 # 第一个条件的作用(项目的key或者id在这个元组中即可)
    11 # 第二个条件的作用是选择问题的状态(open:开放,resolved: 已解决,in progress:处理中,reopened:重新打开,closed:关闭)
    12 # 第三个条件的作用是筛选问题类型为故障
    13 # 第四个条件筛选问题的创建时间在24小时内(Y:年,m:月,d:天,H:小时,M:分钟,S:秒)
    14 # maxResults的作用是一次获取多少个问题,默认为50
    15 issues_in_proj = jira.search_issues(
    16         'project in (EDB, MAP, MAP, NSTS, SJZZQ, SJZXGGYB, SJZD, HSGSSHQ, PCXT, SJZXYBGLXT, SJZXFCTJR) and status=open and issuetype="故障" and created >= "-24H"',
    17         maxResults=100)
  • 相关阅读:
    8.移动和重命名文件
    7.复制文件和目录
    22.变基
    21.拉取&删除远程分支
    程序员必备课程——网络编程入门
    正则表达式——Java程序员懂你
    编程语言的基础——搞定JavaIO
    需加装饰——装饰模式
    结合提供者模式解析Jenkins源码国际化的实现
    算法族的集中管理——策略模式
  • 原文地址:https://www.cnblogs.com/Goongo/p/9550516.html
Copyright © 2020-2023  润新知