본문 바로가기

python

JIRA 글 생성을 python으로 해보자

반응형

JIRA

오늘은 JIRA에 Python 코드를 이용하여 글을 생성하는 방법에 대해 기술하려고 한다.

import requests
from requests.auth import HTTPBasicAuth
import json

# JIRA 인스턴스 URL 및 API 엔드포인트
jira_url = 'https://jira.xxxxxx.com'
api_endpoint_create = '/rest/api/2/issue/'
# 프로젝트 및 이슈 유형에 대한 메타데이터 조회
api_endpoint_field = '/rest/api/2/issue/createmeta'

# 사용자 인증 정보
username = '사용자ID'
api_token = '개인용액세스토큰'

def create_jiraissus(api_endpoint_data):
    # 이슈 생성에 필요한 데이터
    issue_data = {
        "fields": {
            "project": {
                "key": "프로젝트키" #Jira 이슈앞의 keyword, ex) DCS-123 이면 DCS가 키이다.
            },
            "summary": "이슈의 제목",
            "description": "이슈의 설명부분에 들어갈 내용",
            "issuetype": {
                "name": "Task" #Bug / Task / ... 
            },
            "assignee": {
                "name": f"{username}"
            },
            "customfield_10100": "DCS-9809"  # 에픽 링크, 'customfield_10100'은 에픽 링크 필드의 ID입니다.
        }
    }

    # HTTP 요청 헤더
    headers = {
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_token}"
    }

    # API 요청
    response = requests.post(
        jira_url + api_endpoint_data,
        headers=headers,
        data=json.dumps(issue_data)
    )

    # 응답 처리
    if response.status_code == 201:
        print("이슈가 성공적으로 생성되었습니다.")
    else:
        print(f"이슈 생성에 실패했습니다. 상태 코드: {response.status_code}")
        response_data = response.json()
        if response_data:  # 응답 데이터가 None이 아닌지 확인
            print(response_data)
        else:
            print("응답 데이터가 None입니다.")

create_jiraissus(api_endpoint_create)

 

샘플코드는 위와 같다.

 

1. jira_url

JIRA 시스템에 접속하고 있는 URL을 넣으면 된다. .com 또는 .net을 사용하고 있을 테니 여기까지 넣는다.

 

2. api_endpoint_create

JIRA 이슈 생성시에 필요한 내용이다. 이대로 넣으면 된다.

 

3. username

뒤의 메일 정보(@뒤의 내용)는 필요없고, 딱 사용자 이름만 넣으면 된다.

 

4. api_token

'JIRA 페이지 > 사용자프로필 > 개인용 액세스 토큰 > 토큰 만들기' 를 통해 생성된 Key이다.

한번 생성하면 다시 들어가서 확인할 수는 없으니, 생성할 때 잘 적어놓자.

PAT생성하기

 

5. 이슈 생성 시 추가 내용

username 이 '나' 인 경우, 위의 샘플 코드와 같이 JIRA 페이지를 생성하면 보고자가 '나',

assignee 도 '나' 로 생성하였다. 그리고 특정 큰틀(Epic) 하위에 이슈를 생성하기 위해 

Customfield_10100 : "DCS-9809" 라고 넣었다. 

 

여기서 이 Cusomfield 의 10100 을 찾아내는 방법이 몇가지 있다.

1. JIRA관리자와 친하다면 바로 물어본다.

2. 웹페이지의 개발자 도구를 사용하여 알아내는 방법도 있다.

 - 큰틀 연결이 포함되어 있는 JIRA페이지에서 마우스를 큰틀 연결에 가져가 '우클릭 > 검사'를 클릭한다.

 - 우측에 개발자 검사 도구가 출력되는데, 거기서 화면의 큰틀 연결 부분을 찾으녀 이렇게 Customfield를 알아낼 수 있다.

Cutomfield 알아내기

 

이제 이걸로 뭐를 자동화 할 수 있을까???

매주 주기적으로 만들어야 하는 페이지를 자동으로 만들어지도록 윈도우 스케줄러에 걸어놓아도 좋을 거 같다.

 

반응형