본문 바로가기

C#

C#으로 JIRA API REST 제어/연동하기 #1

반응형

프로젝트를 진행하다 보면 JIRA를 사용하는 경우가 많다.
흔히 우리가 알고있는 아틀라시안 JIRA를 내가 있는 현장에서도 많이 사용하고 있었다.

 

Atlassian | 소프트웨어 개발 및 협업 도구

전 세계 수백 만 사용자가 Atlassian 제품을 이용해 소프트웨어 개발과 프로젝트 관리, 협업, 코드 품질을 개선하고 있습니다.

www.atlassian.com

이번 주제는 이 JIRA를 많이 사용해서 Agile을 진행하면서 과제를 지속적으로 생성하고 관리함에 있어서 팀원들이 불편함을 많이 느끼고 있어서 툴을 하나 만들어보면서 느낀 점과 소스코드 등에 대해서 다루어보려고 한다.

들어가기에 앞서서, Agile(애자일)이 무엇인지 간략히 말하자면, 레드햇에서는 다음과 같이 정의하고 있다.
"애자일은 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식입니다. "

 

애자일 방법론이란?

애자일은 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식입니다.

www.redhat.com

신속한 반복 작업.. 이것을 하기 위해서 JIRA의 티켓을 무수하게 만들어가는 과정 중에 
"자동화를 해서 관리할 수 없나?"
"JIRA 페이지를 다음다음 다음~~ 눌러가면서 생성하는 것 자체도 시간낭비가 많다"
등등의 의견이 팀 내에서 많이 발생하였기에
JIRA API를 사용해서 개발하여
프로젝트 / 라벨 / 담당자 등을 자동으로 기입한 상태로 티켓을 만들어주는 툴을 개발하기로 마음먹었다.

여기서 다루고자 하는 JIRA API는 아래의 페이지를 참고하였습니다.

 

REST APIs

REST APIs The Jira REST APIs are used to interact with the Jira Server applications remotely, for example, when configuring webhooks. The Jira Server platform provides the REST API for common features, like issues and workflows. To get started, read the re

developer.atlassian.com

우선 현재까지 완성된 동작 화면을 보여드리자면, 다음과 같습니다.

로그인화면
로그인인증성공
메인화면

실제로 현장에서 사용 중이고, 이 툴로 인해서 개선된 점은 크게 두 가지가 있다.
1. 티켓을 생성함에 있어서 스트레스가 줄었다.
2. 현재 티켓의 현황을 간략하게 볼 수 있어서 DailyScrum에서 활용하면서 서로의 상황을 이야기하게 되었다.

우선, #1 에서는 로그인 기능에 대해서 다루어보고자 한다.
모든 소스는 깃허브에 등록해두었으니, 더 나은 기능이 있다면, 추가/제어를 해 나가면 좋을 것 같습니다.
느낀 점 피드백 등이 있으면 언제든지 추가할 예정이니 많은 참여 부탁드립니다.

그럼, 시작해보겠습니다.

로그인화면>

Server : 도메인
URL :  도메인/jira/browse/

도메인부분에 사용하시는 JIRA 서버의 URL을 적어주세요.

ID : 실제사용되고있는 유져의 아이디
PW : 실제사용되고있는 유져의 패스워드

사용된 소스는 아래와 같습니다.

using System;
using System.Windows.Forms;

namespace JiraApiControl
{
    public partial class frmLogin : Form
    {
        string id = string.Empty;
        string password = string.Empty;
        string jiraServer = string.Empty;
        string jiraUri = string.Empty;

        public frmLogin()
        {
            InitializeComponent();
        }

        private async void btnLogin_Click(object sender, EventArgs e)
        {
            Jira jira = new Jira();
            if (await jira.Login(txtServer.Text, txtID.Text, txtPW.Text) == false)
            {
                lblResult.Text = "AuthFailed:" + txtID.Text;
                btnRun.Visible = false;
                return;
            }
            else
            {
                jiraServer = txtServer.Text;
                jiraUri = txtURL.Text;
                id = txtID.Text;
                password = txtPW.Text;
                btnRun.Visible = true;

                lblResult.Text = string.Empty;
            }
        }

        /// <summary>
        /// 確認ボタンイベント処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRun_Click(object sender, EventArgs e)
        {
            this.Hide();

            frmMain frmMain = new frmMain(jiraServer, jiraUri, id, password);
            frmMain.Show();
        }

        private void txtPW_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnLogin.PerformClick();
            }
        }
    }
}

btnLogin_Click
 -> 인증버튼 클릭이벤트

btnRun_Click
 -> 확인버튼 클릭이벤트

txtPW_KeyDown
 -> 엔터버튼 눌러졌을때 인증버튼을 대신 눌러주는 이벤트

도메인 정보에 대해서는 외부파일로 구성을 하면 좋았을것 같다는 생각도 들었지만,
제가 근무하는 JIRA의 경우에는 5번 패스워드를 틀리면 계정이 Lock 걸리는 문제가 있기때문에
인증정보를 눈으로 봐가면서 진행할 필요가 있어서 부득이하게 로그인 화면을 구성하였습니다.

편의에 따라서 이 화면을 생략하고 사용하셔도 좋을것 같습니다.

위에서 사용된 KeyEventArgs는 아래의 문서에서 상세한 정보를 얻으실수 있습니다.

 

KeyEventArgs 클래스 (System.Windows.Forms)

KeyDown 또는 KeyUp 이벤트에 데이터를 제공합니다.Provides data for the KeyDown or KeyUp event.

docs.microsoft.com

 

C# JIRA REST API 컨트롤에 대한 소스는 아래에 올려두었습니다.

 

sungmanko/JiraRestAPI

This is a JIRA ticket automatic creation and management project created in C#. - sungmanko/JiraRestAPI

github.com

궁금한것이 있으시면 댓글이나, 깃허브에 코멘트 주세요~
#2 메인화면으로 이어집니다.

즐프합시다~

반응형