목록 보기
Release PR만들어질때, Jira 이슈에 배포 버전 자동으로 추가하기(feat. GitHub Action)
기타

Release PR만들어질때, Jira 이슈에 배포 버전 자동으로 추가하기(feat. GitHub Action)

PRND
PRND
2023년 12월 6일
  • 회사에서 JIra를 사용하면서 앱 배포버전을 명시하기 위해 fix versions를 활용하고 계신가요? - Release PR이 만들어지면 알아서 해당 작업에 포함된 Jira 이슈들에 fix versions를 추가해줍니다 - 더이상 수동으로 jira이슈에 fix versions 추가하지마세요 안녕하세요. 헤이딜러 안드로이드팀박상권입니다. 기존 jira 이슈에 Release 버전을 추가하는업무방식 Jira를 사용하고 있는 개발자라면 [Releases]라는 배포버전 개념을 사용하고계실겁니다. 보통 크게 아래 2가지중 1가지 방식으로 Jira 이슈의 버전관리(fix versions)를 하고있습니다. [업무방식 1] 이슈 만들때 fix versions추가 Jira 이슈마다 이 작업이 어느 버전에 반영될지 fix versions에 해당 배포 버전을 명시하도록합니다. 만약 이슈를 만들때 누락해서 fix versions를 추가 하지 않으면 놓치는 경우가발생 [업무방식 2] Release PR에 작업된 이슈들을 fix versions추가 실제 Release PR을 만드는 시점에 해당 PR에 포함된 이슈들에 배포될 버전을 fix versions로 추가 매번 수동으로 PR의 모든 이슈를 찾아서 추가하는 것이번거로움 어떤 업무방식으로 Release의 버전을 관리하고 있었든 문제는있었습니다. GitHub Action 이러한 문제를 해결하기위해 Release PR이 만들어질때, 해당 작업에 포함된 Jira이슈들에 배포되는 해당 Release버전을 자동 기재 하는 Github Actions Workflow를 만들었습니다. 또한 이 기능을 다른 분들도 편하게 사용할 수 있도록 오픈소스로 만들고 Marketplace에 배포해두었습니다. (밥상 다 차려놨으니 숟가락만드세요) Jira issue version by release PR - GitHub Marketplace [구현 로직] release PR로부터 버전 정보extract repository정보로부터 commits를 가져와 그 안에서 Jira이슈 keyextract Jira API를 통해 해당 이슈들 정보가져오기 Jira API로 해당 Jira이슈의 Fix version에 버전추가 (추가 옵션) Subtask 이슈 무시 기능 : Jira이슈에서 하위로 만든 Subtask는 보통 fix versions를 넣지않는 경우가 많습니다. : 상위의 task만 fix versions가 추가되고 하위에 만들어진 이슈까지는 넣을필요가 없기때문입니다. Child 이슈 무시 기능 : Epic 이슈로 만들고 하위에 이슈를 만들면 Subtask가 아닌 Task로 이슈가 만들어집니다. : 이러한 경우도 Subtask와 마찬가지로 이 하위 child 이슈에는 fix versions를 넣지 않는 경우가많습니다. 사용방법 이 GitHub Action이 각자 회사의 Jira의 프로젝트에 접근하기 위해서는 Auth Token이필요합니다. Atlassian Account 를 통해 APItoken발급 Jira계정 이메일주소와 API token을 조합해서 텍스트 생성 useremail:api_token 예시) ted@prnd.co.kr:xxxxxxx 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폴더아래에 아래 예제와 같은 방식으로 만드셔서 파일을 넣으시면됩니다. name: Jira issue version by release PR on: pull_request: types: [ opened, synchronize, ready_for_review ] branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Jira issue version by release PR id: add_jira_issue_version uses: PRNDcompany/jira-issue-version-by-release-pr@0.6 with: github-token: $(( secrets.GITHUB_TOKEN )) jira-token: $(( secrets.JIRA_TOKEN )) jira-domain: 'your-domain' jira-version-prefix: 'Customer' - name: Print jira issue keys run: | echo $(( steps.add_jira_issue_version.outputs.jira_issue_keys )) github-token: GitHub에서 사용하는PAT jira-token: 위에서 만든 token(Jira APItoken) jira-domain: Jira의 도메인 이름 ex) https://your-domain.atlassian.net jira-version-prefix: 버전 이름 (고객 1.1.0 이라면 고객'입력) 결과확인 Release PR branch에서부터 버전 이름 10.1.0을 받아서 fix versions 이름을 딜러콜 10.1.0 으로결정했습니다. PR에 있는 commit목록들로부터 Jira 이슈 key를 모두추출합니다. 각 jira 이슈의 정보를 가져와서딜러콜 10.1.0 이 fixVerions에 들어있는지확인합니다. fixVersions에 없는 jira 이슈들에 모두 딜러콜 10.1.0 을 넣어주는 작업을합니다. 작업 결과물 jira_issue_keys: 위의 작업을 통해서 추가된 Jira 이슈들의 key목록을 알 수있습니다. fail_jira_issue_keys: 작업중 실패한 jira 이슈들의 key 목록을 알 수 있습니다. : commit에 존재하지 않는 jira이슈 key를 잘못 적은 경우를 발견가능 아래와 같은 step을 추가해서 문제가 발생할 경우, 댓글을 남기도록 처리할 수도있습니다. // ... - name: Create comment if: $(( steps.add_jira_issue_version.outputs.fail_jira_issue_keys != '[]' )) uses: peter-evans/create-or-update-comment@v3 with: issue-number: $(( github.event.pull_request.number )) body: | @$(( github.event.pull_request.assignee.login )) Jira issue version 추가 문제이슈 발견 $(( steps.add_jira_issue_version.outputs.fail_jira_issue_keys )) token: $(( secrets.PERSONAL_ACCESS_TOKEN )) 여러분들도 저희가 만든 GitHub Actions 파일 추가하셔서 수동으로 작업하시던 Jira버전 관리를 자동화해보세요. GitHub - PRNDcompany/jira-issue-version-by-release-pr: This action extract jira keys from release PR and add version to target jira issue 추가 기능 제안이나 버그가 있다면 issue에 남겨주시거나 댓글로도남겨주세요! 저희와 함께 헤이딜러 서비스를 발전 시켜나가실 분들을 기다리고있습니다. 헤이딜러 더알아보기 많은 관심과 지원 부탁드립니다. 감사합니다. Release PR만들어질때, Jira 이슈에 배포 버전 자동으로 추가하기(feat. GitHub Action) was originally published in PRND on Medium, where people are continuing the conversation by highlighting and responding to this story.

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...