Skip to main content

GitHub ์•ฑ์— ๊ถŒํ•œ ๋ถ€์—ฌ

GitHub App์—์„œ GitHub ๊ณ„์ •์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๋Œ€์‹  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub Apps ๊ถŒํ•œ ๋ถ€์—ฌ ์ •๋ณด

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

GitHub App์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ๋ขฐํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์•ก์„ธ์Šคํ•˜๋ ค๋Š” ์ •๋ณด๋ฅผ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ๋ถ€์—ฌ ์ค‘์— GitHub App์— ๋‹ค์Œ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ผ๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

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

์‚ฌ์šฉ์ž ๋Œ€์‹  ์ž‘์—…ํ•˜๋Š” GitHub Apps ์ •๋ณด

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

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

์•ฑ์ด ์‚ฌ์šฉ์ž ๋Œ€์‹  ์ž‘์—…ํ•˜๋ฉด ์•ฑ๊ณผ ์—ฐ๋™ํ•˜์—ฌ ํ™œ๋™์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ท€์†๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•ฑ์ด ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋Œ“๊ธ€์„ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒฝ์šฐ, GitHub UI๋Š” ๋ฌธ์ œ์˜ ์ž‘์„ฑ์ž๋กœ์„œ ์•ฑ์˜ ์•„์ด๋ดํ‹ฐ์ฝ˜ ๋ฐฐ์ง€์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฒ„๋ ˆ์ด๋œ ์•ฑ ์•„์ด๋ดํ‹ฐ์ฝ˜ ๋ฐฐ์ง€๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์•„๋ฐ”ํƒ€๊ฐ€ ์žˆ๋Š” ๋Œ“๊ธ€์˜ ์Šคํฌ๋ฆฐ์ƒท. ์•„๋ฐ”ํƒ€๋Š” ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ™œ๋™์ด ๊ฐ์‚ฌ ๋กœ๊ทธ ๋ฐ ๋ณด์•ˆ ๋กœ๊ทธ์—์„œ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ ๋กœ๊ทธ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ํ–‰์œ„์ž๋กœ ๋‚˜์—ดํ•˜์ง€๋งŒ "programmatic_access_type"์€ "GitHub ์•ฑ ์‚ฌ์šฉ์ž-์„œ๋ฒ„ ํ† ํฐ"์ž„์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

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

๊ณ„์ • ๋˜๋Š” ์กฐ์ง์— 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 ์•ฑ ์„ค์น˜, ๊ฐœ์ธ ๊ณ„์ •์„ ์œ„ํ•ด GitHub ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ GitHub ์•ฑ ์„ค์น˜ ๋ฐ ์กฐ์ง์šฉ GitHub ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ GitHub ์•ฑ ์„ค์น˜.