GitHub Actions ์ธ์ฆ ์ ๋ณด
GitHub Actions ์ํฌํ๋ก์์ ์ธ์ฆ๋ API ์์ฒญ์ ์ํํ๊ฑฐ๋ ํ ํฐ์ด ํ์ํ ์ฌ์ฉ์ ์ง์ ์์
์ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ, ๊ฐ๋ฅํ๋ฉด ๊ธฐ๋ณธ ์ ๊ณต GITHUB_TOKEN
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ GITHUB_TOKEN
์ ์ํฌํ๋ก์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ๋ฆฌ์์ค์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค. ์กฐ์ง์ด๋ ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฆฌ์์ค์ ๊ฐ์ ์ถ๊ฐ ๋ฆฌ์์ค์ ์ก์ธ์คํด์ผ ํ๋ ๊ฒฝ์ฐ GitHub App์ ์ฌ์ฉํ ์ ์์ต๋๋ค. personal access token ๋์ GitHub App์ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ๋ง๋ค๊ธฐ ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
GitHub App์ผ๋ก ์ธ์ฆ
GitHub App์ ์ฌ์ฉํ์ฌ ์ธ์ฆ๋ API ์์ฒญ์ ํ๋ ค๋ฉด GitHub App์ ๋ฑ๋กํ๊ณ , ์ฑ์ ์๊ฒฉ ์ฆ๋ช ์ ์ ์ฅํ๊ณ , ์ฑ์ ์ค์นํด์ผ ํฉ๋๋ค. ์ด ์์ ์ด ์๋ฃ๋๋ฉด ์ฑ์ ์ฌ์ฉํ์ฌ GitHub Actions ์ํฌํ๋ก์์ ์ธ์ฆ๋ API ์์ฒญ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ค์น ์ก์ธ์ค ํ ํฐ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ค์น ์ก์ธ์ค ํ ํฐ์ ํ ํฐ์ด ํ์ํ ์ฌ์ฉ์ ์ง์ ์์ ์ ์ ๋ฌํ ์๋ ์์ต๋๋ค.
-
GitHub App์ ๋ฑ๋กํฉ๋๋ค. ์ํ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ ๊ถํ์ GitHub App ๋ฑ๋ก์ ๋ถ์ฌํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ๋ฑ๋ก ๋ฐ GitHub ์ฑ์ ๊ถํ ์ ํ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
GitHub App์ ์ฑ ID๋ฅผ GitHub Actions ๊ตฌ์ฑ ๋ณ์๋ก ์ ์ฅํฉ๋๋ค. ์ฑ์ ์ค์ ํ์ด์ง์์ ์ฑ ID๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ฑ ID๋ ํด๋ผ์ด์ธํธ ID์ ๋ค๋ฆ ๋๋ค. GitHub App์ ์ค์ ํ์ด์ง๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ๋ฑ๋ก ์์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์. ๊ตฌ์ฑ ๋ณ์ ์ ์ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณ์์ ์ ๋ณด ์ ์ฅ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
-
์ฑ์ ๋ํ ํ๋ผ์ด๋น ํค๋ฅผ ์์ฑํฉ๋๋ค. ๊ฒฐ๊ณผ ํ์ผ์ ๋ด์ฉ์ ๋น๋ฐ๋ก ์ ์ฅํฉ๋๋ค. (
-----BEGIN RSA PRIVATE KEY-----
๋ฐ-----END RSA PRIVATE KEY-----
์(๋ฅผ) ํฌํจํ ํ์ผ์ ์ ์ฒด ๋ด์ฉ์ ์ ์ฅํฉ๋๋ค.) ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ๋ํ ํ๋ผ์ด๋น ํค ๊ด๋ฆฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์. ๋น๋ฐ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub Actions์์ ๋น๋ฐ ์ฌ์ฉ์(๋ฅผ) ์ฐธ์กฐํ์ธ์. -
์ฌ๋ฐ๋ฅธ ๊ณ์ ์ GitHub App์ ์ค์นํ๊ณ ์ํฌํ๋ก๊ฐ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ค๋ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ถํ๊ณผ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ ๋ง์ GitHub ์ฑ ์ค์น์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
GitHub Actions ์ํฌํ๋ก์์ API ์์ฒญ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ค์น ์ก์ธ์ค ํ ํฐ์ ๋ง๋ญ๋๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ค์ ์์ ์ ๊ฐ์ด GitHub ์์ ์์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์์ ์ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด
actions/create-github-app-token
์์ ์ ํฌํฌํ๊ณ ์์ ํ๊ฑฐ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ฌ ์ํฌํ๋ก์์ ์ค์น ํ ํฐ์ ์๋์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ์ค์น๋ก ์ธ์ฆ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.๋ค์ ์์ ์ํฌํ๋ก์์๋ ์ด
actions/create-github-app-token
์์ ์ ์ฌ์ฉํ์ฌ ์ค์น ์ก์ธ์ค ํ ํฐ์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ํฌํ๋ก๋ ํ ํฐ์ ์ฌ์ฉํ์ฌ GitHub CLI๋ฅผ ํตํด API ์์ฒญ์ ๋ง๋ญ๋๋ค.๋ค์ ์ํฌํ๋ก์์
APP_ID
๋ฅผ ์ฑ ID๊ฐ ์ ์ฅ๋ ๊ตฌ์ฑ ๋ณ์์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.APP_PRIVATE_KEY
๋ฅผ ์ฑ ํ๋ผ์ด๋น ํค๊ฐ ๋ณด๊ด๋ ๋น๋ฐ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
on: workflow_dispatch: jobs: demo_app_authentication: runs-on: ubuntu-latest steps: - name: Generate a token id: generate-token uses: actions/create-github-app-token@v2 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - name: Use the token env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | gh api octocat
on:
workflow_dispatch:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat