SSH ์์ด์ ํธ ์ ๋ฌ, OAuth ํ ํฐ์ ์ฌ์ฉํ๋ HTTPS, ๋ฐฐํฌ ํค ๋๋ ์ปดํจํฐ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์๋ํํ ๋ ์๋ฒ์์ SSH ํค๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
SSH ์์ด์ ํธ ์ ๋ฌ
๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ํนํ ํ๋ก์ ํธ์ ์์ ๋ถ๋ถ์์ SSH ์์ด์ ํธ ์ ๋ฌ์ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ๊ฐ๋จํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ด์ ํธ ์ ๋ฌ์ ๋ก์ปฌ ๊ฐ๋ฐ ์ปดํจํฐ์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ SSH ํค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
SSH ์์ด์ ํธ ํฌ์๋ฉ์ ์ฅ์
- ์ ํค๋ฅผ ์์ฑํ๊ฑฐ๋ ์ถ์ ํ ํ์๊ฐ ์์ต๋๋ค.
- ํค ๊ด๋ฆฌ๊ฐ ์์ต๋๋ค. ์๋ฒ์์ ์ฌ์ฉ์๋ ๋ก์ปฌ์์ ์ํํ๋ ๊ฒ๊ณผ ๋์ผํ ๊ถํ์ ๊ฐ์ต๋๋ค.
- ์๋ฒ์ ์ ์ฅ๋ ํค๊ฐ ์์ผ๋ฏ๋ก ์๋ฒ๊ฐ ์์๋ ๊ฒฝ์ฐ ์์๋ ํค๋ฅผ ์ฐพ์ ์ ๊ฑฐํ ํ์๊ฐ ์์ต๋๋ค.
SSH ์์ด์ ํธ ํฌ์๋ฉ์ ๋จ์
- ๋ฐฐํฌํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ SSH์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ์ง ์์ผ๋ฉด ์๋ํ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- SSH ์์ด์ ํธ ์ ๋ฌ์ Windows ์ฌ์ฉ์์ ๋ํด ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
SSH ์์ด์ ํธ ํฌ์๋ฉ ์ค์
- ๋ก์ปฌ๋ก ์์ด์ ํธ ์ ๋ฌ์ ์ผญ๋๋ค. ์์ธํ ๋ด์ฉ์ SSH ์์ด์ ํธ ์ ๋ฌ์ ๋ํ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์์ด์ ํธ ์ ๋ฌ์ ์ฌ์ฉํ๋๋ก ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด bash ์คํฌ๋ฆฝํธ์์ ์์ด์ ํธ ์ ๋ฌ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅํฉ๋๋ค.
ssh -A serverA 'bash -s' < deploy.sh
OAuth ํ ํฐ์ ์ฌ์ฉํ๋ HTTPS ๋ณต์
SSH ํค๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด OAuth ํ ํฐ์ ์ฌ์ฉํ๋ HTTPS๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
OAuth ํ ํฐ์ ์ฌ์ฉํ๋ HTTPS ๋ณต์ ์ ์ฅ์
- ์๋ฒ์ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ ์ฌ์ฉ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๋ ๋ก์ปฌ SSH ์ค์ ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
- ์ฌ๋ฌ ํ ํฐ์ด ํ์ํ์ง ์์ต๋๋ค(๊ฐ ์ฌ์ฉ์์ ๋ํด ํ๋์ฉ๋ง ํ์ํจ). ์๋ฒ๋น ํ๋์ ํ ํฐ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
- ํ ํฐ์ ์ธ์ ๋ ์ง ํด์งํ์ฌ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผํ์ฉ ์ํธ๋ก ์ ํํ ์ ์์ต๋๋ค.
OAuth ํ ํฐ์ ์ฌ์ฉํ๋ HTTPS ๋ณต์ ์ ๋จ์
- ์ฌ๋ฐ๋ฅธ ์ก์ธ์ค ๋ฒ์๋ก ํ ํฐ์ ๊ตฌ์ฑํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
- ํ ํฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํธ์ด๋ฉฐ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ณดํธ๋์ด์ผ ํฉ๋๋ค.
OAuth ํ ํฐ์ ์ฌ์ฉํ๋ HTTPS ๋ณต์ ์ค์
personal access token์(๋ฅผ) ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ ํค
๋ฐฐํฌ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ๋ํ GitHub.com ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ๋ก์ ํธ๋ฅผ ์์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ SSH ํค์ ๋๋ค. GitHub๋ ํค์ ํผ๋ธ๋ฆญ ๋ถ๋ถ์ ๊ฐ์ธ ๊ณ์ ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ง์ ์ฐ๊ฒฐํ๊ณ ํค์ ํ๋ผ์ด๋น ๋ถ๋ถ์ ์๋ฒ์ ๋จ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐฐํฌ ์ ๊ณต์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฐ๊ธฐ ๊ถํ์ด ์๋ ํค ๋ฐฐํฌ๋ ๊ด๋ฆฌ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์กฐ์ง ๋ฉค๋ฒ ๋๋ ๊ฐ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํ๋ ฅ์์ ๋์ผํ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์กฐ์ง์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ญํ ๋ฐ ๊ฐ์ธ ๊ณ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ถํ ์์ค์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ฆฌํฌ์งํ ๋ฆฌ ์ก์ธ์ค ๋ฐ ๊ถํ์ ๋ํ ํฅ์๋ ๋ณด์ ๋ฐ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ํด GitHub ์ฑ์ ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. GitHub ์ฑ์ ๋น๋ํ ์๊ธฐ ๊ฒฐ์ ํ๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ ํค์ ์ฅ์
- ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฐ ์๋ฒ์ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๋ ๋ก์ปฌ SSH ์ค์ ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
- ๋ฐฐํฌ ํค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๊ธฐ ์ ์ฉ์ด์ง๋ง ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ถ๊ฐํ ๋ ์ฐ๊ธฐ ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
๋ฐฐํฌ ํค์ ๋จ์
- ๋ฐฐํฌ ํค๋ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ๋ง ๋ถ์ฌํฉ๋๋ค. ๋ ๋ณต์กํ ํ๋ก์ ํธ์๋ ๋์ผํ ์๋ฒ๋ก ํํ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋ง์ ์ ์์ต๋๋ค.
- ๋ฐฐํฌ ํค๋ ์ผ๋ฐ์ ์ผ๋ก ์ํธ๋ก ๋ณดํธ๋์ง ์์ผ๋ฏ๋ก ์๋ฒ๊ฐ ์์๋ ๊ฒฝ์ฐ ํค์ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ๋ฐฐํฌ ํค๋ ๋ง๋ฃ ๋ ์ง๊ฐ ์๋ ์๊ฒฉ ์ฆ๋ช ์ ๋๋ค.
- ๋ฐฐํฌ ํค๋ ์กฐ์ง ๋ฉค๋ฒ ์๊ฒฉ์ ์ง์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค. ๋ฐฐํฌ ํค๋ฅผ ๋ง๋ ์ฌ์ฉ์๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ ๊ฑฐ๋๋ ๊ฒฝ์ฐ, ๋ฐฐํฌ ํค๋ ํน์ ์ฌ์ฉ์์ ์ฐ๊ฒฐ๋์ง ์๊ณ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐ๋๋ฏ๋ก ๊ณ์ ํ์ฑํ๋ฉ๋๋ค.
๋ฐฐํฌ ํค ์ค์
์ฐธ๊ณ ํญ๋ชฉ
์กฐ์ง์ด ์ํฐํ๋ผ์ด์ฆ ์์ ์ด๊ณ ์ํฐํ๋ผ์ด์ฆ ์์ ์๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ฐฐํฌ ํค ์ฌ์ฉ์ ์ ํํ ๊ฒฝ์ฐ ์กฐ์ง์ ์ ์ฑ ์ ์ฌ์ ์ํ์ฌ ๋ฐฐํฌ ํค ๋ง๋ค ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ํฐํ๋ผ์ด์ฆ์์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ด๋ฆฌ ์ ์ฑ ์ ์ฉ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
์๋ฒ์์
ssh-keygen
ํ๋ก์์ ๋ฅผ ์คํํ๊ณ ์์ฑ๋ ํผ๋ธ๋ฆญ ๋ฐ ํ๋ผ์ด๋น rsa ํค ์์ ์ ์ฅํ๋ ์์น๋ฅผ ๊ธฐ์ตํฉ๋๋ค. -
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค. "์ค์ " ํญ์ด ํ์๋์ง ์์ผ๋ฉด ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ์ ํํ ๋ค์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
-
์ผ์ชฝ ์ฌ์ด๋๋ฐ์์ ๋ฐฐํฌ ํค๋ฅผ ์ ํํฉ๋๋ค.
-
๋ฐฐํฌ ํค ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค.
-
"์ ๋ชฉ" ํ๋์์ ์ ๋ชฉ์ ์ ๋ ฅํฉ๋๋ค.
-
๊ณต๊ฐ ํค๋ฅผ "ํค" ํ๋์ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
-
์ด ํค๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ ๊ฐ๋๋ก ํ๋ ค๋ฉด ์ฐ๊ธฐ ์ก์ธ์ค ํ์ฉ์ ์ ํํฉ๋๋ค. ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์๋ ๋ฐฐํฌ ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐํฌ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ํธ์๋ฉ๋๋ค.
-
ํค ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
REST API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ ํค๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐฐํฌ ํค์ ๋ํ REST API ์๋ํฌ์ธํธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์๋ฒ ํ๋์์ ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ ์ฌ์ฉ
ํ ์๋ฒ์์ ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ ์๋ฒ์ ๋ํด ์ ์ฉ ํค ์์ ์์ฑํด์ผ ํฉ๋๋ค. ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํด ๋ฐฐํฌ ํค ํ๋๋ฅผ ๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฒ์ SSH ๊ตฌ์ฑ ํ์ผ(์ผ๋ฐ์ ์ผ๋ก ~/.ssh/config
)์์ ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๋ณ์นญ ํญ๋ชฉ์ ์ถ๊ฐํฉ๋๋ค. ์์:
Host github.com-repo-0
Hostname github.com
IdentityFile=/home/user/.ssh/repo-0_deploy_key
Host github.com-repo-1
Hostname github.com
IdentityFile=/home/user/.ssh/repo-1_deploy_key
Host github.com-repo-0
- ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณ์นญHostname github.com
- ๋ณ์นญ๊ณผ ํจ๊ป ์ฌ์ฉํ ํธ์คํธ ์ด๋ฆ์ ๊ตฌ์ฑํฉ๋๋ค.IdentityFile=/home/user/.ssh/repo-0_deploy_key
- ๋ณ์นญ์ ํ๋ผ์ด๋น ํค๋ฅผ ํ ๋นํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ํธ์คํธ ์ด๋ฆ์ ๋ณ์นญ์ ์ฌ์ฉํ์ฌ ํด๋น ๋ณ์นญ์ ํ ๋น๋ ๊ณ ์ ๋ฐฐํฌ ํค๋ฅผ ์ฌ์ฉํ๋ SSH๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค. ์์:
git clone git@github.com-repo-1:OWNER/repo-1.git
GitHub App ์ค์น ์ก์ธ์ค ํ ํฐ
์๋ฒ๊ฐ ํ๋ ์ด์์ ์กฐ์ง์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ก์ธ์คํด์ผ ํ๋ ๊ฒฝ์ฐ, GitHub App์(๋ฅผ) ์ฌ์ฉํ์ฌ ํ์ํ ์ก์ธ์ค๋ฅผ ์ ์ํ ๋ค์, ํด๋น GitHub App์์ ์๊ฒฉํ ๋ฒ์์ ์ค์น ์ก์ธ์ค ํ ํฐ์ ์์ฑํ ์ ์์ต๋๋ค. ์ค์น ์ก์ธ์ค ํ ํฐ์ ๋ฒ์๋ฅผ ๋จ์ผ ๋๋ ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ง์ ํ ์ ์์ผ๋ฉฐ, ์ธ๋ถํ๋ ๊ถํ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฝํ ์ธ ์ ๋ํ ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค ๊ถํ์ ๊ฐ์ง ํ ํฐ์ ์์ฑํ ์ ์์ต๋๋ค.
GitHub Apps๋ GitHub์ ์ฒซ ๋ฒ์งธ ํด๋์ค ํ์์์ด๋ฏ๋ก, ์ค์น ์ก์ธ์ค ํ ํฐ์ ๋ชจ๋ GitHub ์ฌ์ฉ์์ ๋ถ๋ฆฌ๋์ด "์๋น์ค ํ ํฐ"์ ํ์ ํฉ๋๋ค. ๋ํ ์ค์น ์ก์ธ์ค ํ ํฐ์๋ ์์ ํ๋ ์กฐ์ง์ ํฌ๊ธฐ์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋๋ ์ ์ฉ ํธ๋ํฝ๋ฅ ์ ํ์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub Apps์ ์๋ ์ ํ์ ์ฐธ์กฐํ์ธ์.
์ค์น ์ก์ธ์ค ํ ํฐ์ ์ฅ์
- ์ ์ ์๋ ๊ถํ ์งํฉ ๋ฐ ๋ง๋ฃ ์๊ฐ(API๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ํด์ง๋ ๊ฒฝ์ฐ 1์๊ฐ ์ดํ)์ด ์๋, ๋ฒ์๊ฐ ์๊ฒฉํ๊ฒ ์ง์ ๋ ํ ํฐ
- ์กฐ์ง์ ๋ฐ๋ผ ์ฆ๊ฐํ๋ ์ ์ฉ ์๋ ์ ํ
- GitHub ์ฌ์ฉ์ ID์์ ๋ถ๋ฆฌ๋๋ฏ๋ก ๋ผ์ด์ ์ค๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ์ํธ๋ฅผ ๋ถ์ฌํ์ง ์์ผ๋ฏ๋ก ์ง์ ๋ก๊ทธ์ธํ ์ ์์
์ค์น ์ก์ธ์ค ํ ํฐ์ ๋จ์
- GitHub App์(๋ฅผ) ๋ง๋ค๋ ค๋ฉด ์ถ๊ฐ ์ค์ ์ด ํ์ํฉ๋๋ค.
- ์ค์น ์ก์ธ์ค ํ ํฐ์ 1์๊ฐ ํ์ ๋ง๋ฃ๋๋ฏ๋ก, ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ๋ฌธํ์ผ๋ก ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค.
์ค์น ์ก์ธ์ค ํ ํฐ์ ์ค์
- GitHub App์(๋ฅผ) ๊ณต๊ฐ๋ก ํ ์ง ๋น๊ณต๊ฐ๋ก ํ ์ง ๊ฒฐ์ ํฉ๋๋ค. GitHub App์ด(๊ฐ) ์กฐ์ง ๋ด์ ๋ฆฌํฌ์งํ ๋ฆฌ์์๋ง ์๋ํ๋ ๊ฒฝ์ฐ, ๋น๊ณต๊ฐ๋ฅผ ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- GitHub App ์ฑ์ ํ์ํ ๊ถํ(์: ๋ฆฌํฌ์งํ ๋ฆฌ ์ฝํ ์ธ ์ ๋ํ ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค ๊ถํ)์ ๊ฒฐ์ ํฉ๋๋ค.
- ์กฐ์ง์ ์ค์ ํ์ด์ง๋ฅผ ํตํด GitHub App์(๋ฅผ) ๋ง๋ญ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub App ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
- GitHub App
id
์(๋ฅผ) ๋ฉ๋ชจํด ๋ก๋๋ค. - GitHub App์ ํ๋ผ์ด๋น ํค๋ฅผ ์์ฑ ๋ฐ ๋ค์ด๋ก๋ํ๊ณ ์์ ํ๊ฒ ์ ์ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋ผ์ด๋น ํค ์์ฑ์ ์ฐธ์กฐํ์ธ์.
- ์์ ์ด ํ์ํ ๋ฆฌํฌ์งํ ๋ฆฌ์ GitHub App์(๋ฅผ) ์ค์นํ๊ณ , ํ์์ ๋ฐ๋ผ ์กฐ์ง์ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ GitHub App์(๋ฅผ) ์ค์นํ ์ ์์ต๋๋ค.
- GitHub App๊ณผ(์) ์ก์ธ์คํ ์ ์๋ ์กฐ์ง ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ํ๋ด๋
installation_id
์(๋ฅผ) ์๋ณํฉ๋๋ค. ๊ฐ GitHub App ๋ฐ ์กฐ์ง ์์๋ ์ต๋ ํ๋์installation_id
์ด(๊ฐ) ์์ต๋๋ค. ์ธ์ฆ๋ ์ฑ์ ๋ํ ์กฐ์ง ์ค์น ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ํตํดinstallation_id
๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ JWT๋ฅผ ์ฌ์ฉํ์ฌ GitHub App(์ผ)๋ก ์ธ์ฆํด์ผ ํ๋ฉฐ, ์์ธํ ๋ด์ฉ์ GitHub App(์ผ)๋ก ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์. - ํด๋น REST API ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์น ์ก์ธ์ค ํ ํฐ์ ์์ฑํ๊ณ , ์ฑ์ ๋ํ ์ค์น ์ก์ธ์ค ํ ํฐ์ ๋ง๋ญ๋๋ค. ์ด๋ฅผ ์ํด์๋ JWT๋ฅผ ์ฌ์ฉํ์ฌ GitHub App(์ผ)๋ก ์ธ์ฆํด์ผ ํ๋ฉฐ, ์์ธํ ๋ด์ฉ์ GitHub App(์ผ)๋ก ์ธ์ฆ ๋ฐ ์ค์น๋ก ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
- ์ด ์ค์น ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํ์ฌ REST ๋๋ GraphQL API๋ฅผ ํตํด ์๋๋ฉด Git ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ํธ ์์ฉํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ๋ํ ์ค์น ์ก์ธ์ค ํ ํฐ ์์ฑ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ปดํจํฐ ์ฌ์ฉ์
์๋ฒ๊ฐ ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ก์ธ์คํด์ผ ํ๋ ๊ฒฝ์ฐ GitHub.com์์ ์ ๊ณ์ ์ ์์ฑํ๊ณ ์๋ํ์๋ง ์ฌ์ฉํ SSH ํค๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. GitHub.com์ ์ด ๊ณ์ ์ ์ฌ๋์ด ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ปดํจํฐ ์ฌ์ฉ์๋ผ๊ณ ํฉ๋๋ค. ์ปดํจํฐ ์ฌ์ฉ์๋ ๊ฐ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ๋ ฅ์๋ก(์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ), ์กฐ์ง ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ธ๋ถ ํ๋ ฅ์๋ก(์ฝ๊ธฐ, ์ฐ๊ธฐ ๋๋ ๊ด๋ฆฌ์ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ) ๋๋ ์๋ํํด์ผ ํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์๋ ํ์ ์ถ๊ฐํ ์ ์์ต๋๋ค(ํ์ ์ฌ์ฉ ๊ถํ ๋ถ์ฌ).
ํ
์๋น์ค ์ฝ๊ด ์ํ:
"๋ด" ๋๋ ๊ธฐํ ์๋ํ๋ ๋ฉ์๋๊ฐ ๋ฑ๋กํ ๊ณ์ ์ ํ์ฉ๋์ง ์์ต๋๋ค.
์ฆ, ๊ณ์ ์์ฑ์ ์๋ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋ก์ ํธ ๋๋ ์กฐ์ง์ ์คํฌ๋ฆฝํธ ๋ฐฐํฌ์ ๊ฐ์ ์์ ์ ์๋ํํ๊ธฐ ์ํ ๋จ์ผ ์ปดํจํฐ ์ฌ์ฉ์๋ฅผ ๋ง๋ค๋ ค๋ ๊ฒฝ์ฐ์๋ ์์ฃผ ์ ์ฉํฉ๋๋ค.
์ปดํจํฐ ์ฌ์ฉ์์ ์ฅ์
- ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฐ ์๋ฒ์ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- ์ฌ๋์ด ์๋ ์ฌ์ฉ์๊ฐ ๋ก์ปฌ SSH ์ค์ ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
- ์ฌ๋ฌ ํค๊ฐ ํ์ํ์ง ์๊ณ ์๋ฒ๋น 1๊ฐ๊ฐ ์ ์ ํฉ๋๋ค.
์ปดํจํฐ ์ฌ์ฉ์์ ๋จ์
- ์กฐ์ง๋ง ์ปดํจํฐ ์ฌ์ฉ์๋ฅผ ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค๋ก ์ ํํ ์ ์์ต๋๋ค. ๊ฐ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ํญ์ ๊ณต๋ ํ๋ ฅ์์๊ฒ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ๋ฐฐํฌ ํค์ ๊ฐ์ ์ปดํจํฐ ์ฌ์ฉ์ ํค๋ ์ผ๋ฐ์ ์ผ๋ก ์ํธ๋ก ๋ณดํธ๋์ง ์์ต๋๋ค.
์ปดํจํฐ ์ฌ์ฉ์ ์ค์
- ์๋ฒ์์
ssh-keygen
ํ๋ก์์ ๋ฅผ ์คํํ๊ณ ํผ๋ธ๋ฆญ ํค๋ฅผ ์ปดํจํฐ ์ฌ์ฉ์ ๊ณ์ ์ ์ฐ๊ฒฐํฉ๋๋ค. - ์ปดํจํฐ ์ฌ์ฉ์ ๊ณ์ ์ ์๋ํํ๋ ค๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ์กฐ์ง์์ ๊ณ์ ์ ํ๋ ฅ์, ์ธ๋ถ ํ๋ ฅ์ ๋๋ ํ์ผ๋ก ์ถ๊ฐํ์ฌ ์ด๋ฌํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.