개발/클라우드

react S3 - EC2 github action-aws deploy CI/CD main.yml

이수민 2024. 1. 20. 22:34

프로젝트 중 했던 CI/CD이다. IAM 과정부터 세세히 정리를 하려고 했으나, aws 계정이 만료되는 바람에 yml만이라도 아쉬운대로 올려보겠다.

 

name: CI/CD Workflow

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

env:
  S3_BUCKET_NAME: [S3 버킷 이름]
  APP_NAME: [APP_NAME] 
  GROUP_NAME: [GROUP_NAME] 

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Upload to S3
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.SECRET_ACCESS_KEY }}
      run: |
        aws s3 cp --region ap-northeast-2 ./build-fe.zip s3://$S3_BUCKET_NAME/build-fe.zip

    - name: Deploy
      run: |
        aws deploy create-deployment \
        --application-name ${{ env.APP_NAME }} \
        --deployment-config-name CodeDeployDefault.AllAtOnce \
        --deployment-group-name ${{ env.GROUP_NAME }} \
        --s3-location bucket=$S3_BUCKET_NAME,key=build-fe.zip,bundleType=zip

    - name: Set Script Permissions
      run: chmod +x ./deploy.sh
    - name: Execute Deploy Script
      run: ./deploy.sh

main.yml

 

 

version: 0.0
os: linux

files:
  - source: /
    destination: /home/ubuntu/deploy-fe
    overwrite: yes
permissions:
  - object: /home/ubuntu/deploy-fe
    owner: ubuntu
    group: ubuntu
    mode: 755
hooks:
  AfterInstall:
    - location: /home/ubuntu/deploy-fe/deploy.sh
      timeout: 300
      runas: root

appspec.yml

 

#!/usr/bin/env bash
# 자유롭게 작성

deploy.sh