Github Action - Create Issue Branch를 활용한 Issue 생성 및 feature branch 생성 자동화

dragonappear·2022년 7월 9일
0

CI/CD

목록 보기
2/2

출처

제목: "[Github Action] Create Issue Branch를 활용한 Issue 생성 및 feature branch 생성 자동화"
작성자: tistory.com(earth-95)
작성자 수정일: 2021년9월26일
링크: https://earth-95.tistory.com/100
작성일: 2022년7월9일

들어가기 전에

Git branch 전략을 토대로 개발을 하기 위해 각 Issue 별로 develop 브랜치 내에 feature 브랜치를 각각 따서 사용하기로 하였다.

이 때, JIRA 같은 협업 툴을 이용하면 자동으로 issue에 맞추어 feature 브랜치 생성이 가능하나, github만 사용할 때에는 issue를 생성한 후 직접 develop 브랜치 내에 feature/#issue 브랜치 생성이 필요했다.

Create Issue Branch(Github Action)을 이용하여 자동화된 스크립트를 작성하면 issue별 브랜치 생성을 해보자.


Create Issue Branch

  • Create Issue Brach는 Issue 생성 시, BranchName으로 정해진 문법에 따라 자동으로 신규 Branch를 생성해주는 Github Action이다.
  • Create Issue Branch를 이용하면 PR(Pull Request) 후 merge 진행 시 자동 Issue close 역시 가능하다.

공식 사이트
https://github.com/marketplace/actions/create-issue-branch#license

  • Create Issue Branch를 APP으로 사용할 경우, 개인이 사용하거나 public organization repoisories에서는 무료이며, private organization repoisories에서는 유료이다.


Installation

Create Issue Branch에서 말하는 설치법은 크게 2가지가 있다.

  1. 레포지토리 자체에 Create Issue Branch App 설치하기
  2. Github Action을 통해 사용하기(yml config에 설정)

1번 방법의 경우, private repository일 경우 유료이다. private repo를 통해깃허브 액션을 사용해볼것이므로 2번을 사용해보자.

Github Action을 통해 사용하기

깃허브의 workflow yml에 아래와 같이 작성한다.
아래 내용은 Crerate Issue Branch 설치방법에서 가져온 YML으로 실제 사용할 때에는 변경이 필요하다.

name: Create Issue Branch
on:
  issues:
    types: [ assigned ]
  issue_comment:
    types: [ created ]
  pull_request:
    types: [ closed ]

jobs:
  create_issue_branch_job:
    runs-on: ubuntu-latest
    steps:
      - name: Create Issue Branch
        uses: robvanderleek/create-issue-branch@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

위 YAML 파일을 간단하게 설명해보면

  • name
    • workflow 이름이다. 깃허브는 해당 워크 플로우가 진행되는 레포지토리의 action 페이지에서 name 명을 보여준다.
  • on.<event_name>.types
    • workflow를 언제 발생시킬 지에 대한 내용으로, 어떤 타입의 activity가 이루어질 때 workflow를 실행할지 작성한다.
    • 위에서는 issues가 assigned 될 때와 pull_request가 close 될 때 발생한다고 보면 된다.
  • jobs.<job_id>
    • 각 job은 하나의 id와 연결되어야 한다.
    • job_id는 String이며 해당 job의 config data의 map이라고 볼 수 있다.
    • 위 코드에서는 create_issue_branch_jobjob_id이며, Action 실행 내역을클릭했을 때 해당 이름으로 Action이 실행되었음을 확인할 수 있다.
  • jobs.<job_id>.runs-on
    • 해당 job을 어떤 machine으로 돌릴지 결정하는 것이다. 위에서는 ubuntu로 돌림을 확인할 수 있다.
  • jobs.<job_id>.steps
    • 하나의 job은 steps라고 불리는 tasks들로 이루어져 있다.
  • jobs.<job_id>.steps[*].uses
    • job에서 실행할 action을 선택하는 것이다.
    • action은 재사용이 가능한 unic code이기 때문에, 위에서는 Create-issue-branch가 구현된 repos를 연결하여 구동하는 것이라고 보면 된다.
  • jobs.<job_id>.steps[*].env
    • 해당 steps를 돌릴 때 사용할 환경변수를 설정하는 것이다.

