๐ GitHub Actions Secrets & Variables ์ค์ ๊ฐ์ด๋
๐ GitHub Actions Secrets & Variables ์ค์ ๊ฐ์ด๋
๐ ๊ฐ์
GitHub Actions์์ ์๋ฒ ๋ฐฐํฌ๋ CI/CD๋ฅผ ๊ตฌ์ฑํ ๋๋ Secrets์ Variables๋ฅผ ํตํด ๋ฏผ๊ฐ ์ ๋ณด์ ํ๊ฒฝ ์ค์ ๊ฐ์ ์์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์๋ ๊ทธ ์ฐจ์ด์ ์ฌ์ฉ ์์น๋ฅผ ๋ช ํํ ์ ๋ฆฌํฉ๋๋ค.
๐งฑ 1. GitHub Secrets์ ์ข ๋ฅ
| ๊ตฌ๋ถ | ์ค๋ช | ์ ์ฉ ๋ฒ์ | ์ค์ ๊ฒฝ๋ก |
|---|---|---|---|
| Repository secrets | ํน์ ์ ์ฅ์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ | ๋จ์ผ ์ ์ฅ์ | Settings > Secrets and variables > Actions > Repository secrets |
| Environment secrets | ๊ฐ์ ์ ์ฅ์ ๋ด์์๋ ํ๊ฒฝ๋ณ(dev, prod ๋ฑ)๋ก ๊ตฌ๋ถ ๊ฐ๋ฅ | ์ ์ฅ์ ๋ด ํ๊ฒฝ๋ณ | Settings > Environments > [ํ๊ฒฝ ์ด๋ฆ] > Environment secrets |
| Organization secrets | ์กฐ์ง ๋ด ์ฌ๋ฌ ์ ์ฅ์์์ ๊ณตํต ์ฌ์ฉ ๊ฐ๋ฅ | ์กฐ์ง ์ ์ฒด | Organization > Settings > Secrets and variables > Actions > Organization secrets |
๐ง ์ฌ์ฉ ๊ฐ์ด๋
| ์ํฉ | ์ถ์ฒ Secret ์ข ๋ฅ | ์ด์ |
|---|---|---|
| ๋จ์ผ ํ๋ก์ ํธ ๋ฐฐํฌ | Repository secrets | ๋จ์ํ๊ณ ๋น ๋ฆ |
| ๊ฐ๋ฐ/์ด์ ํ๊ฒฝ ๋ถ๋ฆฌ ๋ฐฐํฌ | Environment secrets | ํ๊ฒฝ๋ณ ์ ๊ทผ ์ ์ด ๊ฐ๋ฅ |
| ์ฌ๋ฌ ์ ์ฅ์ ๊ณตํต ํค ์ฌ์ฉ | Organization secrets | ์ค์ ๊ด๋ฆฌ์ ์ฉ์ด |
โ๏ธ 2. Environment secrets ์ค์ ์์
์์: ๊ฐ๋ฐ(Development) / ์ด์(Production) ํ๊ฒฝ ๋ถ๋ฆฌ
- ์ ์ฅ์ ์ด๋ โ
Settings > Environments ๋ ๊ฐ ํ๊ฒฝ ์์ฑ
developmentproduction
- ๊ฐ ํ๊ฒฝ์ Secrets ์ถ๊ฐ
๐ง ๊ฐ๋ฐ ์๋ฒ (Development)
| Key | ์ค๋ช | ์์ |
|---|---|---|
DEV_SERVER_HOST | ๊ฐ๋ฐ ์๋ฒ IP | 106.10.58.97 |
DEV_SERVER_USER | SSH ์ฌ์ฉ์๋ช | planithc |
DEV_SERVER_SSH_KEY | SSH Private Key (๊ฐํ ํฌํจ) | (๋น๊ณต๊ฐ ํค ์ ๋ ฅ) |
DEV_SERVER_PORT | SSH ํฌํธ | 33322 |
DEV_SERVER_PATH | ๋ฐฐํฌ ๊ฒฝ๋ก | /home/planithc |
๐ญ ์ด์ ์๋ฒ (Production)
| Key | ์ค๋ช | ์์ |
|---|---|---|
PROD_SERVER_HOST | ์ด์ ์๋ฒ IP | 106.10.58.97 |
PROD_SERVER_USER | SSH ์ฌ์ฉ์๋ช | planithc |
PROD_SERVER_SSH_KEY | SSH Private Key (๊ฐํ ํฌํจ) | (๋น๊ณต๊ฐ ํค ์ ๋ ฅ) |
PROD_SERVER_PORT | SSH ํฌํธ | 33324 |
PROD_SERVER_PATH | ๋ฐฐํฌ ๊ฒฝ๋ก | /home/planithc |
PROD_SERVER_URL | Health Check URL (์ ํ) | https://keras.kr |
โ ๏ธ 3. ์ค์ ์ฌํญ
๋ฐฐํฌ ์ฌ์ฉ์(
planithc)๋ ๋ค์ ๋ช ๋ น์ ๋น๋ฐ๋ฒํธ ์์ด ์คํํ ์ ์์ด์ผ ํฉ๋๋ค:1
sudo systemctl restart eras-appSSH ์ ์ ์ , ์๋ฒ ACG(Security Group)์์ GitHub Actions์ ์์๋ฐ์ด๋ IP๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค. (GitHub Actions IP๋ ๊ณ ์ ๋์ง ์์ผ๋ฏ๋ก, ํ์ ์ Bastion Host๋ VPN ์ฌ์ฉ ๊ถ์ฅ)
๐ 4. Secrets vs Variables
| ๊ตฌ๋ถ | Secrets | Variables |
|---|---|---|
| ๐ ๋ณด์์ฑ | ์ํธํ ์ ์ฅ (Encrypted) | ํ๋ฌธ ์ ์ฅ (Not encrypted) |
| ๐ต๏ธ ๋ก๊ทธ ๋ ธ์ถ | ์๋ ๋ง์คํน(***) ์ฒ๋ฆฌ | ๊ทธ๋๋ก ์ถ๋ ฅ๋ ์ ์์ |
| ๐งฉ ์ฉ๋ | ๋น๋ฐ๋ฒํธ, ํ ํฐ, SSH ํค ๋ฑ ๋ฏผ๊ฐ ์ ๋ณด | ์ผ๋ฐ ์ค์ ๊ฐ, ๊ฒฝ๋ก, ํฌํธ ๋ฑ |
| ๐ ๊ฐ ํ์ธ | ์ ์ฅ ํ ๊ฐ ํ์ธ ๋ถ๊ฐ | ์ธ์ ๋ ํ์ธ ๋ฐ ์์ ๊ฐ๋ฅ |
| ๐ฌ ์ํฌํ๋ก ์ ๊ทผ | $ | $ |
๐ก 5. ์ฌ์ฉ ์์
1
2
3
4
5
6
7
8
9
10
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy to server
run: |
echo "Deploying to $..."
ssh -i $ \
$@$ \
-p $
secrets.SSH_PRIVATE_KEYโ ๋ฏผ๊ฐ ์ ๋ณดvars.SERVER_PORT,vars.SERVER_USERโ ์ผ๋ฐ ์ค์ ๊ฐ
๐ง 6. ์ค๋ฌด ํ
โ Secrets
- ๋ฏผ๊ฐํ ์ ๋ณด (API Key, Token, SSH Key ๋ฑ)
- GitHub ๋ก๊ทธ์์ ์๋ ๋ง์คํน
- ์ ์ฅ ํ ๊ฐ ํ์ธ ๋ถ๊ฐ
โ๏ธ Variables
- ์ค์ ๊ฐ (ํ๊ฒฝ ์ด๋ฆ, ๊ฒฝ๋ก, ํฌํธ, ๋ฒ์ ๋ฑ)
- ์ฌ๋ฌ ์ํฌํ๋ก์์ ๊ณต์ ๊ฐ๋ฅ
- ๋๋ฒ๊น ์ ์ ์ฉ
๐ฏ ๊ฒฐ๋ก
- Secrets โ ๋ณด์์ ์ํ ๋ฏผ๊ฐ ์ ๋ณด ์ ์ฅ์
- Variables โ ์ผ๋ฐ ์ค์ ๊ฐ ๊ด๋ฆฌ์ฉ
- Environment secrets โ ํ๊ฒฝ๋ณ ๋ถ๋ฆฌ ๊ด๋ฆฌ ์ ์ต์
This post is licensed under CC BY 4.0 by the author.