Skip to main content

ํƒ€์‚ฌ์—์„œ GitHub ์•ฑ ์„ค์น˜

์•ฑ ์†Œ์œ ์ž๋กœ๋ถ€ํ„ฐ ์ง์ ‘ GitHub Apps๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub Apps ์„ค์น˜ ์ •๋ณด

์ด ๋ฌธ์„œ์—์„œ๋Š” GitHub Marketplace ๋Œ€์‹  ์•ฑ ์†Œ์œ ์ž๋กœ๋ถ€ํ„ฐ ์ง์ ‘ GitHub App์„(๋ฅผ) ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. GitHub Marketplace์—์„œ GitHub Apps ์„ค์น˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐœ์ธ ๊ณ„์ •์„ ์œ„ํ•ด GitHub ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ GitHub ์•ฑ ์„ค์น˜ ๋ฐ ์กฐ์ง์šฉ GitHub ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ GitHub ์•ฑ ์„ค์น˜์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”. ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” GitHub Apps ์„ค์น˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ž์‹ ๋งŒ์˜ GitHub ์•ฑ ์„ค์น˜์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ  ํ•ญ๋ชฉ

์ด ์„ค์น˜ ํ๋ฆ„์€ ํƒ€์‚ฌ ์•ฑ ๋˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†Œ์œ  ์•ฑ์ธ์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๋ชจ๋“  GitHub App์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•ฑ ์†Œ์œ ์ž๊ฐ€ ์ œ๊ณตํ•œ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์•ฑ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค์—์„œ GitHub App์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ, ์กฐ์ง ๋˜๋Š” ๊ฐœ์ธ ๊ณ„์ •์— ์•ฑ์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ณ„์ •์— ๋™์ผํ•œ GitHub App์„(๋ฅผ) ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ์ธ ๊ณ„์ • ๋ฐ ์†Œ์œ ํ•œ ์ผ๋ถ€ ์กฐ์ง์—์„œ ์•ฑ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐœ์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, ์•ฑ์„ ์„ค์น˜ํ•œ ์กฐ์ง, ํ•ด๋‹น ์กฐ์ง์ด ์†Œ์œ ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฑ์„ ์„ค์น˜ํ•  ๋•Œ ์š”์ฒญํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋˜๋Š” ์กฐ์ง ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ์„ธ์Šค ์ค‘ GitHub์€(๋Š”) GitHub App์ด(๊ฐ€) ์š”์ฒญํ•œ ๊ถŒํ•œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ถŒํ•œ์œผ๋กœ GitHub App์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” REST API ์š”์ฒญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ์— ํ•„์š”ํ•œ ๊ถŒํ•œ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๋Š” ์•ฑ์„ ์„ค์น˜ํ•  ๋•Œ GitHub App ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

GitHub App์„(๋ฅผ) ์„ค์น˜ํ•˜๊ธฐ ์ „์— GitHub App์˜ ์†Œ์œ ์ž๋ฅผ ์‹ ๋ขฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ GitHub App์ด(๊ฐ€) ์š”์ฒญํ•˜๋Š” ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๊ฒ€ํ† ํ•˜๊ณ  ํ•ด๋‹น ์‚ฌ์šฉ ๊ถŒํ•œ์„ ํŽธ์•ˆํ•˜๊ฒŒ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ถŒํ•œ์œผ๋กœ GitHub App์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” REST API ์š”์ฒญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ์— ํ•„์š”ํ•œ ๊ถŒํ•œ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ ์ˆ˜์—๋Š” ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

์„ค์น˜์™€ ๊ถŒํ•œ ๋ถ€์—ฌ์˜ ์ฐจ์ด์ 

GitHub App์„(๋ฅผ) ์„ค์น˜ํ•œ ํ›„, ์•ฑ์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ„์ • ๋˜๋Š” ์กฐ์ง์— GitHub App์„(๋ฅผ) ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์•ฑ์ด ์š”์ฒญํ•œ ์กฐ์ง ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์•ฑ์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ์„ธ์Šค ์ค‘์— GitHub App์€(๋Š”) ๋ถ€์—ฌํ•  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์กฐ์ง ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. GitHub App์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ์˜ ๊ถŒํ•œ ์„ ํƒ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด GitHub App ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์—ฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ๋ฌธ์ œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ GitHub App ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub ์•ฑ์„ ์„ค์น˜ํ•˜๋Š” ํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฐ์ƒท. ์•ฑ์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ ๋ฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub App์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด ์•ฑ์ด ์š”์ฒญํ•œ ๊ณ„์ • ๊ถŒํ•œ์— ๋”ฐ๋ผ GitHub๊ณ„์ •์— ๋Œ€ํ•œ ์•ฑ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ๋ถ€์—ฌ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์•ฑ์€ ์•ฑ์ด ๊ณ„์ •์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. GitHub App์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด ์‚ฌ์šฉ์ž ๋Œ€์‹  ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ ๊ถŒํ•œ๋„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด GitHub App ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์—ฌ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ฝ๊ณ  gist๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub ์•ฑ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฐ์ƒท. ์•ฑ์ด ์ด๋ฉ”์ผ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ ๋ฐ gist์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฑ์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š๊ณ  GitHub App์„(๋ฅผ) ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์•ฑ์„ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ์•ฑ์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub Apps ๊ถŒํ•œ ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ์— ๊ถŒํ•œ ๋ถ€์—ฌ ํ•ญ๋ชฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

