@@ -28,32 +28,35 @@ Fork PR์์๋ ์๋ํ๋๋ก GitHub Projects v2์ Week ํ๋๋ฅผ ์กฐํํ
2828
2929```
3030~/work/github/
31- โโโ index.js # Worker ๋ฉ์ธ ์ฝ๋ (์๋ํฌ์ธํธ ๋ผ์ฐํ
)
32- โโโ wrangler.jsonc # Cloudflare Workers ์ค์
33- โโโ .env # ๋ก์ปฌ ํ๊ฒฝ ๋ณ์ (์ปค๋ฐ ์ ์ธ)
34- โโโ .gitignore # Git ์ ์ธ ํ์ผ
35- โโโ handlers/ # ๊ธฐ๋ฅ๋ณ ํธ๋ค๋ฌ
36- โ โโโ check-weeks.js # PR Week ์ค์ ๊ฒ์ฌ (์๋ ํธ์ถ์ฉ)
37- โ โโโ webhooks.js # GitHub webhook ์ด๋ฒคํธ ์ฒ๋ฆฌ
38- โโโ utils/ # ๊ณตํต ์ ํธ๋ฆฌํฐ
39- โ โโโ cors.js # CORS ํค๋ ๋ฐ ์๋ต ์ ํธ๋ฆฌํฐ
40- โ โโโ github.js # GitHub ์ธ์ฆ ๋ฐ API ์ ํธ๋ฆฌํฐ
41- โ โโโ webhook.js # Webhook signature ๊ฒ์ฆ
42- โโโ README.md # ํ๋ก์ ํธ ์ค๋ช
43- โโโ DEPLOYMENT.md # ๋ฐฐํฌ ๊ฐ์ด๋
44- โโโ AGENTS.md # ์ด ํ์ผ (AI ์์ด์ ํธ ๊ฐ์ด๋)
45- โโโ CLAUDE.md # Claude Code ์ฐธ์กฐ ํ์ผ (AGENTS.md๋ก ๋ฆฌ๋ค์ด๋ ํธ)
46- โโโ *.pem # GitHub App Private Keys (์ปค๋ฐ ์ ์ธ)
31+ โโโ index.js # Worker ๋ฉ์ธ ์ฝ๋ (์๋ํฌ์ธํธ ๋ผ์ฐํ
)
32+ โโโ wrangler.jsonc # Cloudflare Workers ์ค์ ๊ณผ vars
33+ โโโ package.json # Vitest ํ
์คํธ ์คํฌ๋ฆฝํธ ๋ฐ devDependencies
34+ โโโ bun.lock # Bun ์์กด์ฑ lockfile
35+ โโโ vitest.config.js # Cloudflare Workers Vitest integration ์ค์
36+ โโโ .github/workflows/ # CI ์ํฌํ๋ก์ฐ (bun install โ bun run test)
37+ โโโ handlers/ # ๊ธฐ๋ฅ๋ณ ํธ๋ค๋ฌ์ ํธ๋ค๋ฌ ๋จ์ ํ
์คํธ
38+ โโโ utils/ # ๊ณตํต ์ ํธ๋ฆฌํฐ์ ์ ํธ๋ฆฌํฐ ๋จ์ ํ
์คํธ
39+ โโโ tests/ # Worker runtime smoke test์ ๊ต์ฐจ ๋ชจ๋ ํ
์คํธ
40+ โโโ README.md # ํ๋ก์ ํธ ์ค๋ช
41+ โโโ AGENTS.md # ์ด ํ์ผ (AI ์์ด์ ํธ ๊ฐ์ด๋)
42+ โโโ CLAUDE.md # Claude Code ์ฐธ์กฐ ํ์ผ (AGENTS.md๋ก ๋ฆฌ๋ค์ด๋ ํธ)
43+ โโโ *.pem # GitHub App Private Keys (์ปค๋ฐ ์ ์ธ)
4744```
4845
4946### ์ฝ๋ ๊ตฌ์กฐ ์ค๋ช
5047
51- - ** index.js (32์ค) ** : ์๋ํฌ์ธํธ ๋ผ์ฐํ
๋ง ๋ด๋น. pathname๋ณ ํธ๋ค๋ฌ ํธ์ถ
52- - ** handlers/** : ๊ธฐ๋ฅ๋ณ ํธ๋ค๋ฌ
48+ - ** index.js** : ์๋ํฌ์ธํธ ๋ผ์ฐํ
๋ง ๋ด๋น. pathname๋ณ ํธ๋ค๋ฌ ํธ์ถ
49+ - ** handlers/** : ๊ธฐ๋ฅ๋ณ ํธ๋ค๋ฌ์ ` *.test.js ` ํธ๋ค๋ฌ ๋จ์ ํ
์คํธ
5350 - ` check-weeks.js ` : PR Week ์ค์ ๊ฒ์ฌ, ๋๊ธ ์์ฑ/์ญ์
54- - ** utils/** : ์ฌ๋ฌ ํธ๋ค๋ฌ์์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ์ ํธ๋ฆฌํฐ
51+ - ` webhooks.js ` : GitHub webhook ์ด๋ฒคํธ ์ฒ๋ฆฌ
52+ - ` internal-dispatch.js ` : self-fetch ๋ด๋ถ AI ํธ๋ค๋ฌ ๋์คํจ์น
53+ - ` approve_prs.js ` , ` merge_prs.js ` : PR ์ผ๊ด ์น์ธ/๋ณํฉ
54+ - ** utils/** : ์ฌ๋ฌ ํธ๋ค๋ฌ์์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ์ ํธ๋ฆฌํฐ์ ` *.test.js ` ์ ํธ๋ฆฌํฐ ๋จ์ ํ
์คํธ
5555 - ` cors.js ` : CORS ํค๋ ๊ด๋ฆฌ ๋ฐ ์๋ต ์์ฑ (` corsResponse ` , ` errorResponse ` )
5656 - ` github.js ` : GitHub App ์ธ์ฆ (JWT, Installation Token), RSA ์๋ช
57+ - ` webhook.js ` : Webhook signature ๊ฒ์ฆ
58+ - ** tests/** : Worker runtime smoke test, subrequest budget, cross-module ํ
์คํธ
59+ - ** vitest.config.js** : ` @cloudflare/vitest-pool-workers ` ๊ฐ ` wrangler.jsonc ` ๋ฅผ ์ฝ๋๋ก ์ค์
5760
5861### ์ ๊ธฐ๋ฅ ์ถ๊ฐ ์
5962
@@ -390,21 +393,24 @@ curl -X POST https://github.dalestudy.com/check-weeks \
390393
391394## ํ
์คํธ
392395
393- ์ด ํ๋ก์ ํธ๋ [ Bun ] ( https://bun.sh ) ์ ๋ด์ฅ ํ
์คํธ ๋ฌ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ณ๋์ ` package.json ` ์ด๋ ์์กด์ฑ ์ค์น ์์ด ํ
์คํธ๋ฅผ ์์ฑํ๊ณ ์คํํ ์ ์์ต๋๋ค .
396+ ์ด ํ๋ก์ ํธ๋ Cloudflare Workers Vitest integration์ ์ฌ์ฉํฉ๋๋ค. Vitest๋ก ํ
์คํธ๋ฅผ ์คํํ๊ณ , Worker ๋ฐํ์๊ณผ ๋ฐ์ธ๋ฉ์ด ํ์ํ ํ
์คํธ๋ Cloudflare ํ
์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค .
394397
395398### ํ
์คํธ ์คํ
396399
397- ํ
์คํธ๋ ` handlers/ ` (ํธ๋ค๋ฌ๋ณ ๋จ์ ํ
์คํธ)์ ` tests/ ` (ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ๊ฐ ํ์ํ ํ
์คํธ)๋ก ๋๋์ด ์๋ค. Bun์ ` vi.mock() ` ์ ํ๋ก์ธ์ค ์ ์ญ ๋ ์ง์คํธ๋ฆฌ์ ๋ฑ๋ก๋์ด ๊ฐ์ ์คํ ๋ด์์ ๋ค๋ฅธ ํ์ผ๋ก ๋์ถ๋๋ฏ๋ก, ๊ฐ์ ๋ชจ๋์ ๋ชจํนํ๋ ํ
์คํธ์ ์ค์ ๊ตฌํ์ ํธ์ถํ๋ ํ
์คํธ๋ ** ๋ณ๋ ` bun test` ํ๋ก์ธ์ค๋ก ์คํ ** ํด์ผ ํ๋ค .
400+ ํ
์คํธ๋ ` handlers/ ` (ํธ๋ค๋ฌ ๋จ์ ํ
์คํธ), ` utils/ ` (์ ํธ๋ฆฌํฐ ๋จ์ ํ
์คํธ), ` tests/ ` (Worker runtime smoke test์ ๊ต์ฐจ ๋ชจ๋ ํ
์คํธ)๋ก ๋๋๋ค. ๋ชจ๋ ๋ชจํน์ Vitest์ ` vi.mock() ` ์ ์ฌ์ฉํ๊ณ , Worker runtime๊ณผ bindings๊ฐ ํ์ํ ํ
์คํธ๋ ` cloudflare: test` ์ ` cloudflare:workers ` ๋ฅผ ์ฌ์ฉํ๋ค .
398401
399402``` bash
400- # ์ ์ฒด ํ
์คํธ ์คํ (๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๋ ํ๋ก์ธ์ค๋ก)
401- bun test handlers/ && bun test tests/
403+ # ์์กด์ฑ ์ค์น
404+ bun install
402405
403- # ํน์ ํ์ผ๋ง ์คํ
404- bun test handlers/webhooks.test.js
406+ # ์ ์ฒด ํ
์คํธ ์คํ
407+ bun run test
408+
409+ # ๊ฐ์ ๋ชจ๋
410+ bun run test:watch
405411
406- # ๊ฐ์ ๋ชจ๋ (ํ์ผ ๋ณ๊ฒฝ ์ ์๋ ์ฌ์คํ)
407- bun test handlers/ --watch
412+ # ํน์ ํ์ผ๋ง ์คํ
413+ bun run test -- handlers/webhooks.test.js
408414```
409415
410416Bun ์ค์น: https://bun.sh/docs/installation
@@ -413,11 +419,11 @@ Bun ์ค์น: https://bun.sh/docs/installation
413419
414420- ํ
์คํธ ํ์ผ์ ๋์ ํ์ผ๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ` *.test.js ` ์ด๋ฆ์ผ๋ก ๋ฐฐ์นํฉ๋๋ค.
415421 - ์: ` handlers/webhooks.js ` โ ` handlers/webhooks.test.js `
416- - ` bun:test ` ์์ ์ ๊ณตํ๋ API(` describe ` , ` it ` , ` expect ` , ` vi ` )๋ฅผ ์ฌ์ฉํฉ๋๋ค.
422+ - ` vitest ` ์์ ์ ๊ณตํ๋ API(` describe ` , ` it ` , ` expect ` , ` vi ` , ` beforeEach ` )๋ฅผ ์ฌ์ฉํฉ๋๋ค.
417423- ์ธ๋ถ ์์กด์ฑ(` utils/github.js ` ๋ฑ)์ ` vi.mock() ` ์ผ๋ก ๋์ฒดํ๊ณ , ` fetch ` ๋ ` globalThis.fetch = vi.fn()... ` ๋ก ์คํ
ํฉ๋๋ค.
418424
419425``` javascript
420- import { describe , it , expect , vi , beforeEach } from " bun:test " ;
426+ import { describe , it , expect , vi , beforeEach } from " vitest " ;
421427
422428vi .mock (" ../utils/github.js" , () => ({
423429 generateGitHubAppToken: vi .fn ().mockResolvedValue (" fake-token" ),
@@ -449,7 +455,7 @@ describe("checkWeeks", () => {
449455
450456### CI ์๋ ์คํ
451457
452- ` .github/workflows/integration.yaml ` ์ด ๋ชจ๋ Pull Request์ ` main ` ๋ธ๋์น ํธ์์์ ` bun test handlers/ ` ์ ` bun test tests/ ` ๋ฅผ ๊ฐ๊ฐ ๋ณ๋ ์คํ
์ผ๋ก ์๋ ์คํํฉ๋๋ค. ํ
์คํธ๊ฐ ์คํจํ๋ฉด PR ์ฒดํฌ๊ฐ ์คํจํ๋ฏ๋ก, ๋จธ์ง ์ ์ ๋ฐ๋์ ํต๊ณผ์์ผ์ผ ํฉ๋๋ค.
458+ ` .github/workflows/integration.yaml ` ์ด ๋ชจ๋ Pull Request์ ` main ` ๋ธ๋์น ํธ์์์ ` bun install ` ๋ค์ ` bun run test ` ๋ฅผ ์๋ ์คํํฉ๋๋ค. ํ
์คํธ๊ฐ ์คํจํ๋ฉด PR ์ฒดํฌ๊ฐ ์คํจํ๋ฏ๋ก, ๋จธ์ง ์ ์ ๋ฐ๋์ ํต๊ณผ์์ผ์ผ ํฉ๋๋ค.
453459
454460## ์ ๊ธฐ๋ฅ ์ถ๊ฐ ๊ฐ์ด๋
455461
@@ -458,7 +464,7 @@ describe("checkWeeks", () => {
4584641 . ** ์๋ํฌ์ธํธ ์ถ๊ฐ** : ` index.js ` ์ ` fetch() ` ํจ์์ ์๋ก์ด pathname ๋ผ์ฐํ
์ถ๊ฐ
4594652 . ** ํธ๋ค๋ฌ ํจ์ ์์ฑ** : ๋น์ฆ๋์ค ๋ก์ง์ ๋ณ๋ ํจ์๋ก ๋ถ๋ฆฌ (์: ` handleCheckAllPrs ` )
4604663 . ** GitHub App ๊ถํ ํ์ธ** : ํ์ํ ๊ถํ์ด ์๋์ง ํ์ธํ๊ณ ์์ผ๋ฉด ์ถ๊ฐ
461- 4 . ** ํ
์คํธ ์์ฑ** : ํธ๋ค๋ฌ ์์ ` *.test.js ` ๋ฅผ ์ถ๊ฐํ๊ณ ` bun test ` ๋ก ํต๊ณผ ํ์ธ (์ "ํ
์คํธ" ์น์
์ฐธ๊ณ )
467+ 4 . ** ํ
์คํธ ์์ฑ** : ํธ๋ค๋ฌ ์์ ` *.test.js ` ๋ฅผ ์ถ๊ฐํ๊ณ ` bun run test ` ๋ก ํต๊ณผ ํ์ธ (์ "ํ
์คํธ" ์น์
์ฐธ๊ณ )
4624685 . ** ๋ฌธ์ ์
๋ฐ์ดํธ** : AGENTS.md, README.md์ ์ ๊ธฐ๋ฅ ๋ฌธ์ํ
4634696 . ** ๋ก์ปฌ ์คํ ํ
์คํธ** : ` wrangler dev ` ๋ก ์ค์ ์๋ํฌ์ธํธ ๋์ ํ์ธ ํ ๋ฐฐํฌ
464470
0 commit comments