๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง‘๐Ÿป‍๐Ÿ’ป Develop/GitHub

Pull Requests ์— ์ž๋™์œผ๋กœ Labels ์ ์šฉํ•˜๊ธฐ (2) - Pull Request Labeler

by dev-jaesoon 2022. 9. 26.

Pull Request Labeler ์ ์šฉ

์ด๋ฒˆ์—๋Š” Pull Request Labeler plugins์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ž๋™์œผ๋กœ label ์ด ์ถ”๊ฐ€๋˜๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค. 

์ž๋™์œผ๋กœ labeling ํ•˜๊ธฐ ์œ„ํ•œ GitHub Actions Plugin

  • .github/workflows/labeler.yml : Pull Request Labeler ๊ฐ€ ์‹คํ–‰๋  ์กฐ๊ฑด์— ๋Œ€ํ•œ workflows๋ฅผ ์ž‘์„ฑ
  • .github/labeler.yml : ์ง€๋‚œ๋ฒˆ์— ์‚ฌ์šฉํ•œ ์„ค์ • ํŒŒ์ผ์— ์ด์–ด์„œ ์ž‘์„ฑํ•ด๋„ ๋ฌด๋ฐฉ

์‹คํ–‰ ์กฐ๊ฑด ์ •์˜

.github/workflows/labeler.yml

pull request ๊ฐ€ opened ๋˜๋Š” reopened ๋˜์—ˆ์„ ๋•Œ, ๊ทธ๋ฆฌ๊ณ  PR์— ์ƒˆ๋กœ์šด Commit ์ด Push ๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. ์ง€๋‚œ๋ฒˆ๊ณผ ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด types๋ฅผ ์—ฌ๋Ÿฌ ์—ด๋กœ ์ž‘์„ฑํ•œ ์ ์ธ๋ฐ, YAML ๋ฌธ๋ฒ• ์ƒ ๊ฐ™์€ ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋Š ์ชฝ๋„ ํฌ๊ฒŒ ์ƒ๊ด€์—†๋‹ค.

name: Pull Request Labeler
on:
  pull_request:
    types:
      - opened
      - reopened
      - synchronize

๊ทธ๋ฆฌ๊ณ  jobs๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š”๋ฐ, Auto Labeler์™€ ํฌ๊ฒŒ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.

jobs:
  labeler:
    runs-on: ubuntu-latest
    steps:
      - name: Check Labels
        id: labeler
        uses: actions/labeler@v4
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"

.github/labeler.yml

์ด๊ณณ์— ํŒŒ์ผ ํ˜•์‹ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋”ฐ๋ผ์„œ ์–ด๋–ค label์„ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ค„ ๊ฒƒ์ธ์ง€ ์ •์˜ํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค. ํฌ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค์–ด

  1. Documents ๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ์„ ๋•Œ
  2. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ์„ ๋•Œ
  3. ํŒจํ‚ค์ง€ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ

๋กœ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด ๋ณด์•˜๋‹ค. ์ง€๋‚œ๋ฒˆ๊ณผ ๊ฐ™์ด Key ์—๋Š” label ์ด Values ์—๋Š” ์‹๋ณ„ํ•  path ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

":pencil2: docs":
  - "**/*.md"

":test_tube: test-code":
  - "spec/**/*.spec.php"
  - "spec/**/*.spec.js"

":package: app:package":
  - package.json
  - package-lock.json
  - composer.json

์ง€๋‚œ๋ฒˆ์— ์‚ฌ์šฉํ–ˆ๋˜ Auto Labeler plugins ์€ labeler ์„ค์ • ํŒŒ์ผ์„ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์— ์ ‘๊ทผํ•˜์—ฌ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋˜ ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ, ๋ฐ”๋กœ ์„ค์ • ํŒŒ์ผ์„ ํ™•์ธํ•ด์„œ ๋ฌธ์ œ์—†์ด ๋ฐ”๋กœ Actions ๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋‹ค.

 

์‹คํ–‰ ๊ฒฐ๊ณผ ํ™•์ธ

PR์„ ์ƒ์„ฑํ•˜๊ณ  ์ผ์ •์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋™์œผ๋กœ github-actions(bot) ์— ์˜ํ•ดlabeling ์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ดํ‰

์ง€๋‚œ๋ฒˆ์— ์‚ฌ์šฉํ•ด๋ณธ Auto labeler ๋ณด๋‹ค Pull Request Labeler๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ auto-labeling plugins ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์— ์•Œ๋งž๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

 

 

๋Œ“๊ธ€