[GitHub] PR 자동으로 생성하기

2025. 12. 20. 18:04·GITHUB

개인 프로젝트를 혼자 진행할 때가 있다.

혼자 하더라도 체계는 갖추고 싶어 적어도 Jira와 PR은 사용하고 있다.

PR을 생성하기 위해, GitHub에 접속하고 Jira 번호를 설명란에 작성하는 과정이 번거로웠다.(귀찮았달까?ㅎ)

 

그래서 PR을 자동으로 생성하는 CI를 만들어보고자 했다.

GitHub Actions

추가적인 설치없이 CI를 추가하기 위해 GitHub Actions를 사용한다.

Workflow

하나의 자동화된 전체 프로세스를 workflow라고 부른다.

예를들어 어떠한 이벤트(git push, pr 생성 등)가 발생하면, 이벤트를 감지해 설정해놓은 일을 실행하는 일련의 프로세스를 뜻한다.


크게 `job` 단위로 작업을 구분하고, 각 job은 `step` 단위를 통해 단계별로 실행한다.
job은 복수 개가 있을 수 있으며, 여러 job이 독립적으로 실행될 수도 있고, 다른 job끼리 의존되게 실행될 수도 있다.

 

Github Action의 코어 개념에서 좀 더 자세한 설명을 볼 수 있다.ㅎㅎ

 

Github Action에 대한 소개와 사용법

Github Action은 github에서 공식적으로 제공하는 CI/CD 툴, 다시 말해 개발의 work flow를 자동화할 수 있게 도와주는 툴이다. CI는 Continuous Integration(지속적 통합), CD는 Continuous Delivery(지속적 전

velog.io

 

자동으로 PR 생성하기

push가 되면 자동으로 PR을 생성하는 workflow를 공유한다.

 

흐름은 다음과 같다.

1. `feature/[이슈키]` 브랜치에서 push 이벤트 발생

2. 브랜치명에서 이슈키 추출

3. 지라 이슈 제목 가져오기 (PR의 제목으로 설정할 예정)

4. PR 생성

5. 생성된 PR에 `assignee` 추가

- 혹시 지라를 사용하지 않는다면, 해당 step에서 Jira 관련 부분을 제거하세요 :)
- `https://[USER_NAME].atlassian.net`에서 [USER_NAME]은 당신의 Jira 주소를 넣어주세요 :)
name: Auto PR

permissions:
  contents: read
  pull-requests: write
  issues: write

on:
  push:
    branches:
      - "feature/TEST-*"

jobs:
  auto-pr:
    runs-on: ubuntu-latest
    steps:
      - name: 체크아웃
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 브랜치명에서 지라 이슈키 추출
        run: |
          branch="${GITHUB_REF#refs/heads/}"
          echo "branch=$branch" >> $GITHUB_ENV
          if [[ "$branch" =~ ([A-Z]+-[0-9]+) ]]; then
            echo "issue_key=${BASH_REMATCH[1]}" >> $GITHUB_ENV
          else
            echo "issue_key=" >> $GITHUB_ENV
          fi

      - name: 지라 이슈 제목 가져오기
        if: env.issue_key != ''
        run: |
          jira_response=$(curl -s -u "${{ secrets.JIRA_EMAIL }}:${{ secrets.JIRA_TOKEN }}" \
            -H "Accept: application/json" \
            "https://[USER_NAME].atlassian.net/rest/api/3/issue/${{ env.issue_key }}")
          title=$(echo "$jira_response" | jq -r '.fields.summary')
          echo "jira_title=$title" >> $GITHUB_ENV

      - name: PR 생성하기
        uses: thomaseizinger/create-pull-request@master
        with:
          GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
          head: ${{ github.ref_name }}
          base: develop
          title: "[${{ env.issue_key }}] ${{ env.jira_title }}"
          body: |
            자동 생성된 PR입니다.
            - 지라이슈: [${{ env.issue_key }}](https://[USER_NAME].atlassian.net/browse/${{ env.issue_key }})

      - name: PR에 Assignee 추가하기
        uses: actions/github-script@v7
        with:
          script: |
            const { repo, owner } = context.repo;
            const prList = await github.rest.pulls.list({
              owner,
              repo,
              head: `${owner}:${process.env.branch}`,
              state: 'open'
            });

            if (prList.data.length > 0) {
              const prNumber = prList.data[0].number;

              // Assignee 추가
              await github.rest.issues.addAssignees({
                owner,
                repo,
                issue_number: prNumber,
                assignees: [owner]
              });

              console.log(`Assignee를 ${owner}로 추가 완료 :)`);
            } else {
              console.log("PR을 찾지 못했습니다. :(");
            }
        env:
          GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
          branch: ${{ github.ref_name }}

 

GH_TOKEN

PR을 생성하고 수정하는 작업에는 토큰이 필요하다.

GitHub 개인 토큰 만들기에서 쉽게 만들 수 있다.

 

만들 때 하단에 `Permissions`가 있는데, 그 중 Repository Permissions에서 몇 가지 선택을 해야한다.

레포지토리의 내용(commit, branch 등)을 읽을 권한 설정
PR에 관련된 내용(label, assignee 등)을 읽고 쓰는 권한 설정

 

이제 생성을 하면 토큰이 만들어진다.

만들어진 토큰은 최초 1회 이후에는 확인이 안 되니, 다른 곳에서도 쓸거라면 꼭 저장을 해둔다!

GITHUB_TOKEN 네이밍은 되지 않으니 참고해주세요 :) 

 

이제 GitHub Repository로 이동 후, `Settings > Secret and variables > Actions`에서 Repository secret에 토큰을 등록한다.

이름이 꼭 `GITHUB_TOKEN`일 필요는 없어요..!
하지만 이름을 바꾸면 workflow의 `secret.GITHUB_TOKEN`명도 바꿔줘야 해요 :)

JIRA_EMAIL & JIRA_API_TOKEN

workflow에 `JIRA_EMAIL`과 `JIRA_API_TOKEN`가 있다.

Jira의 제목명을 가져오기 위해 사용한다.

 

Jira 토큰은 Jira토큰 발급하기에서 쉽게 만들 수 있고, 이메일은 현재 Jira에 등록해둔 이메일을 사용하면 된다.

이 두 개 또한 Repository secret에 등록하면 끝이다.

PR 생성

이제 이 워크플로우를 commit & push 하면 자동으로 PR이 생성된다.

자동으로 생성된 PR

이제 push 한 다음에 생성해야하는 귀찮음이 사라졌다!!

이제 누가 리뷰도 해주면 좋겠다..

'GITHUB' 카테고리의 다른 글

[GitHub] AI가 해주는 PR 리뷰  (0) 2025.12.21
'GITHUB' 카테고리의 다른 글
  • [GitHub] AI가 해주는 PR 리뷰
긴가민가
긴가민가
dev-gingaminga 님의 블로그 입니다.
  • 긴가민가
    긴가민가한 개발
    긴가민가
    • GitHub
  • 전체
    오늘
    어제
    • ALL (6) N
      • FRONTEND (0)
      • BACKEND (0)
      • LANGUAGE (0)
      • GITHUB (2) N
      • BLOG (4) N
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

  • hELLO· Designed By정상우.v4.10.5
긴가민가
[GitHub] PR 자동으로 생성하기
상단으로

티스토리툴바