jira增删改查接口

这篇具有很好参考价值的文章主要介绍了jira增删改查接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装

pip install atlassian-python-api==3.40.1 

若安装失败,可尝试加上清华源(-i https://pypi.tuna.tsinghua.edu.cn/simple)

使用

为了防止信息泄露,可将账号密码单独存放到json文件中 ,如credential.json

{
    "name" : "xiaoming",
    "password" : "xiaoming123"
}

jira增删改查操作代码

from atlassian import Jira
from loguru import logger
import json


__all__ = ['JiraHelper']
user_name = ''
user_password = ''

credential = json.load(open('账号密码对应的json存放路径/credential.json'))

if not credential["name"] or not credential["password"]:
    print("Please add your jira username and password to ./credential.json file first then retry")
    quit()
    
class JiraHelper:
    jira_limit_return_number = 50 

    def __init__(self):
        self._jira_api  = Jira('https://jira.holomatic.cn',
            username=credential['name'],
                        password=credential['password'])

    def get_issues_info_by_jql(self, jql):
        """
        :param jql:like this format:
        statusCategory != Done AND (assignee = currentUser() OR  worklogAuthor = currentUser())
        """
        return_issues = []
        if not jql:
            return return_issues
        start = 0
        while True:
            issues = self._jira_api.jql(jql=jql, start=start)['issues']
            if not len(issues):
                break

            start = start + self.jira_limit_return_number
            return_issues.extend(issues)
        return return_issues

    def create_jira_issue(self, issue_fields):
        """
        :param issue_fields: jira issue fields, like this format:
        {
            'project': {'key': 'HOLOTOUR'},#project
            'issuetype': {'name': 'PR'}, #issuetype
            'summary': 'xx节点启动失败(This is a test)',#summary
            'customfield_11601': {'value': '高速'},# Domain 高速/城区/HPA
            'customfield_10407':{'value': 'SwIT'}, #Stage
            'components': [
                {"name": "诊断-高速"}
            ],# components
        }
        ...
        return json str response: like this:
        {'id': '68493', 'self': 'https://jira.holomatic.cn/browse/HOLOTOUR-8680', 'key': 'HOLOTOUR-8680'}
        {'errorMessages': [], 'errors': {'issuetype': 'issue type is required'}}
        """
        return self._jira_api.create_issue(fields=issue_fields)

    def update_issue(self, issue_key, fields):
        """
        :param issue_key: issue key
        {
            "project": { "key" : "HoloTour" },
            "summary": "issue title",
            "description": "this is description field",
            "issuetype": {"id": 10004, "name": "PR"},
            "assignee": {"name": "xuhongyuan"},
            "priority": {"name": "Highest"},
        }
        ...
        return json str response: like this:
        {'id': '68493', 'self': 'https://jira.holomatic.cn/browse/HOLOTOUR-8680', 'key': 'HOLOTOUR-8680'}
        {'errorMessages': [], 'errors': {'issuetype': 'issue type is required'}}
        """
        return self._jira_api.issue_update(issue_key=issue_key, fields=fields)

    def issue_add_comments(self, issue_key, comments):
        """
        add comments
        :param issue_key:
        :param comments:
         return json str response: like this:
        {'id': '68493', 'self': 'https://jira.holomatic.cn/browse/HOLOTOUR-8680', 'key': 'HOLOTOUR-8680'}
        {'errorMessages': [], 'errors': {'issuetype': 'issue type is required'}}
        """
        return self._jira_api.issue_add_comment(issue_key, comments)

    def add_attachment(self, issue_key, file_name):
        """
        :param issue_key:
        :param file_name:
         return json str response: like this:
        {'id': '68493', 'self': 'https://jira.holomatic.cn/browse/HOLOTOUR-8680', 'key': 'HOLOTOUR-8680'}
        {'errorMessages': [], 'errors': {'issuetype': 'issue type is required'}}
        """
        return self._jira_api.add_attachment(issue_key, filename=file_name)

    def get_issue_status(self,issue_key):
        """
        get issue status
        """
        return self._jira_api.get_issue_status(issue_key)

    def get_issue_labels(self,issue_key):
        """
        get_issue_labels
        """
        return self._jira_api.get_issue_labels(issue_key)
    
    def delete_issue(self,issue_key):
        return self._jira_api.delete_issue(issue_key)

if __name__ == '__main__':
    pass
    # # 根据jql查询issue
    # get_issue = jira.get_issues_info_by_jql(f"project = {project} AND key ={jira_keys} ")
    # issue_key = get_issue[0]["key"] # 
    # print(issue_key) 
    
    # 删除
    # jira= JiraHelper()
    # jira.delete_issue('QH1-18373')

针对经常重复创建的jira可创建模板自动生成
具体使用场景示例文章来源地址https://www.toymoban.com/news/detail-654112.html

from jira_helper import JiraHelper
import sys
import argparse
import json

def jira_operation(project: str,
                   node: str,
                   domain: str,
                   component: str,
                   version: str,
                   build_id: int,
                   bug_description: str,
                   tester_analysis: str,
                   jira_keys: str = None,  # HOLOTOUR-8680
                   ):
    jira = JiraHelper()
    allfields = jira._jira_api.get_all_fields()
    namemap = {field['name']: field['id'] for field in allfields}
    # print(namemap.keys())

    projects = [i["key"] for i in jira._jira_api.projects() ]
    print(projects)

    if project not in [i['key'] for i in jira._jira_api.projects()]:
        print("project不存在,请检查输入格式是否正确(GH5/HOLOTOUR/QH1)")
        return
    if build_id == None:
        print("build_id不存在,请检查输入格式是否正确")
        return
    if version not in ['S05','S06','DG']:
        print("version不存在,请检查输入格式是否为(S05/S06/DG)")
        return
    issue_dict = {
        # Basic
        f'{namemap["Project"]}': {"key": project},  # project
        f'{namemap["Issue Type"]}': {"name": 'PR'},  # issuetype
        f'{namemap["Summary"]}': f"{node}节点启动失败(This is a test)",  # summary
        f'{namemap["Domain"]}': {"value": domain},  # Domain 高速/城区/HPA
        f'{namemap["Stage"]}': {"value": "SwIT"},  # Stage
        f'{namemap["Component/s"]}': [
            {"name": component}
        ],  # components
        f'{namemap["Location"]}': "北京",  # Location
        f'{namemap["Detected by"]}': {"value": "测试"},  # Detected by
        # affectedVersion
        f'{namemap["Affects Version/s"]}': [{"name": version}],
        f'{namemap["Release Type"]}': {"value": "Internal"},  # Release Type
        # priority (Highest/High/Middle/Low)
        f'{namemap["Priority"]}': {"name": "High"},
        f'{namemap["Severity"]}': {"value": "B"},  # Severity
        f'{namemap["Req ID"]}': "n/a",  # Req ID
        f'{namemap["TC_ID"]}': "n/a",  # TC_ID
        f'{namemap["Assignee"]}': {"name": "xuhongyuan"},  # assignee
        # f'{namemap["Labels"]}':{'主线日测'},# 'labels'
        # Test
        f'{namemap["BuildID"]}': build_id,  # BuildID
        f'{namemap["Bug type"]}': {"value": "New"},  # Bug type
        # Bug Description
        f'{namemap["Bug Description"]}': bug_description,
        f'{namemap["与TC中的测试步骤一致"]}': {"value": "是"},  # TC中的测试步骤一致
        # Tester Analysis
        f'{namemap["Tester Analysis"]}': tester_analysis,
    }
    

    print(json.dumps(issue_dict,indent=4))

    # 创建jira
    response = jira.create_jira_issue(issue_dict)
    generate_link = 'https://jira.holomatic.cn/browse/' + response['key']
    print("jira创建成功,链接为:",generate_link)


if __name__ == "__main__":
    prog = 'python3 jira_helper.py'
    description = (
        'Run the script to implement the jira operation')

    sys.argv = ' '.join([
        f'cmd',
        f'--project HOLOTOUR',
        f'--domain 高速',
        f'--component 诊断-高速',
        f'--node HoloVSLeftLidar',
        f'--version S06',
        f'--build_id 750386',
        f'--report_html http://192.168.2.113:9998/HoloTour/SWIT-Smoke_Test//test_result_20230816103519_230816_103519.html',

    ]).split()

    parser = argparse.ArgumentParser(prog=prog, description=description)
    parser.add_argument('--project', type=str, default=None,
                        help=f'jira所属项目(HOLOTOUR/QH1)')
    parser.add_argument('--domain', type=str, default=None, help=f'Domian')
    parser.add_argument('--component', type=str, default=None, help=f'模块名')
    parser.add_argument('--node', type=str, default=None, help=f'模块节点名称')
    parser.add_argument('--version', type=str, default=None,
                        help=f'影响版本(如S6/DG),可根据build_id到CI查看')
    parser.add_argument('--build_id', type=int, default=None, help=f'build_id')
    parser.add_argument('--report_html', type=str,
                        default=None, help=f'测试报告链接')

    args = parser.parse_args()
    # user_name = args.username
    # user_password = args.password
    project = args.project
    domain = args.domain
    component = args.component
    node = args.node
    version = args.version
    build_id = args.build_id
    report_html = args.report_html
    
    

    bug_description = f"""
        参考测试报告:
        {report_html}
    """

    tester_analysis = f"""
        1)登录MDC台架:
        ssh root@10.1.3.25 密码:Huawei12#$

        2)进入测试目录smoke/node_launch
        export HOLO_ROOT=/opt/usr/swtest/holotour/{build_id}/output/aarch64-linux-mdc610-2022-1230-llvm/release/target
        cd $HOLO_ROOT
        cd smoke/node_launch

        3)查看测试脚本并验证
        上述目录可以找到以下两个脚本
        行车: holo_node_car_pilot.sh
        泊车: holo_node_car_parking.sh

        从中start部分可以找到对应节点的启动命令,并在$HOLO_ROOT目录下执行相关命令验证问题。
        log文件的输出目录一般是${{HOLO_LOG_ROOT}}/log

        如果节点启动不成功, 可以按以下顺序排查:
        a)检查MANIFEST配置参数arguments是否正确. 注意节点启动命令参数来自于$HOLO_ROOT/share/mdc_manifest/outputcfg/Host0DpMachine对应节点的MANIFEST.json.
        b)其次检查arguments中的参数yaml文件是否安装了正确的版本.
        c)log中输出的其它错误
    """

    jira_operation(
        project=project,
        domain=domain,
        component=component,
        node=node,
        version=version,
        build_id=build_id,
        bug_description=bug_description,
        tester_analysis=tester_analysis
    )

到了这里,关于jira增删改查接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化测试平台(三):用户token验证及用户增删改查接口开发

    上一篇我们实现了用户登录的验证并返回token。那如何去校验请求的token是否有效呢?这篇内容为你讲解token的验证及用户管理(增删改查)的功能。 完整教程地址:《从0搭建自动化测试平台》 项目在线演示地址:http://121.43.43.59/ (帐号:admin 密码:123456)

    2024年02月03日
    浏览(71)
  • Spring Boot+Mybatis实现增删改查接口开发+测试(超详细建议收藏)

    Java也是测试必知必会的内容,特别是现在类似spring boot 等Java框架更是成为主流。之前实现的图书增删改查是用Python实现的,没看过的请移步:Flask+mysql 实现增删改查接口开发+测试(图文教程附源码),本次给大家带来用Java实现的后端接口版本,并根据之前的项目总结有做一

    2024年02月03日
    浏览(50)
  • asp.net core框架搭建1-搭建webapi,对数据增删改查接口模板(附源码)

    作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/131458922 asp.net core 框架搭建2-搭建webapi ,本文章介绍asp.net core webapi框架搭建,然后开发增删改查和工具接口,将一步步带着大家,实现目标。所有操作过程将展现在本篇文章,下面咋们一起来实现它吧。 asp.ne

    2024年02月13日
    浏览(46)
  • 无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口

    通过之前一篇文章 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 的介绍,引入了FreeMarker模版引擎,通过配置模版实现创建和修改物理表结构SQL语句,并且通过配置oracle数据库SQL模版,基于oracle数据库,零代码实现crud增删改查。本文采用同样的方式,

    2024年02月05日
    浏览(45)
  • Jira-使用docker安装jira(支持最新版本)

    Jira-使用docker安装jira(支持最新版本) 本文已不是最新方法,最新方法请参考文档 最新版本已支持到9.5.0 本文仅提供交流学习 本文针对具有docker、Linux使用基础的兄弟姐妹们 请提前安装docker软件 需要原生安装的请联系作者 Linux安装传送门 Windows安装传送门 一、下载镜像 j

    2024年02月09日
    浏览(43)
  • jira项目管理(一)-Docker进行jira本地部署

    本人对jira的了解还只是皮毛,起源公司没有一个好用的项目管理工具,项目管理全靠项目经理的个人能力,一个字累,最需要的功能是看板,能一目了然的看清楚项目现在的进展,对需求和测试进行完善的管理,目前的测试文档基本是形同虚设为了应付事情,文档写的累还没

    2024年02月10日
    浏览(53)
  • Jira最新安装破解文档,企业常用项目管理工具Jira

    安装docker 启动docker 上传并解压(tar -xvf)数据库驱动(tar.gz),上传破解jar包(atlassian-agent.jar) 运行命令,下载镜像并启动mysql容器 进入/var/lib/docker/volumes/mysql_conf/_data/目录,执行命令 vim mysql.cnf 接下来按顺序执行以下命令: 按照指示填,即可破解成功!!!

    2024年02月12日
    浏览(42)
  • Jira 笔记

    https://zhuanlan.zhihu.com/p/619453520?utm_id=0 http://www.51testing.com/zhuanti/jira.htm

    2024年02月09日
    浏览(36)
  • 测试的流程,jira工具的使用

    目录: 测试流程价值与体系 测试计划 业务架构分析思路 bug基本概念 bug处理流程 测试总结 业务架构分析工具plantuml 测试流程管理jira系统-测试流程定制 测试流程管理 jira 系统-Bug管理流程定制 1.测试流程价值与体系  软件测试流程 完成软件测试工作的必要步骤  测试流程价

    2024年02月12日
    浏览(33)
  • JIRA:项目管理的秘密武器

    在当今动态且快速变化的商业环境中,项目管理已经成为任何组织成功的关键因素。能够有效地管理项目,保证项目在设定的时间和预算内按照预期的质量完成,是每个项目经理的目标。为了实现这个目标,项目经理需要依赖强大的工具,而JIRA就是这样一个工具。 JIRA是Atl

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包