GitHub Apps ์ ๋ณด
GitHub App์ GitHub์ ๊ธฐ๋ฅ๊ณผ ์ํธ ์์ฉํ๊ณ ํ์ฅํ๊ธฐ ์ํด ๋น๋ํ ์ ์๋ ํตํฉ ์ ํ์ ๋๋ค. ์ฌ์ฉ์๋ฅผ ๋ก๊ทธ์ธํ๊ฑฐ๋ ์๋น์ค ๊ณ์ ์ ๋ง๋ค์ง ์๊ณ ๋ GitHub App์ ๋น๋ํ์ฌ ์ ์ฐ์ฑ์ ์ ๊ณตํ๊ณ ํ๋ก์ธ์ค์ ๋ง์ฐฐ์ ์ค์ผ ์ ์์ต๋๋ค.
GitHub Apps์ ์ผ๋ฐ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์์ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค ์๋ํ
- ์ฌ์ฉ์๊ฐ GitHub ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ์ฌ ์์ฝ์์คํ ์์ ID๋ฅผ ์ ๊ณตํ ์ ์๋ "GitHub(์ผ)๋ก ๋ก๊ทธ์ธ"์ ์ง์ํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ GitHub App์ ๋ก๊ทธ์ธํ์ฌ GitHub์ ์์ ํ ์ ์๋๋ก ํ์ฉํ๋ฉด ๊ฐ๋ฐ์ ๋๊ตฌ๋ก์ ๋์ ์์ ํ ์ ์์ต๋๋ค.
- GitHub์ ๋๊ตฌ ๋๋ ์ธ๋ถ ์๋น์ค๋ฅผ ํตํฉ
OAuth apps๊ณผ GitHub Apps์ OAuth 2.0์ ์ฌ์ฉํ๊ณ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์์ ์ ์ํํ ์ ์์ต๋๋ค. OAuth apps๊ณผ ๋ฌ๋ฆฌ GitHub Apps์ ์ฌ์ฉ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ ์๋ ์์ต๋๋ค.
GitHub Apps๋ ์ํฐํ๋ผ์ด์ฆ, ์กฐ์ง ๋ฐ ๊ฐ์ธ ๊ณ์ ์ ์ง์ ์ค์น๊ฐ ๊ฐ๋ฅํ๊ณ ํน์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์ ์์ต๋๋ค. ๋ํ ๊ธฐ๋ณธ ์ ๊ณต ์นํํฌ์ ๋ฒ์๊ฐ ์ข์ ํน์ ๊ถํ์ด ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๋ด ์ํฐํ๋ผ์ด์ฆ ์์ฒด ๋๋ ์กฐ์ง์๋ง ์ค์นํ ์ ์๊ณ ์ํฐํ๋ผ์ด์ฆ ๊ตฌ์ฑ์๋ง ๊ถํ์ ๋ถ์ฌํ ์ ์๋ ์ํฐํ๋ผ์ด์ฆ ์์ GitHub App์ ๋ง๋ค ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ํฐํ๋ผ์ด์ฆ๋ฅผ ์ํ GitHub ์ฑ ๋ง๋ค๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๊ธฐ๋ณธ์ ์ผ๋ก ์กฐ์ง์ ์์ ์๋ง ์กฐ์ง์์ GitHub ์ฑ์ ์ค์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ถ๊ฐ ์ฌ์ฉ์๊ฐ ์กฐ์ง์์ ์์ ํ GitHub ์ฑ์ ๊ฐ๋ฐ์ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ์์ ์๊ฐ GitHub ์ฑ ๊ด๋ฆฌ์ ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค. GitHub ์ฑ ๊ด๋ฆฌ์๋ ์ 3์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์กฐ์ง์์ GitHub ์ฑ ๊ด๋ฆฌ์๋ฅผ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์กฐ์ง์ ์ญํ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
GitHub App ๋น๋ํ๊ธฐ
GitHub App์ ๋น๋ํ๋ ค๋ฉด ๋จผ์ GitHub App์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ๋ฑ๋ก์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๊ทธ๋ฐ ๋ค์ GitHub App์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. GitHub App ๋ฑ๋ก์ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ GitHub์ API์ ๋ํ ์ธ์ฆ๋ ์์ฒญ์ ์ํํ ์ ์์ต๋๋ค. GitHub App์ ์ฝ๋ ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ์ฝ๋ ์์ฑ ์ ๋ณด ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์. ์ธ์ฆ๋ ์์ฒญ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ์ฌ์ฉํ ์ธ์ฆ ์ ๋ณด ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
GitHub App์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ์ผ๋ฉด ์ฑ์ด ์ด๋๊ฐ์์ ์คํ๋์ด์ผ ํฉ๋๋ค. ์ฑ์ด ์น ์ฌ์ดํธ ๋๋ ์น์ฑ์ธ ๊ฒฝ์ฐ Azure App Service์ ๊ฐ์ ์๋ฒ์์ ์ฑ์ ํธ์คํธํ ์ ์์ต๋๋ค. ์ฑ์ด ํด๋ผ์ด์ธํธ ์ชฝ ์ฑ์ธ ๊ฒฝ์ฐ ์ฌ์ฉ์์ ๋๋ฐ์ด์ค์์ ์คํ๋ ์ ์์ต๋๋ค.
GitHub App์ ์ฌ์ฉํ๋ ค๋ฉด ์ํฐํ๋ผ์ด์ฆ, ์กฐ์ง ๋๋ ๊ฐ์ธ ๊ณ์ ์ ์ค์นํด์ผ ํฉ๋๋ค.
- GitHub App์ด(๊ฐ) ๋น๊ณต๊ฐ์ธ ๊ฒฝ์ฐ ์ฑ์ ์์ ํ ๊ณ์ ์์๋ง ์ค์นํ ์ ์์ต๋๋ค.
- GitHub App์ด public์ธ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๊ณ์ ๋ ์ด๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
- GitHub App์ด ์ํฐํ๋ผ์ด์ฆ ์์ ์ธ ๊ฒฝ์ฐ, ์ํฐํ๋ผ์ด์ฆ ์์ฒด ๋๋ ํด๋น ์ํฐํ๋ผ์ด์ฆ ๋ด์ ๋ชจ๋ ์กฐ์ง์ ์ค์นํ ์ ์์ต๋๋ค. ์ํฐํ๋ผ์ด์ฆ ๊ตฌ์ฑ์๋ง ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์์ ๋ง์ GitHub ์ฑ ์ค์น ๋ฐ GitHub ์ฑ ๊ณต์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋น๋ํ GitHub App์ ์ ํ ์ดํด
GitHub App์ ๋์์ธํ๋ ๋ฐ์๋ ์ฑ์์ ์ฌ์ฉํ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๊ณ ๋ คํ ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์๋ํ๋ GitHub Apps
์ฑ์ด ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์์ ์ ์ํํ๋๋ก ํ๋ ค๋ฉด ์ธ์ฆ์ ์ฌ์ฉ์ ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ์ ํ์ ์์ฒญ์ "์ฌ์ฉ์-์๋ฒ"๋ผ๊ณ ๋ ํ๋ฉฐ, ์ด๋ ์ฑ์ ๋ถ์ฌ๋ ๊ถํ๊ณผ ์ฌ์ฉ์์ ๊ถํ์ ๋ฐ๋ผ ์ฑ์ด ์ ํ๋๋ค๋ ์๋ฏธํฉ๋๋ค. ์ด ํจํด์ ์ฌ์ฉํ๋ฉด ๋จผ์ ์ฑ์ ๊ถํ์ ๋ถ์ฌํด์ผ ์ฑ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ GitHub ์ฑ์ผ๋ก ์ธ์ฆ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฑ์ด ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์๋ํ๋ GitHub App์ผ๋ก ๋ง๋ค ์ ์๋ ์๋ํ์ ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์์ฝ์์คํ ์ ID ๊ณต๊ธ์๋ก GitHub๋ฅผ ์ฌ์ฉํ๋ GitHub App์ ๋๋ค.
- GitHub ์ฌ์ฉ์์๊ฒ ์ ์ฉํ ์ ์๋ GitHub์ ์๋น์ค๋ฅผ ์ถ๊ฐํ๋ GitHub App์ ๋๋ค. GitHub Marketplace๋ฅผ ํตํด ๋๋ ์ฑ์ ๊ณต๊ฐํ์ฌ ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์ฑ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ๋์ ์๋ํ๋ GitHub Apps
์ฑ์ด ์ฌ์ฉ์ ๋์ ์ด ์๋ ์์ฒด์ ์ผ๋ก ์์ ์ ์ํํ๋๋ก ํ๋ ค๋ฉด ์ธ์ฆ์ ์ค์น ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ์ ํ์ ์์ฒญ์ "์๋ฒ ๊ฐ"์ด๋ผ๊ณ ๋ ํ๋ฉฐ ์ฑ์ ๋ถ์ฌ๋ ๊ถํ์ ๋ฐ๋ผ ์ฑ์ด ์ ํ๋๋ค๋ ์๋ฏธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ์ค์น๋ก ์ธ์ฆ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฑ์ด ์์ฒด์ ์ผ๋ก ์๋ํ๋ GitHub App์ ์ฌ์ฉํ์ฌ ๋ง๋ค ์ ์๋ ์๋ํ์ ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํน์ ์กฐ๊ฑด ์ธํธ๊ฐ ์ง์ ๋ ์ด๋ฒคํธ์ ๋ฐ์ํ๋ ์นํํฌ๋ฅผ ์ฌ์ฉํ GitHub App์ ๋๋ค. ์๋ฅผ ๋ค์ด ํน์ ์ ์ฑ ์ ๋ฐ๋ผ ์์ฒญ์ ์น์ธํ๋ fine-grained personal access token์ ๋ํ ์์ฒญ์ ๊ฒํ ํ๊ธฐ ์ํด REST API ์๋ํฌ์ธํธ๋ฅผ ์ค์ฌ์ผ๋ก ์๋ํ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ ๊ธฐ์ฌ์์๊ฒ ๋์์ด ๋๋ GitHub App์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ฑ์ ๊ธฐ์ฌ์ ๋์ด์ค๊ธฐ ์์ฒญ์ ๋ง๋ค๊ฑฐ๋ ์ฃผ์์ ๋ง๋ ํ ์ ์ฉํ ๋ฆฌ์์ค๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ๋ค๋ฅธ CI/CD ๋๊ตฌ์ ์ ๊ณตํ๊ฑฐ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ ๋ณด๋ฅผ ๋์ด์ฌ ์ ์๋ ์๋ช ์ด ์งง์ ํ ํฐ์ ์์ฑํ๋ GitHub App์ ๋๋ค.
์นํํฌ์ ์๋ตํ๋ GitHub Apps
์ฑ์ด GitHub์ ์ด๋ฒคํธ์ ์๋ตํ๋๋ก ํ๋ ค๋ฉด ์ฑ์ด ์นํํฌ๋ฅผ ๊ตฌ๋ ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋์ด์ค๊ธฐ ์์ฒญ์ด ์ด๋ฆด ๋ ์ฑ์ด ์ฃผ์์ ๋จ๊ธฐ๋๋ก ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ์นํํฌ ์ฌ์ฉ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ์ฌ ์ํฐํ๋ผ์ด์ฆ์ ์ค์น๋ ์ฑ์ ์นํํฌ๋ฅผ ์ง์ํ์ง ์์ผ๋ฉฐ, ์นํํฌ๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ์กฐ์ง์ ์ค์นํด์ผ ํฉ๋๋ค.
ํน์ ์์ ์ ์ํํ ์ ์๋ GitHub Apps
GitHub App์ ์ค์ ํ ๋ ์ฑ์ ๋ํ ํน์ ๊ถํ์ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ถํ์ GitHub API๋ฅผ ํตํด ์ฑ์ด ์ํํ ์ ์๋ ์์ , ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์ํํ ์ ์๋ ์์ ๋ฐ ์ฑ์ด ๋ฐ์ ์ ์๋ ์นํํฌ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ๊ถํ ์ ํ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.