def create_project(params): api_server = params['api_url'] api_username = params['api_username'] api_password = params['api_password'] auth = (api_username, api_password) jira = JIRA( {'server': api_server}, basic_auth=auth) project_key = params['project_key'] project_name = params['project_name'] assignee = params['assignee'] # create project and view if not jira.create_project(project_key, name=project_name, assignee=assignee): return None proj = jira.project(project_key) board = jira.create_board("{0} View".format(project_name), project_key, preset='scrum') issue = jira.create_issue( project=project_key, summary="Sample Issue for {0}".format(project_name), description="This is just sample", issuetype={"name":"Task"} ) return proj
class JiraTool: def __init__(self): self.server = jira_url self.basic_auth = (usrer, password) self.jiraClinet = None def login(self): self.jiraClinet = JIRA(server=self.server, basic_auth=self.basic_auth) if self.jiraClinet != None: return True else: return False def findIssueById(self, issueId): if issueId: if self.jiraClinet == None: self.login() return self.jiraClinet.issue(issueId) else: return 'Please input your issueId' def deleteAllIssue(self, project): project_issues = self.jiraClinet.search_issues('project=' + project.name) for issue in project_issues: logging.info('delete issue %s' % (issue)) issue.delete() def deleteAllSprint(self, board): sprints = self.jiraClinet.sprints(board.id) for sprint in sprints: logging.info('delete sprint %s' % (sprint.name)) sprint.delete() def getProject(self, name): projects = self.jiraClinet.projects() #logging.info("get project %s" %(name)) for project in projects: #logging.info("project %s" %(project.name)) if (name == project.name): return project return None #return self.jiraClinet.create_project(key='SCRUM', name=name, assignee='yujiawang', type="Software", template_name='Scrum') def getBoard(self, project, name): boards = self.jiraClinet.boards() for board in boards: if (name == board.name): logging.info("board:%s id:%d" % (board.name, board.id)) return board return self.jiraClinet.create_board(name, [project.id]) def createSprint(self, board, name, startDate=None, endDate=None): logging.info("==== create sprint[%s] in board[%s] ====>" % (name, board.name)) sprint = self.jiraClinet.create_sprint(name, board.id, startDate, endDate) return sprint def getSprint(self, board_id, sprint_name): sprints = self.jiraClinet.sprints(board_id) for sprint in sprints: if sprint.name == sprint_name: return sprint return None def createEpicTask(self, project, sprint, summary, description, assignee, participant, duedate): issue_dict = { 'project': { 'key': project.key }, 'issuetype': { 'id': issuetypes['Epic'] }, 'customfield_10002': summary, # epic 名称 'summary': summary, 'description': description, "customfield_10004": sprint.id, # sprint 'assignee': { 'name': assignee }, 'customfield_10303': participant, 'customfield_10302': '2018-08-24T05:41:00.000+0800' } logging.info(duedate) logging.info(issue_dict) #juse for debug issue = self.jiraClinet.create_issue(issue_dict) self.jiraClinet.add_issues_to_sprint(sprint.id, [issue.raw['key']]) logging.info( "===> add epic task[%s key:%s] to sprint [%s]" % (issue.raw['fields']['summary'], issue.raw['key'], sprint.name)) #dumpIssue(issue) #juse for debug return issue def createTask(self, project, sprint, epic, summary, description, assignee, participant): issue_dict = { 'project': { 'key': project.key }, 'issuetype': { 'id': issuetypes['Task'] }, 'summary': summary, 'description': description, 'assignee': { 'name': assignee }, 'customfield_10303': participant } issue = self.jiraClinet.create_issue(issue_dict) logging.info("==> add task[%s key:%s] link epic [%s key: %s]" % (issue.raw['fields']['summary'], issue.raw['key'], epic.raw['fields']['summary'], epic.raw['key'])) self.jiraClinet.add_issues_to_epic(epic.id, [issue.raw['key']]) self.jiraClinet.add_issues_to_sprint(sprint.id, [issue.raw['key']]) return issue def createSubTask(self, project, parent, summary, description, assignee, participant): issue_dict = { 'project': { 'key': project.key }, 'parent': { 'key': parent.raw['key'] }, 'issuetype': { 'id': issuetypes['Sub-Task'] }, 'summary': summary, 'description': description, 'assignee': { 'name': assignee }, 'customfield_10303': participant } issue = self.jiraClinet.create_issue(issue_dict) logging.info("=> add sub task[%s key:%s] to task [%s key: %s]" % (issue.raw['fields']['summary'], issue.raw['key'], parent.raw['fields']['summary'], parent.raw['key'])) return issue