Мы пользуемся Cloud-based версией JIRA, поэтому API может отличаться.
Задача: переименовать спринты в JIRA.
Обращение к спринтам в JIRA реализовано по их ID.
Например, в URL https://account.atlassian.net/secure/RapidBoard.jspa?rapidView=23&view=reporting&chart=sprintRetrospective&sprint=144
ID спринта будет 144.
Реализовано с помощью requests и argparse.
Сам скрипт:
#!/usr/bin/env python
import sys
import requests
import json
import argparse
from urlparse import urljoin
def jira_put(user, password, url, data, headers):
session = requests.Session()
session.auth = (user, password)
data_put = session.put(url, data=json.dumps(data), headers=headers)
data_put.raise_for_status()
def getopts():
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--sprint_id', action='store', dest='sprint_id',
help='Sprind ID to rename, e.g. in https://domain.atlassian.net/rest/greenhopper/1.0/sprint/138'
' - ID=138 ')
parser.add_argument('-u', '--username', action='store', dest='username',
help='Username for JIRA authentication')
parser.add_argument('-p', '--password', action='store', dest='password',
help='Password for JIRA authentication')
parser.add_argument('-n', '--new_sprint_name', action='store', dest='new_sprint_name',
help='New sprint name')
parser.add_argument('-s', '--start_date', action='store', dest='start_date',
help='Sprint start date, in fromat "13/Jul/15 6:00 PM"')
parser.add_argument('-e', '--end_date', action='store', dest='end_date',
help='Sprint end date, in fromat "20/Jul/15 6:00 PM"')
if len(sys.argv) <= 1:
parser.print_help()
sys.exit(1)
else:
return parser.parse_args()
if __name__ == '__main__':
options_set = getopts()
if options_set.username:
jira_username = options_set.username
if options_set.password:
jira_password = options_set.password
if options_set.sprint_id:
sprint_id = options_set.sprint_id
if options_set.new_sprint_name:
new_sprint_name = options_set.new_sprint_name
if options_set.start_date:
start_date = options_set.start_date
if options_set.end_date:
end_date = options_set.end_date
base_url = 'https://domain.atlassian.net/rest/greenhopper/1.0/sprint/'
data = {'name' : new_sprint_name, 'startDate' : start_date, 'endDate' : end_date}
headers = {'Accept': 'application/json', 'Content-type': 'application/json'}
url = urljoin(base_url, sprint_id)
jira_put(jira_username, jira_password, url, data, headers)
И помощь:
d:RDSrdsmanager>libexternalrename_sprint.py
usage: rename_sprint.py [-h] [-i SPRINT_ID] [-u USERNAME] [-p PASSWORD]
[-n NEW_SPRINT_NAME] [-s START_DATE] [-e END_DATE]
optional arguments:
-h, --help show this help message and exit
-i SPRINT_ID, --sprint_id SPRINT_ID
Sprind ID to rename, e.g. in https://domain.atla
ssian.net/rest/greenhopper/1.0/sprint/138 - ID=138
-u USERNAME, --username USERNAME
Username for JIRA authentication
-p PASSWORD, --password PASSWORD
Password for JIRA authentication
-n NEW_SPRINT_NAME, --new_sprint_name NEW_SPRINT_NAME
New sprint name
-s START_DATE, --start_date START_DATE
Sprint start date, in fromat "13/Jul/15 6:00 PM"
-e END_DATE, --end_date END_DATE
Sprint end date, in fromat "20/Jul/15 6:00 PM"
Пример вызова:
d:RDSrdsmanager>libexternalrename_sprint.py -u someuser -p somepassword -i 138 -n "Sprint 1 Stingray (1.1)" -s "13/Jul/15 6:00 PM" -e "20/Jul/15 6:00 PM"




