YesCoding

Go to English
search:

Github Actions ์™€ codeDeploy ๋กœ EC2์— ๋ฐฐํฌํ•˜๊ธฐ

github actions introduction

github actions introduction

Go to English version

์ƒˆ๋กœ ์‹œ์ž‘ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์œ ์ €๋“ค์—๊ฒŒ ๋ณด์—ฌ์ค„ ํ•„์š”๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ํˆด์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์—‡์„ ์‚ฌ์šฉํ• ๊นŒ ๋™๋ฃŒ์™€ ๊ณ ๋ฏผ์„ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค. ๋™๋ฃŒ์™€ ์ €๋Š” ํšŒ์‚ฌ์—์„œ๋Š” ์  ํ‚จ์Šค๋ฅผ ์จ์„œ ๋ฐฐํฌ๋ฅผ ํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐฐํฌ ์ž‘์—…์„ ํ•  ๋•Œ๋Š” heroku ๋ฐ–์— ์จ ๋ณธ ์ ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์  ํ‚จ์Šค๋ฅผ ์ œ์•ˆํ–ˆ๊ณ , ๋™๋ฃŒ๋Š” Github Actions ๋ฅผ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์  ํ‚จ์Šค๋ฅผ ์ œ์•ˆํ•œ ์ด์œ 

๊ฐ€์žฅ ์นœ์ˆ™ํ•˜๊ณ , dev => feature => production ์œผ๋กœ ์ด์–ด์ง€๋Š” flow ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์  ํ‚จ์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ข‹์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋™๋ฃŒ๊ฐ€ Github Actions ๋ฅผ ์ œ์•ˆํ•œ ์ด์œ 

์ผ๋‹จ ๋น„๊ต์  ์ƒˆ๋กœ ๋‚˜์˜จ ์„œ๋น„์Šค์ด๋ฉฐ github ์—์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌ๊นŒ์ง€ ๊ฐ™์€ ๊ณณ์—์„œ ํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ณ , ์ง€๊ธˆ ๋‹น์žฅ์€ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ๋งŒ ํ•  ๊ฒƒ์ด๋ผ ์„œ๋น„์Šค๊ฐ€ ์–ด๋Š ์ •๋„ ์ปค์ง€๋ฉด ๊ทธ ๋•Œ ๋ฐฐํฌ ๋‹จ๊ณ„๋ฅผ ๋‚˜๋ˆ ๋„ ๊ดœ์ฐฎ์„ ๋“ฏ ํ•˜๋‹ค๋Š” ์ด์œ ์˜€์Šต๋‹ˆ๋‹ค.

๋™๋ฃŒ์˜ ์˜๊ฒฌ์— ์„ค๋“๋˜์—ˆ๊ณ , ์ง€๊ธˆ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ดˆ์ฐฝ๊ธฐ์—์„œ๋Š” ๋น ๋ฅธ ์†๋„๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์จ๋ณด๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ๋“ค์–ด ์šฐ๋ฆฌ๋Š” Github Actions ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ๋ชฉํ‘œ

์ž‘์—…ํ•œ ์ฝ”๋“œ๋ฅผ main ์— push ํ•˜๋ฉด AWS codeDeploy ๋ฅผ ์‚ฌ์šฉํ•ด ec2 ์— ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์‚ฌ์ „ ์ž‘์—… (์ด ๊ณผ์ •์€ ์ด ํฌ์ŠคํŠธ์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

  1. ec2 ์ƒ์„ฑ
  2. AWS codeDeploy ์— ๋“ค์–ด๊ฐ€ ์ƒˆ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๊ณ , ๋ฐฐํฌ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    github actions introduction

    github actions introduction

github actions ์ž‘์—… ํ”„๋กœ์„ธ์Šค

  1. Actions ๋ฉ”๋‰ด์—์„œ New workflow ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    github actions introduction

    github actions introduction

  2. popular service ์—๋Š” ec2 ๊ฐ€ ์—†์œผ๋ฏ€๋กœ Manual workflow ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    github actions introduction

    github actions introduction

  3. .github/workflows/ ์— ์ƒ์„ฑ๋œ yml ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฑ„์›๋‹ˆ๋‹ค.

name: // workflow ์˜ ์ด๋ฆ„. ํ•˜๊ณ  ์‹ถ์€๋Œ€๋กœ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. on: push: // ์ด workflow ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  github action ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. branches: [ main ] workflow_dispatch: jobs: deploy: // workflow ์—์„œ ์‹คํ–‰๋  job ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. runs-on: ubuntu-latest // default ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์•˜์Šต๋‹ˆ๋‹ค. steps: - uses: actions/checkout@v2 // default ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์•˜์Šต๋‹ˆ๋‹ค. // codeDeploy ๋ฅผ ํ†ตํ•ด ec2 ์— ๋ฐฐํฌํ•˜๊ธฐ ์ „์—, ec2 access configuration ์„ ํ•ด์•ผ ํ•ฉ๋‹ค. - name: Configure AWS credentials from Production account uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.PROD_AWS_ACCESS_KEY_ID }} // repo settings ์˜ secrets ๋ฉ”๋‰ด์— ๋“ค์–ด๊ฐ€๋ฉด secrets ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS credential access key ์™€ key id ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. aws-secret-access-key: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }} aws-region: ap-northeast-2 // aws cli ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค. // GITHUB_REPOSITORY ์™€ GITHUB_SHA ๋Š” ์ด๋Œ€๋กœ ์ž…๋ ฅํ•˜๋ฉด push ํ•  ๋‹น์‹œ์˜ repo ์™€ commit_id ๋กœ ์ž๋™ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. - name: deploy with aws codeDeploy run: aws deploy create-deployment --application-name ${CODEDEPLOY์—์„œ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฆ„} --deployment-group-name ${๋ฐฐํฌ๊ทธ๋ฃน๋ช…} --deployment-config-name CodeDeployDefault.AllAtOnce --github-location repository=${GITHUB_REPOSITORY},commitId=${GITHUB_SHA}

์œ„ ๊ณผ์ •์ด ์ž˜ ์‹คํ–‰๋˜๋Š” ์ง€ ํ…Œ์ŠคํŠธํ•ด๋ด…๋‹ˆ๋‹ค. repo ์˜ Actions ๋ฉ”๋‰ด์— ๋“ค์–ด๊ฐ€๋ฉด ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Recommend Post
ยฉ Copyright 2022, YesCoding