๐Ÿ“DevOps

[Github Action] Github Action์„ ์ด์šฉํ•ด์„œ EC2์— ์ž๋™๋ฐฐํฌํ•˜๊ธฐ (์ž‘์„ฑ์ค‘)

yujch 2023. 7. 29. 20:37
๋ฐ˜์‘ํ˜•

์›๋ž˜ ๋ฐฐํฌ ๋กœ์ง์€,

๊ฐœ๋ฐœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด main ๋ธŒ๋ Œ์น˜์— merge ๋˜๋ฉด ec2์— ์ ‘์†ํ•ด์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ๋ธŒ๋ Œ์น˜๋ฅผ pull ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ Github Action์„ ์‚ฌ์šฉํ•ด์„œ ์œ„ ๊ณผ์ •์„ ์ž๋™ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์–ด ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

 


 

ํŒŒ์ดํ”„๋ผ์ธ

1. ๋กœ์ปฌ์ปดํ“จํ„ฐ์—์„œ main ๋ธŒ๋ Œ์น˜๋กœ push ํ•˜๋ฉด

2. Github Action ์‹คํ–‰

    1) ec2์— ์ ‘์†

    2) ์ž‘์„ฑ๋œ script ์‹คํ–‰

        - cloneํ•œ ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™

        - ์ง€์ •ํ•œ ๋ธŒ๋ Œ์น˜๋ฅผ git pull

3. ๋ฐฐํฌ ์™„๋ฃŒ

 


 

๋ฐฉ๋ฒ•

1. Github Action ์ƒ์„ฑํ•˜๊ธฐ

Github > ์ ์šฉํ•  ํ”„๋กœ์ ํŠธ > Action

set up a workflow yourself  ํด๋ฆญ

 

.yml ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ

name: main branch auto ci process script

on: # ์•„๋ž˜ job์„ ์‹คํ–‰์‹œํ‚ฌ action
  push:
    branches: [ main ]

jobs:
  deploy:
    name: deploy
    runs-on: ubuntu-latest # ์‹คํ–‰๋  ์ธ์Šคํ„ด์Šค OS์™€ ๋ฒ„์ „

    steps:
      - name: excuting remote ssh commands
        uses: appleboy/ssh-action@v0.1.9 # ssh ์ ‘์†ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค
        with:
          host: ${{ secrets.REMOTE_IP }} # ec2 ์ธ์Šคํ„ด์Šค ip
          username: ${{ secrets.REMOTE_USER }} # ubuntu ์•„์ด๋””
          key: ${{ secrets.REMOTE_PRIVATE_KEY }} # ec2 ์ธ์Šคํ„ด์Šค pem key
          port: ${{ secrets.REMOTE_SSH_PORT }} # ์ ‘์†ํฌํŠธ๋ฒˆํ˜ธ (๋ณดํ†ต 22)
          script: | # ์‹คํ–‰๋  ์Šคํฌ๋ฆฝํŠธ
            cd /var/www/html/test-project
            git pull

Commit changes...

 

 

2. .yml ํŒŒ์ผ์—์„œ ์ž‘์„ฑํ•œ ์ž‘์—…์•”ํ˜ธ ๋ฐ ๋ณ€์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

Github > ์ ์šฉํ•  ํ”„๋กœ์ ํŠธ > Settings > Secrets ans variables > Actions

New repository secret ํด๋ฆญ

 

์ƒ์„ฑํ•˜๊ธฐ

Add secret

๋ฐ˜์‘ํ˜•