GitHub์ ๋น๋ฐ ํ์ ์ ๋ณด
GitHub ๋น๋ฐ์ API ํค, ํ ํฐ, ์ํธ์ ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์์ ํ๊ฒ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ค์ํ ์ ๋ณด๋ฅผ GitHub ๋น๋ฐ๋ก ์ ์ฅํ๋ ๊ฒฝ์ฐ ์๊ฒฉ ์ฆ๋ช ๋๋ ํค๋ฅผ ํ๋ ์ฝ๋ฉํ ํ์๊ฐ ์์ผ๋ฉฐ ์ฝ๋๋ ๋ก๊ทธ์ ๋ ธ์ถ๋์ง ์๋๋ก ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋น๋ฐ์ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ์ธ์ฆํ๊ณ , ์๊ฒฉ ์ฆ๋ช ์ ๊ด๋ฆฌํ๋ฉฐ, ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ํฌํ๋ก์ ์์ ํ๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค.
GitHub์์๋ ์ธ ๊ฐ์ง ์ ํ์ ๋น๋ฐ์ ์ฌ์ฉํฉ๋๋ค.
GitHub ๋น๋ฐ ์ ํ์ ๋ฐ๋ผ ๋ฆฌํฌ์งํ ๋ฆฌ, ์กฐ์ง ๋๋ ๊ฐ์ธ ๊ณ์ ๋ณด์ ์ค์ ํ์ด์ง์์ ๋น๋ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
GitHub๊ฐ ๋น๋ฐ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ ์ดํด
GitHub๋ Libsodium ๋ด์ธ๋ ์์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ฐ์ ์ํธํํฉ๋๋ค. ๋น๋ฐ์ GitHub์ ๋๋ฌํ๊ธฐ ์ ์ ์ํธํ๋๋ฉฐ ๊ด๋ จ ์๋น์ค(Dependabot, GitHub Actions, Codespaces)์์ ์ฌ์ฉ๋ ๋๊น์ง ์ํธํ๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
Dependabot ๋น๋ฐ
Dependabot ๋น๋ฐ์ Dependabot์์ ์ฌ์ฉํ ์๊ฒฉ ์ฆ๋ช ๋ฐ ์ค์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
Dependabot ๋น๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ dependabot.yml
ํ์ผ์์ ์ฐธ์กฐ๋ฉ๋๋ค.
์ฌ์ฉ
Dependabot ๋น๋ฐ์ ์ผ๋ฐ์ ์ผ๋ก Dependabot์์ ํ๋ผ์ด๋น ํจํค์ง ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Dependabot์์ ๋์ด์ค๊ธฐ ์์ฒญ์ ์ด์ด ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ทจ์ฝํ๊ฑฐ๋ ์ค๋๋ ์ข
์์ฑ์ ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ธ์ฆ์ ์ฌ์ฉ๋๋ ์ด๋ฌํ Dependabot ๋น๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ dependabot.yml
ํ์ผ์์ ์ฐธ์กฐ๋ฉ๋๋ค.
Dependabot ๋น๋ฐ์๋ Dependabot์์ ์์ํ ์ํฌํ๋ก์ ํ์ํ ๋น๋ฐ๋ ํฌํจ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Dependabot์ ์ข
์์ฑ์ ์
๋ฐ์ดํธํ๊ธฐ ์ํ ๋์ด์ค๊ธฐ ์์ฒญ์ ๋ง๋ค๊ฑฐ๋ ๋๋ ๋์ด์ค๊ธฐ ์์ฒญ์ ๋ํ ์ฃผ์์ ๋ง๋ค ๋ GitHub Actions ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ Dependabot ์ด๋ฒคํธ์ ์ํด ์ํฌํ๋ก๊ฐ ํธ๋ฆฌ๊ฑฐ๋๋ ํ ์ํฌํ๋ก ํ์ผ(.github/workflows/*.yml
)์์ Dependabot ๋น๋ฐ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
๋ฒ์
Dependabot ๋น๋ฐ์ ๋ค์์์ ์ ์ํ ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ ์์ค
- ์กฐ์ง ์์ค
์กฐ์ง ์์ค์์ ์ค์ ํ ๋ Dependabot ๋น๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋น๋ฐ์ ์ก์ธ์คํ ์ ์๋ ์กฐ์ง์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
์ก์ธ์ค ๊ถํ
Dependabot ๋น๋ฐ์ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ํ๋ผ์ด๋น ๋ ์ง์คํธ๋ฆฌ์ ์ธ์ฆํ ๋ Dependabot์ ์ํด ์ก์ธ์ค๋ฉ๋๋ค.
Dependabot ๋น๋ฐ์ GitHub Actions์ด ์ํฌํ๋ก์ ๋ํ ํธ๋ฆฌ๊ฑฐ ์ด๋ฒคํธ๋ฅผ ์์ํ ๋ GitHub Actions ์ํฌํ๋ก๋ฅผ ํตํด ์ก์ธ์ค๋ฉ๋๋ค. ์ด๋ Dependabot์์ ์ํฌํ๋ก๋ฅผ ์์ํ ๋ Dependabot ๋น๋ฐ๋ง ์ฌ์ฉํ ์ ์๊ณ , ์์
๋น๋ฐ์๋ ์ก์ธ์คํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์ํฌํ๋ก์ ํ์ํ ๋ชจ๋ ๋น๋ฐ์ ์์
๋น๋ฐ์ด ์๋ Dependabot ๋น๋ฐ๋ก ์ ์ฅํด์ผ ํฉ๋๋ค. pull_request_target
์ด๋ฒคํธ์๋ ์ถ๊ฐ ๋ณด์ ์ ํ์ด ์์ต๋๋ค. ์ ํ ๋ฐ ์ ์ฝ์ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์ ์ก์ธ์ค ๊ถํ
๋ฆฌํฌ์งํ ๋ฆฌ ์์ค ๋น๋ฐ:
- ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ด๋ฆฌ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ Dependabot ๋น๋ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ณต๋ ์์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ Dependabot์ ๋ํ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์กฐ์ง ์์ค ๋น๋ฐ:
- ์กฐ์ง ์์ ์๋ Dependabot ๋น๋ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๊ฐ ๋น๋ฐ์ ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ณต๋ ์์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ Dependabot์ ๋ํ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํ ์ฌํญ
Dependabot์์ ์์ํ ์ํฌํ๋ก์ ๊ฒฝ์ฐ pull_request_target
์ด๋ฒคํธ๋ ๋ค๋ฅธ ์ด๋ฒคํธ์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ด ์ด๋ฒคํธ์ ๊ฒฝ์ฐ ๋์ด์ค๊ธฐ ์์ฒญ์ ๊ธฐ๋ณธ ์ฐธ์กฐ๊ฐ Dependabot(github.event.pull_request.user.login == 'dependabot[bot]'
)์์ ๋ง๋ค์ด์ง ๊ฒฝ์ฐ:
- ์ํฌํ๋ก๋ ์ฝ๊ธฐ ์ ์ฉ
GITHUB_TOKEN
์ ์์ ํฉ๋๋ค. - ์ํฌํ๋ก์์๋ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ถ๊ฐ ์ ํ์ Dependabot์์ ๋ง๋ ๋์ด์ค๊ธฐ ์์ฒญ์์ ๋ฐ์ํ ์ ์๋ ์ ์ฌ์ ์ธ ๋ณด์ ์ํ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Dependabot ๋น๋ฐ์ ํฌํฌ์ ์ ๋ฌ๋์ง ์์ต๋๋ค.
์์ ๋น๋ฐ
์์ ๋น๋ฐ์ API ํค, ์ธ์ฆ ํ ํฐ ๋ฐ ๊ธฐํ ์๊ฒฉ ์ฆ๋ช ๊ณผ ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ํฌํ๋ก์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ฌ์ฉ
์์
๋น๋ฐ์ ์ํฌํ๋ก ํ์ผ(.github/workflows/*.yml
)์์ ์ฐธ์กฐ๋ฉ๋๋ค.
๋ฒ์
๋ค์ ์์น์์ ์์ ๋น๋ฐ์ ์ ์ํ ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ ์์ค
- ํ๊ฒฝ ์์ค
- ์กฐ์ง ์์ค
ํ๊ฒฝ ์์ค ๋น๋ฐ์ ํ๋ก๋์ ๋๋ ์คํ ์ด์ง๊ณผ ๊ฐ์ ํน์ ํ๊ฒฝ์๋ง ์ ์ฉ๋ฉ๋๋ค. ์กฐ์ง ์์ค์์ ์ค์ ํ๋ ๊ฒฝ์ฐ, ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ์์ ๋น๋ฐ์ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ก์ธ์ค ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ๋น๋ฐ์ ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
์ก์ธ์ค ๊ถํ
์์ ๋น๋ฐ์ GitHub Actions ์ํฌํ๋ก ๋ด์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ ์์ ์คํ ์ค์์๋ ๋ถ๊ตฌํ๊ณ Dependabot์ ์์ ๋น๋ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
Dependabot์์ ์์ํ ์ํฌํ๋ก์ ๊ฒฝ์ฐ ์์ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ํฌํ๋ก์ ์ก์ธ์คํ๋ ค๋ฉด ์ด๋ฌํ ์ํฌํ๋ก ๋น๋ฐ์ด Dependabot ๋น๋ฐ๋ก ์ ์ฅ๋์ด์ผ ํฉ๋๋ค.
์์ ๋น๋ฐ์ ์ ์ฅํ๋ ์์น์ ๋ฐ๋ผ ์ ๊ทผ์ฑ์ด ๊ฒฐ์ ๋ฉ๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ ๋น๋ฐ: ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ชจ๋ ์ํฌํ๋ก๊ฐ ๋น๋ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ํ๊ฒฝ ๋น๋ฐ: ๋น๋ฐ์ ํน์ ํ๊ฒฝ์ ์ฐธ์กฐํ๋ ์์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.
- ์กฐ์ง ๋น๋ฐ: ์กฐ์ง์์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌ๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ชจ๋ ์ํฌํ๋ก๋ ์กฐ์ง ๋น๋ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ก์ธ์ค ๊ถํ
๋ฆฌํฌ์งํ ๋ฆฌ ์์ค ๋ฐ ํ๊ฒฝ ๋น๋ฐ:
- ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ด๋ฆฌ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ์์ ๋น๋ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ณต๋ ์์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์กฐ์ง ์์ค ๋น๋ฐ:
- ์กฐ์ง ์์ ์๋ ์์ ๋น๋ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๊ฐ ๋น๋ฐ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ณต๋ ์์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํ ์ฌํญ
- Dependabot์์ ์์ํ ์ํฌํ๋ก์๋ ์์ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์์ ๋น๋ฐ์ ํฌํฌ์์ ๋์ด์ค๊ธฐ ์์ฒญ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋๋ ์ํฌํ๋ก์ ์ ๋ฌ๋์ง ์์ต๋๋ค.
- GitHub Actions๋ ์ํฌํ๋ก ๋ก๊ทธ์ ์ธ์๋๋ ๋ชจ๋ GitHub ๋น๋ฐ์ ๋ด์ฉ์ ์๋์ผ๋ก ์์ ํฉ๋๋ค.
- ์ต๋ 1,000๊ฐ์ ์กฐ์ง ๋น๋ฐ, 100๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋น๋ฐ ๋ฐ 100๊ฐ์ ํ๊ฒฝ ๋น๋ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค. ๋น๋ฐ์ ํฌ๊ธฐ๋ 48KB๋ก ์ ํ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋น๋ฐ์ ๋ํ ์ ํ์ ์ฐธ์กฐํ์ธ์.
Codespaces ๋น๋ฐ
Codespaces ๋น๋ฐ์ GitHub Codespaces์์ ์ฌ์ฉํ ์ ์๋ ์๊ฒฉ ์ฆ๋ช ๋ฐ ์ค์ํ ์ ๋ณด(์, API ํ ํฐ ๋ฐ SSH ํค)๋ฅผ ์ ์ฅํ์ฌ ์์ ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์๋๋ก ํฉ๋๋ค.
์ฌ์ฉ
Codespaces ๋น๋ฐ์ Codespaces ๊ฐ๋ฐ ์ปจํ
์ด๋ ๊ตฌ์ฑ(devcontainer.json
)์์ ์ฐธ์กฐ๋ฉ๋๋ค.
๋ฒ์
Codespaces ๋น๋ฐ์ ๋ค์์์ ์ ์ํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ณ์ ์์ค
- ๋ฆฌํฌ์งํ ๋ฆฌ ์์ค
- ์กฐ์ง ์์ค
์ฌ์ฉ์ ๊ณ์ ์์ค ๋น๋ฐ์ ๊ฒฝ์ฐ ๋น๋ฐ์ ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์กฐ์ง ์์ค์์ ์ค์ ํ ๊ฒฝ์ฐ Codespaces ๋น๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ก์ธ์ค ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ๋น๋ฐ์ ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
์ก์ธ์ค ๊ถํ
Codespaces ๋น๋ฐ์ Codespaces์์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค.
GitHub Actions์์๋ Codespaces ๋น๋ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ก์ธ์ค ๊ถํ
์ฌ์ฉ์ ๊ณ์ ์์ค ๋น๋ฐ:
- Codespaces ๋น๋ฐ์ ํด๋น ๋น๋ฐ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋๋ ๋ชจ๋ ์ฝ๋์คํ์ด์ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ ์์ค ๋น๋ฐ:
- ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ด๋ฆฌ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ Codespaces ๋น๋ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ณต๋ ์์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์กฐ์ง ์์ค ๋น๋ฐ:
- ์กฐ์ง ์์ ์๋ Codespaces ๋น๋ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๊ฐ ๋น๋ฐ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ณต๋ ์์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ ๋น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํ ์ฌํญ
- GitHub Codespaces์ ์ต๋ 100๊ฐ์ ๋น๋ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค.
- ๋น๋ฐ์ ํฌ๊ธฐ๋ 48KB๋ก ์ ํ๋ฉ๋๋ค.
- Codespaces ๋น๋ฐ์ ํฌํฌ์ ์ ๋ฌ๋์ง ์์ต๋๋ค.