如何使用Python下载JIRA附件文件

时间:2017-06-06 08:22:46

标签: python-3.4 python-jira

我想在JIRA Python中下载问题的附件文件。

2 个答案:

答案 0 :(得分:0)

JIRA公开了它的REST services,通过它和一些python你可以下载任何附件。

这对我有用(你需要调整变量):

#!/usr/bin/python
# miguel ortiz
# Requests module: http://docs.python-requests.org/en/latest/
# Documentation: <url>

#----------------------------------------------------------------Modules
import sys
import csv, json
import requests

#----------------------------------------------------------------Variables   
myTicket= sys.argv[1] # Your ticket: ABC-123
user = 'miguel'     # JIRA user
pasw = 'password' # JIRA password
jiraURL = 'https://yourinstance.jira.com/rest/api/latest/issue/'
fileName = 'my_attached_file' # In this case we'll be looking for a specific file in the attachments
attachment_final_url="" # To validate if there are or not attachments


def main() :
    print '\n\n [ You are checking ticket: ' + myTicket+ ' ]\n'
    # Request Json from JIRA API
    r = requests.get(jiraURL+myTicket, auth=(user, pasw),timeout=5)

    # status of the request
    rstatus = r.status_code

    # If the status isn't 200 we leave
    if not rstatus == 200 :
        print 'Error accesing JIRA:' + str(rstatus)
        exit()
    else:
        data = r.json()

    if not data['fields']['attachment'] :            
      status_attachment = 'ERROR: Nothing attached, attach a file named: ' + fileName
      attachment_final_url=""
    else:
        for i in data['fields']['attachment'] :
          if i['filename'] == fileName :
             attachment_final_url = i['content']
             status_attachment_name = 'OK: The desired attachment exists: ' + fileName 
             attachment_name = False
             attachment_amount = False
             attachment_files = False
             break
          else :
            attachment_files = False
            status_attachment_name = + 'ERROR: None of the files has the desired name ' 
            attachment_final_url=""
            attachment_name = True
            attachment_amount = True
            continue

    if attachment_final_url != "" :
        r = requests.get(attachment_final_url, auth=(user, pasw), stream=True)
        with open(fileName, "wb") as f: 
            f.write(r.content.decode('iso-8859-1').encode('utf8'))
        f.close()
    else: 
        print status_attachment

if __name__ == "__main__" :
 main()

如果您不理解我在my blog中更好地详细说明的代码。

编辑:请注意,在JIRA中,您可以添加许多具有相同名称的文件。

答案 1 :(得分:0)

我使用jira python lib,你可以使用pip install JIRA

 # -- coding: UTF-8 --
    from jira import JIRA
    import requests
    url = 'https://jira.1234.com'
    jira = JIRA(server=url, basic_auth=('admin', 'password'))
    attachment=jira.attachment(12345) #12345 is attachment_key
    image = attachment.get()
    with open("Image.png", 'wb') as f:
        f.write(image)