Github workflow 문법 DOCS
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions

Create Issue Branch에서 추가설정하기

Create Issue Branch에서 제공하는 추가 기능이 여러가지 있지만, 위에서 사용한 항목에 대해 간단히 알아보자

아래 항목들은 모두 default 설정에 overwrite하는 부분이므로, repository 내 .github/issue-branch.yml을 생성하여 작성해야 한다.

PR merge 후 자동 issue close 진행하기

default로 설정할 경우, PR merge 후 Issue가 자동으로 close되지 않는다. 따라서, true로 해당 설정을 변경하면 자동으로 issue를 close 해준다.

Branch name 변경

branchName은 아래와 같이 3가지 방식을 제공해주며, custom으로도 설정이 가능하다.

하지만 brachName에는 "/"는 들어가지 않기 때문에 feature/${issue.number}와 같이 하고 싶다면, Source branch를 따로 생성해주어야 한다.

issue label에 따른 branch name prefix 설정하기

  • branchName은 issue의 label에 따라 prefix를 따로 가져갈 수 있다. 이 때, label에는 wildcard(*) 역시 작동하므로, 모든 label에 대해 하나의 prefix로 가기 위해서는 *로 설정해 볼 수도 있다.

Branch 생성 후 Issue에 생성되는 comment message 내용 수정하기

comment message를 수정하고자 할 때에는 아래 내용처럼 원하느 메시지로 변경하면 된다.


적용 시 유의할 점

Create Issue Branch의 경우,source Branch를 repository의 default brach를 기준으로 진행한다.

따라서, default branch가 main 이라면, main을 source branch로 하여 branch가 신규생성 될 것이기 때문에 자신의 레포지토리의 default branch가 어디인지 확인 후 진행해야 한다.


실제 적용 예시 확인하기

아래 내용은 public repository를 신규 생성하여 create issue branch를 적용해본 예시이다.

  1. 깃허브 액션을 적용하고자 하는 레포지토리에 접근한뒤, Actions 탭을 클릭하여 set up a workflow yourself를 클릭한다. 그 후, Create Issue Branch의 Configure Github Action처럼 소스를 작성한다.

naming을 변경하였으며, issue_comment 관련된 속성을 제외하였기 때문에 그 부분을 변경하여 작성하였다.


  1. branchName 형식 변경 및 branchName의 prefix 설정 그리고 PR merge 후 자동 Issue close를 아래와 같이 .github/issue-branch.yml을 생성하였다.

  1. workflow 설정이 완료되었으니, Issue를 하나 생성한다. Issue 생성 시 ,Assignees를 등록해야 해당 workflow가 작동하니 반드시 Assigness를 등록한다.

  1. Issue 등록 후 Actions 탭에서 확인하면 workflows 가 실행된 것을 확인할 수 있고, 해당 action을 클릭하면 신규 생성된 branch명을 확인할 수 있다. action 로그에 남은 branchName은 새로 생성된 branchName과 일치하는 것을 아래 사진에서 확인할 수 있다.




  1. Issues 생성 및 assignes 지정 -> Action 실행이 완료되면 아래와 같이 Issue에 기존에 지정한 comment로 메시지가 남음을 확인할 수 있다.

  1. 신규 생성된 branch에서 PR을 날린 후 merge를 아래와 같이 진행한다. 그 후, Action 탭을 확인하면 Create Issue Branch Workflow가 다시 한 번 실행됨을 확인할 수 있다.




  1. workflows가 완료되면, 아래와 같이 Issue close가 되는 것까지 확인 가능하다.


추가 공부해야할 부분

  • JIRA 사용법

0개의 댓글