태그 보관물: jira

Zapier를 이용한 jira, github 이슈 동기화 하기.

스크린샷 2014-08-27 18.25.10

 

sync-jira-github를 사용하여 jira github 이슈 동기화 하기. 에서 소개한 것과 함께, 이번에는 zapier를 사용하여 동기화 하는 방법을 정리한다.

 

sync-jira-github는 JIRA sprint에 발생된 이슈를 쭉 돌면서 등록되지 않은 이슈가 있다면 등록하는 것이고, zapier의 경우에는 사용자가 스토리(zaps)를 등록한 이후부터 이슈가 등록되면 감지하여 등록하는 형태이다.

 

사용법은 쉽다.

스크린샷 2014-08-27 10.34.07

trigger와 action을 설정할 수 있는데, JIRA 6.x에서 new issue가 되면, github에 create issue를 하는 것이다.

 

스크린샷 2014-08-27 18.28.30

jira와 github의 계정을 등록하고 나면, jira에서 project로 추가적인 filter를 설정한다.

스크린샷 2014-08-27 18.30.12

그 다음 github에 등록될때 내용을 어떻게 할 것인지 설정하는데, title에 key, fields summary를 넣고 body에 fields description을 추가 했다.

스크린샷 2014-08-27 10.36.10

그리고 스토리(zaps)이름을 등록하면 완료 된다.

이제 jira에 이슈를 발행하면, 아래와 같이 task history를 통하여 동작되는 것을 확인 할 수 있다.

스크린샷 2014-08-27 18.33.42

zapier는 comment를 동기화해주거나, 상태를 같이 변경해주는 기능은 제공하지 않는다.

sync-jira-github를 사용하여 jira github 이슈 동기화 하기.

스크린샷 2014-08-27 17.51.36

jira를 github를 동기화할 방법을 찾다가, zapier 를 사용하는 방법과, npm lib인 sync-jira-github를 사용하는 두가지 방법을 찾았다.

 

여기서는 sync-jira-github를 사용하여 sync 하는 방법을 소개한다.

 

https://www.npmjs.org/package/sync-jira-github 를 다운 받는다. npm 설치하여 바로 사용할 수 있지만, 일단 마지막 커밋이 2013-4-2로 상당히 오래 되었다.

 

그래서 수정이 필요할 것으로 보여 내 저장소로 fork를 하고, local로 clone했다.

https://github.com/kimalec/jira-github-issue-sync

 

소스를 다운 받고 두가지를 수정하였는데, 그중에 하나는 package.json에서 jira, github npm 버젼을 최신으로 변경하였다.

https://github.com/kimalec/jira-github-issue-sync/commit/d79b006ad748ecde449a675313e5182b28f82716

 

또 한가지는 bin/sync-jira-github가 무조건 npm lib를 호출하도록 되어 있는 것을 상위 sync.js를 호출하도록 하였다. 

https://github.com/kimalec/jira-github-issue-sync/commit/654a17ca2482aeb6594d719196c3c5366ecc2951

 

이렇게 하지 않으면 package.json에 sync-jira-github를 넣어주어야 한다.

 

사용법은 간단하다. project-example.json 를 따라 JIRA 계정정보와 github 계정 정보를 넣어주면 된다.

 

주의 할 것은 userMapping인데 jira와 github모두 협업툴이므로, asign대상을 맞추어 mapping해주어야 하는데 그 정보를 넣어주어야 한다.

“userMapping”: {
          “AlecKim”: “kimalec”,

그런데 문제가 jira에만 있는 계정이거나, JIRA issue가 담당자가 없는 경우에는 대해서는 에러가 발생하게 되어 있다. 나중에 수정할 생각인데 이 경우에는 aleckim에 할당하게 하였다.

var getGhUserFor = function getGhUserFor(jiraUser) {
     var ghuser = context.config.userMapping[jiraUser];
     if(!ghuser) {
              ghuser = ‘kimalec’;
          }
     if(!ghuser) {
               throw new Error(“Can’t find ghuser for jiraUser:” + jiraUser);
     }
     return ghuser;
};