[DevCamp] ๐Ÿ”ง GitHub PR ๊ด€๋ฆฌ ์ž๋™ํ™”: GitHub Actions ์„ค์ •ํ•˜๊ธฐ

๋™๊ฑดยท2025๋…„ 5์›” 26์ผ
0

DevCamp

๋ชฉ๋ก ๋ณด๊ธฐ
72/85

๐Ÿ”ง GitHub PR ๊ด€๋ฆฌ ์ž๋™ํ™”: GitHub Actions ์„ค์ •ํ•˜๊ธฐ

Pull Request(์ดํ•˜ PR)๋Š” ์˜คํ”ˆ์†Œ์Šค ํ˜‘์—…๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ณผ์ •์—์„œ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ PR์„ ์ˆ˜๋™์œผ๋กœ ๊ฒ€ํ† ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค.
GitHub Actions๋ฅผ ํ™œ์šฉํ•˜๋ฉด PR ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋Š˜์€ GitHub PR ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ Action ์„ค์ • ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค.


๐Ÿš€ GitHub Actions๋ž€?

GitHub Actions๋Š” CI/CD๋ฅผ ์œ„ํ•œ ์ž๋™ํ™” ๋„๊ตฌ๋‹ค.
ํŠน์ • ์ด๋ฒคํŠธ(์˜ˆ: PR ์ƒ์„ฑ, push ๋“ฑ)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฏธ๋ฆฌ ์ •์˜ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“ฆ PR ๊ด€๋ จ ์ž๋™ํ™” ์˜ˆ์‹œ

  1. PR ์ œ๋ชฉ ๊ฒ€์‚ฌ
  2. ๋ผ๋ฒจ ์ž๋™ ์ง€์ •
  3. ๋ฆฌ๋ทฐ์–ด ์ž๋™ ์ง€์ •
  4. ํ…Œ์ŠคํŠธ ์ž๋™ ์‹คํ–‰

๐Ÿงฉ .github/workflows ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

.github/
โ””โ”€โ”€ workflows/
    โ””โ”€โ”€ pr-check.yml

โœจ PR ์ œ๋ชฉ ๊ฒ€์‚ฌ Workflow ์˜ˆ์‹œ

name: PR ์ œ๋ชฉ ๊ฒ€์‚ฌ

on:
  pull_request:
    types: [opened, edited]

jobs:
  check-title:
    runs-on: ubuntu-latest
    steps:
      - name: PR ์ œ๋ชฉ ํ™•์ธ
        uses: amannn/action-semantic-pull-request@v5
        with:
          types: fix, feat, chore, docs, refactor
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  • PR ์ œ๋ชฉ์ด feat:, fix:, docs: ๋“ฑ ์ •ํ•ด์ง„ prefix๋ฅผ ๋”ฐ๋ผ์•ผ ํ†ต๊ณผํ•จ

๐Ÿ”– ์ž๋™ ๋ผ๋ฒจ ์ง€์ • Workflow ์˜ˆ์‹œ

name: PR ๋ผ๋ฒจ ์ž๋™ ์ง€์ •

on:
  pull_request:
    types: [opened]

jobs:
  add-label:
    runs-on: ubuntu-latest
    steps:
      - name: ํŠน์ • ํŒŒ์ผ ์ˆ˜์ • ์‹œ ๋ผ๋ฒจ ์ถ”๊ฐ€
        uses: actions/labeler@v4
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"

labeler.yml ์„ค์ • ์˜ˆ:

frontend:
  - frontend/**
backend:
  - backend/**

๐Ÿ” ํŒ

  • GITHUB_TOKEN์€ ์ž๋™์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ, PR์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ธ์ฆ ํ† ํฐ์ด๋‹ค.
  • ์—ฌ๋Ÿฌ Workflow๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด ๊ด€๋ฆฌ ํšจ์œจ์ด ๋†’์•„์ง„๋‹ค.
  • action.yml์„ ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค Action ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜์ž.

๐Ÿ”จ TIL

  • GitHub Actions๋ฅผ ํ†ตํ•ด PR ์ œ๋ชฉ ๊ฒ€์‚ฌ, ๋ผ๋ฒจ ์ถ”๊ฐ€ ๋“ฑ์˜ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ฐฐ์›€
  • ํŒ€ ๋‚ด ์ฝ”๋“œ ํ’ˆ์งˆ ์œ ์ง€์™€ ํšจ์œจ์ ์ธ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ํ•„์ˆ˜์ ์ธ ์„ค์ •์ž„์„ ๋А๋‚Œ
  • ์ž‘์€ ์„ค์ •์ด์ง€๋งŒ ํ˜‘์—… ํ™˜๊ฒฝ์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์Šต๊ด€
profile
๋ฐฐ๊ณ ํ”ˆ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€