Post

๐Ÿ” 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) ํ™˜๊ฒฝ ๋ถ„๋ฆฌ

  1. ์ €์žฅ์†Œ ์ด๋™ โ†’ Settings > Environments
  2. ๋‘ ๊ฐœ ํ™˜๊ฒฝ ์ƒ์„ฑ

    • development
    • production
  3. ๊ฐ ํ™˜๊ฒฝ์— Secrets ์ถ”๊ฐ€

๐Ÿ”ง ๊ฐœ๋ฐœ ์„œ๋ฒ„ (Development)

Key์„ค๋ช…์˜ˆ์‹œ
DEV_SERVER_HOST๊ฐœ๋ฐœ ์„œ๋ฒ„ IP106.10.58.97
DEV_SERVER_USERSSH ์‚ฌ์šฉ์ž๋ช…planithc
DEV_SERVER_SSH_KEYSSH Private Key (๊ฐœํ–‰ ํฌํ•จ)(๋น„๊ณต๊ฐœ ํ‚ค ์ž…๋ ฅ)
DEV_SERVER_PORTSSH ํฌํŠธ33322
DEV_SERVER_PATH๋ฐฐํฌ ๊ฒฝ๋กœ/home/planithc

๐Ÿญ ์šด์˜ ์„œ๋ฒ„ (Production)

Key์„ค๋ช…์˜ˆ์‹œ
PROD_SERVER_HOST์šด์˜ ์„œ๋ฒ„ IP106.10.58.97
PROD_SERVER_USERSSH ์‚ฌ์šฉ์ž๋ช…planithc
PROD_SERVER_SSH_KEYSSH Private Key (๊ฐœํ–‰ ํฌํ•จ)(๋น„๊ณต๊ฐœ ํ‚ค ์ž…๋ ฅ)
PROD_SERVER_PORTSSH ํฌํŠธ33324
PROD_SERVER_PATH๋ฐฐํฌ ๊ฒฝ๋กœ/home/planithc
PROD_SERVER_URLHealth Check URL (์„ ํƒ)https://keras.kr

โš ๏ธ 3. ์ค‘์š” ์‚ฌํ•ญ

  • ๋ฐฐํฌ ์‚ฌ์šฉ์ž(planithc)๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

    1
    
    sudo systemctl restart eras-app
    
  • SSH ์ ‘์† ์ „, ์„œ๋ฒ„ ACG(Security Group)์—์„œ GitHub Actions์˜ ์•„์›ƒ๋ฐ”์šด๋“œ IP๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (GitHub Actions IP๋Š” ๊ณ ์ •๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ํ•„์š” ์‹œ Bastion Host๋‚˜ VPN ์‚ฌ์šฉ ๊ถŒ์žฅ)


๐Ÿ” 4. Secrets vs Variables

๊ตฌ๋ถ„SecretsVariables
๐Ÿ”’ ๋ณด์•ˆ์„ฑ์•”ํ˜ธํ™” ์ €์žฅ (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.