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