GitHub App ์„ค์น˜ ์š”๊ตฌ ์‚ฌํ•ญ

๋ˆ„๊ตฌ๋‚˜ GitHub Apps๋ฅผ ๊ฐœ์ธ ๊ณ„์ •์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, Enterprise Managed User ์‚ฌ์šฉ์ž๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

์กฐ์ง ์†Œ์œ ์ž๋Š” ์กฐ์ง์— GitHub Apps๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†Œ์œ ์ž๋Š” ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ  ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋˜๋Š” ํ•ด๋‹น ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์กฐ์ง ์ค‘ ํ•˜๋‚˜๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ณ„์ •์— GitHub Apps๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ์ง์ด ์†Œ์œ ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ฆฌ์ž๋Š” ์กฐ์ง์— GitHub Apps์„(๋ฅผ) ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž์‹ ์ด ๊ด€๋ฆฌ์ž์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ฑ ์•ก์„ธ์Šค๋งŒ ํ—ˆ์šฉํ•˜๊ณ , ์•ฑ์ด ์กฐ์ง ๊ถŒํ•œ์ด๋‚˜ "๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ฆฌ" ๊ถŒํ•œ์„ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง ์†Œ์œ ์ž๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ฆฌ์ž์ธ ์™ธ๋ถ€ ํ˜‘๋ ฅ์ž๊ฐ€ GitHub Apps์„(๋ฅผ) ์„ค์น˜ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ์ง ์†Œ์œ ์ž ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹Œ ์กฐ์ง ๋ฉค๋ฒ„๋„ ์„ค์น˜ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์กฐ์ง์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์€(๋Š”) ์•ฑ์„ ์„ค์น˜ํ•˜๋Š” ๋Œ€์‹  ์กฐ์ง ์†Œ์œ ์ž ์•ฑ ์„ค์น˜๋ฅผ ์š”์ฒญํ•˜๋Š” ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

"์•ฑ ๊ด€๋ฆฌ์ž" ์—ญํ• ์€ ์กฐ์ง ๋˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์— GitHub App์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. GitHub ์•ฑ ๊ด€๋ฆฌ์ž ์ •๋ณด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

GitHub App ์„ค์น˜

์„ค์น˜ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์•ฑ ์†Œ์œ ์ž๋Š” GitHub App์„(๋ฅผ) ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” GitHub URL๋กœ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. URL์€ https://github.com/apps/APP-NAME/installations/new๊ณผ(์™€) ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ APP-NAME์€(๋Š”) GitHub App์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  1. GitHub App์„(๋ฅผ) ์„ค์น˜ํ•˜๋ ค๋Š” ์œ„์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ๊ณ„์ •์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์†ํ•ด ์žˆ๋Š” ์กฐ์ง์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†Œ์œ ์ž์ธ ๊ฒฝ์šฐ, ํ•ด๋‹น ์•ฑ์ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๋ฅผ ์ง€์›ํ•œ๋‹ค๋ฉด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์—๋„ ์•ฑ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฐธ๊ณ  ํ•ญ๋ชฉ

    ์กฐ์ง์—์„œ SAML SSO๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋‚˜์—ด๋œ ์กฐ์ง์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์กฐ์ง์— ๋Œ€ํ•œ ํ™œ์„ฑ SAML ์„ธ์…˜์„ ์‹œ์ž‘ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SAML ๋ฐ GitHub ์•ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ์•ฑ์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋งŒ ์„ ํƒ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์€ ํ•ญ์ƒ GitHub์˜ ๋ชจ๋“  ๊ณต๊ฐœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•ด ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค ์ด์ƒ์˜ ๊ถŒํ•œ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

    ์•ฑ์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค.

  3. ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋งŒ ์„ ํƒ์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ, ์„ ํƒํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋“œ๋กญ๋‹ค์šด์—์„œ ์•ฑ์ด ์•ก์„ธ์Šคํ•˜๋„๋ก ํ•  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์•ฑ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, ์•ฑ์—๋„ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

  4. ์•ฑ์ด ์š”์ฒญํ•˜๋Š” ๊ถŒํ•œ์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ถŒํ•œ์œผ๋กœ GitHub App์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” REST API ์š”์ฒญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ์— ํ•„์š”ํ•œ ๊ถŒํ•œ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  5. ์„ค์น˜, ์„ค์น˜ ๋ฐ ์š”์ฒญ, ๋˜๋Š” ์š”์ฒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์‹œ๋˜๋Š” ๋‹จ์ถ”๋Š” ์กฐ์ง ์†Œ์œ ์ž๊ฐ€ ์•ฑ์˜ ์š”์ฒญ๋œ ์•ก์„ธ์Šค ๊ถŒํ•œ ์ค‘ ์—†์Œ, ์ผ๋ถ€, ๋ชจ๋‘๋ฅผ ์Šน์ธํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„ค์น˜๋Š” ์š”์ฒญํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†Œ์œ ์ž๊ฐ€ ์ง์ ‘ ์•ฑ์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub App ์„ค์น˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.