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 App์ ๊ถํ์ ๋ถ์ฌํ๋ฉด ์ฑ์ด ์์ฒญํ ๊ณ์ ๊ถํ์ ๋ฐ๋ผ GitHub๊ณ์ ์ ๋ํ ์ฑ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ๊ถํ ๋ถ์ฌ ํ๋ก์ธ์ค ์ค์ ์ฑ์ ์ฑ์ด ๊ณ์ ์์ ์ก์ธ์คํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ ๋๋ค. GitHub App์ ๊ถํ์ ๋ถ์ฌํ๋ฉด ์ฌ์ฉ์ ๋์ ์์ ํ ์ ์๋ ์ฑ ๊ถํ๋ ๋ถ์ฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด GitHub App ๊ถํ์ ๋ถ์ฌํ์ฌ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ฝ๊ณ gist๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ฑ์ ๊ถํ์ ๋ถ์ฌํ์ง ์๊ณ GitHub App์(๋ฅผ) ์ค์นํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ฑ์ ์ค์นํ์ง ์๊ณ ์ฑ์ ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
์ค์น์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ์ฌ์์ GitHub ์ฑ ์ค์น, ๊ฐ์ธ ๊ณ์ ์ ์ํด GitHub ๋ง์ผํ๋ ์ด์ค์์ GitHub ์ฑ ์ค์น ๋ฐ ์กฐ์ง์ฉ GitHub ๋ง์ผํ๋ ์ด์ค์์ GitHub ์ฑ ์ค์น.