앱 배포후 Jira에서 버전 Release처리 자동으로 하는 방법(feat. GitHub Action)

Ted Park
PRND
Published in
6 min readDec 23, 2021

- 앱개발하면서 Jira를 사용하고 계신다면 필수로 적용해야 할 GitHub Action을 소개 해드립니다.
- 더이상 수동으로 Jira Version을 관리하지 마세요

안녕하세요.
헤이딜러 안드로이드팀의 박상권입니다.

어느정도 규모있는 개발팀이 구성되어 있다면 Jira를 이용해서 프로젝트 관리를 하고 계실 겁니다.
(애증의 jira…)

Jira프로젝트에서 Release를 잘 활용하면 배포되는 앱의 버전별 이슈를 효율적으로 관리할 수 있습니다.

기존에 Release 버전을 관리하는 플로우

Release 버전을 사용해서 앱을 배포하고 관리하고 계신다면,
다음과 같은 프로세스로 진행하고 계실겁니다.

  1. 앱을 배포하고 GitHub에서 Release PR을 master(main)으로 merge
    (release/1.0.0 -> master )

2. Jira Release에서 배포된 버전을 오늘 날짜로 [Release]

3. Jira Release에서 다음번 배포될 버전을 [Create]

귀찮습니다😨

Release에서 버전을 배포처리하고, 새로운 버전을 만드는것은 너무 귀찮았습니다.
기계적으로 만드는것이 귀찮은것도 문제였지만
앱을 배포하고 위의 작업을 해야 하는것을 까먹고 안하는 경우가 종종 있었습니다.
(공감하시는 분들 많으시죠..?😅)

[자매품]다른 귀찮음 시리즈 글도 읽어보세요

GitHub Action

위의 포스팅에서와 마찬가지 생각으로
‘어떻게 이 작업을 자동화 할 수 있을까?’를 생각하게 되었습니다.🤔

GitHub Action을 이용해서 이를 자동화 하기로 했습니다.🎉🎉

릴리즈 PR이 master(main)으로 merge될때
1. Jira의 해당 버전을 알아서 오늘날짜로 [Release] 처리해주고
2. 그 다음번 만들어야할 새로운 버전을 [Create] 해줍니다.

또한 이 기능을 다른 분들도 편하게 사용할 수 있도록
오픈소스로 만들고 Marketplace에 배포해두었습니다.
(밥상 다 차려놨으니 숟가락🥄만 드세요)

사용방법

이 GitHub Action이 각자 회사의 Jira의 프로젝트에 접근하기 위해서는
Auth Token이 필요합니다.

  1. Atlassian Account 를 통해 API token발급
  2. Jira계정 이메일주소와 API token을 조합해서 텍스트 생성
    useremail:api_token
    예시) ted@prnd.co.kr:xxxxxxx
  3. BASE64 인코딩
  • Linux/Unix/MacOS:
echo -n user@example.com:api_token_string | base64
  • Windows 7 and later, using Microsoft Powershell:
$Text = ‘user@example.com:api_token_string’
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($Text)
$EncodedText = [Convert]::ToBase64String($Bytes)
$EncodedText

Auth Token이 준비되셨다면,
GitHub Repository의 .github/workflows폴더아래에 아래 예제와 같은 방식으로 만드셔서 파일을 넣으시면 됩니다.

  • domain: Jira의 도메인 이름 ex) https://your-domain.atlassian.net
  • project: 각 프로젝트 ID
  • version: 버전 이름 + 추출한 버전 이름
  • auth-token: 위에서 만든 token(Jira API token)

버전 정보 추출 원리

  • 버전 이름은 release/1.0.0 branch -> main/master branch 로 merge될때
    commit 이름으로부터 1.0.0이라는 버전 이름을 추출하게 됩니다.
  • 추출된 정보로 부터 1.0.0을 Release처리하고 1.1.0 버전을 새로 만드는 것입니다.

결과 확인

  1. 고객 5.35.0, 고객 5.36.0 을 버전으로 관리하고 있는 상태에서
  2. 고객 5.35.0 을 Release처리 하고
  3. 새로운 버전인 고객 5.37.0 을 만들어 주었습니다.

만약 고객 5.35.0배포후 hotfix로 인해 고객 5.35.1 을 만들고 배포한다면?
- 이미 고객 5.37.0 가 만들어져 있기 때문에 고객 5.35.1 를 Release처리만 하고 새로운 버전은 만들지 않게 됩니다.

어때요? 참 쉽죠?

여러분들도 저희가 만든 GitHub Actions 파일 추가하셔서
수동으로 작업하시던 Jira버전 관리를 자동화 해보세요

본인만의 GitHub Action을 활용한 꿀팁이 있다면 댓글로도 남겨주세요!

저희와 함께 헤이딜러 서비스를 발전 시켜나가실 분들을 기다리고 있습니다.

헤이딜러 더 알아보기

많은 관심과 지원 부탁드립니다.
감사합니다.

--

--