Skip to content

/approve-prs, /merge-prs ์—”๋“œํฌ์ธํŠธ์— ์ธ์ฆ์ด ์ „ํ˜€ ์—†๊ณ , ๋ ˆํฌ ์ œํ•œ๋„ ๋น ์ ธ์žˆ์Œย #46

Description

@SimYunSup

๋ฐฐ๊ฒฝ

์—”๋“œํฌ์ธํŠธ๋งˆ๋‹ค ์ธ์ฆ ๋ฐฉ์‹์ด ์ œ๊ฐ๊ฐ์ž…๋‹ˆ๋‹ค. /webhooks๋Š” ์„œ๋ช…์œผ๋กœ, /internal/*๋Š” ๋น„๋ฐ€ ํ—ค๋”๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ /check-weeksยท/approve-prsยท/merge-prs๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐฉ์–ด๋ผ๊ณ  ํ•  ๋งŒํ•œ ๊ฑด validateOrganization ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ ๋ฐ”๋””์˜ repo_owner๊ฐ€ "DaleStudy"์ธ์ง€๋งŒ ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ฐ’์„ ์•ˆ ๋ณด๋‚ด๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด "DaleStudy"๋ผ์„œ ์•„๋ฌด๋‚˜ ํ˜ธ์ถœํ•ด๋„ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ƒ ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ

/approve-prsยท/merge-prs๊ฐ€ ์“ฐ๋Š” parsePrActionPayload์—๋Š” repo_name์„ leetcode-study๋กœ ๋ฌถ๋Š” ์ฒดํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. check-weeks.js์—๋Š” ์žˆ์Šต๋‹ˆ๋‹ค. CORS๋„ *๋ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์ด ๋‘ ์—”๋“œํฌ์ธํŠธ๋Š” ์ธ์ฆ๋„ ์„œ๋ช…๋„ ๋น„๋ฐ€๊ฐ’๋„ ์—†์ด ๋ฐ”๋””์˜ repo_name๋งŒ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๊ฒŒ์ดํŠธ์ธ ์กฐ์ง ๊ฒ€์ฆ์€ ์ž๊ธฐ ์‹ ๊ณ ๋ผ ์žˆ์œผ๋‚˜ ๋งˆ๋‚˜์ž…๋‹ˆ๋‹ค.

์‹œ๋„

cross-repo ์ชฝ์€ ์ƒ๊ฐ๋ณด๋‹ค week ํ•„ํ„ฐ๊ฐ€ ์–ด๋А ์ •๋„ ๋ง‰์•„์ค๋‹ˆ๋‹ค. /approve-prsยท/merge-prs๋Š” week๋ฅผ ํ•„์ˆ˜๋กœ ๋ฐ›๊ณ  ๊ฐ PR์˜ Projects v2 "Week" ํ•„๋“œ๋กœ ๊ฑฐ๋ฆ…๋‹ˆ๋‹ค. Week ํ•„๋“œ๊ฐ€ ์—†๋Š” PR์€ week: null์ด๋ผ ์–ด๋–ค week๋ฅผ ๋„ฃ์–ด๋„ ๊ฑธ๋ฆฌ์ง€ ์•Š๊ณ  ์Šคํ‚ต๋ฉ๋‹ˆ๋‹ค(approved: 0).

๊ทธ๋ž˜์„œ leetcode-study ๋ณด๋“œ์— ์—†๋Š” ๋ ˆํฌ๋Š” ์ด ๋‘ ์—”๋“œํฌ์ธํŠธ๋กœ ์Šน์ธํ•˜๊ฑฐ๋‚˜ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. daleui.com์˜ ์‹ค์ œ dependabot PR(DaleStudy/daleui.com#86)๋กœ ํ™•์ธํ•ด๋ดค๋Š”๋ฐ ๊ฑธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž„์˜ ๋ ˆํฌ ๋ฌด์ธ์ฆ ์Šน์ธ์€ Week ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๋ ˆํฌ์—์„œ๋งŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์Šน์ธ๊นŒ์ง€๋Š” ์•ˆ ๋˜๋”๋ผ๋„ App ํ† ํฐ์œผ๋กœ PR ๋ชฉ๋ก์ด๋‚˜ ํ”„๋กœ์ ํŠธ ํ•„๋“œ๋ฅผ ์ฝ๋Š” ํ˜ธ์ถœ์€ ๋ฌด์ธ์ฆ์œผ๋กœ ๊ทธ๋ƒฅ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค(App์ด ์„ค์น˜๋œ ๋ ˆํฌ์— ํ•œํ•ฉ๋‹ˆ๋‹ค).

์œ„ํ—˜

๋ฌธ์ œ๋Š” leetcode-study ์ž์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋Š” Week ํ•„๋“œ๊ฐ€ ์žˆ์œผ๋‹ˆ ์•„๋ฌด๋‚˜ {"repo_name":"leetcode-study","week":"<ํ˜„์žฌ ์ฃผ์ฐจ>"} ํ•˜๋‚˜๋งŒ ๋˜์ง€๋ฉด ์ธ์ฆ ์—†์ด ๊ทธ ์ฃผ์ฐจ PR์„ ํ†ต์งธ๋กœ ์Šน์ธํ•˜๊ฑฐ๋‚˜ auto-merge๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šน์ธ๊ณผ ๋ณ‘ํ•ฉ์€ ๋˜๋Œ๋ฆฌ๊ธฐ ํž˜๋“  ๋™์ž‘์ด๋ผ ๊ณง๋ฐ”๋กœ ์‚ฌ๊ณ ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ์ด ๋ณด๋“œ(Week ํ•„๋“œ)๋ฅผ ์“ฐ๋Š” ๋ ˆํฌ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ๊ทธ ๋ ˆํฌ๋“ค๋„ ๋˜‘๊ฐ™์ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ

  • /approve-prsยท/merge-prs(๊ทธ๋ฆฌ๊ณ  /check-weeks)์—๋„ /internal/*์ฒ˜๋Ÿผ ์š”์ฒญ ์ธ์ฆ(๋น„๋ฐ€ ํ—ค๋”๋‚˜ ์„œ๋ช…)์„ ๋ถ™์ž…๋‹ˆ๋‹ค. week ํ•„ํ„ฐ๋Š” ๋ฏฟ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋‹ค ๋ง‰ํžŒ ๊ฒƒ์ด์ง€ ์ธ์ฆ์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • parsePrActionPayload์—๋„ check-weeks.js์ฒ˜๋Ÿผ repo_name === ALLOWED_REPO ์ฒดํฌ๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค. ํ—ˆ์šฉ ๋ ˆํฌ ๋ชฉ๋ก์œผ๋กœ ๊ด€๋ฆฌํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.
  • validateOrganization์ด ๋ฐ”๋”” ์ž๊ธฐ ์‹ ๊ณ  ๋Œ€์‹  ์‹ค์ œ ์ธ์ฆ๋œ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณด๋„๋ก ๊ณ ์นฉ๋‹ˆ๋‹ค.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions