express github action ci/cd

CH_Hwang·2022년 2월 6일
0
  • express github action은
    • github action

    • code-deploy

    • ec2 배포

      순으로 이어진다.

이때, code-deploy같은 경우에는 deploy시 덮어쓰기 기능이 없어 install 전에 해당 폴더를 삭제 후 실행시켜주는 스크립트가 필요하다.

name: Deploy # Workflow 이름
on: # Event 감지
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs: # Job 설정
  build:
    runs-on: ubuntu-18.04
    strategy:
      matrix:
        node-version: [16.x]

    steps:
      - name: Checkout source code. # Repo checkout
        uses: actions/checkout@v2

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}

      - name: create env file
        working-directory: ./
        run: |
          touch .env
          cat << EOF >> .env
          ${{ secrets.ENV }}
      
      - name: create ormconfig
        working-directory: ./
        run: |
          touch ormconfig.json
          cat << EOF >> ormconfig.json
          ${{ secrets.ORMCONFIG }}

      - name: Cache node modules # node modules 캐싱
        uses: actions/cache@v1
        with:
          path: node_modules
          key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.OS }}-build-
            ${{ runner.OS }}-

      - name: Install Dependencies # 의존 파일 설치
        run: npm install

      - name: run test # 테스트코드 실행
        run: npm test

      - name: zip create 
        run: zip -qq -r back.zip ./
        shell: bash

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}

      - name: Upload to S3 # Upload build file to S3
        run: aws s3 cp ./back.zip s3://${{ secrets.DEV_AWS_S3_BUCKET }}/public/
        
      - name: Deploy # Deploy to EC2
        run: aws deploy create-deployment
          --application-name LinkGahter-Bakc-deploy
          --deployment-config-name CodeDeployDefault.AllAtOnce
          --deployment-group-name LinkGather-deploy-pipe
          --s3-location bucket=linkgather-back,key=public/back.zip,bundleType=zip

github action workflows

#!/usr/bin/env bash

if [ -d /home/ubuntu/linkgather/Back]; then
  sudo rm -rf /home/ubuntu/linkgather/Back
  echo ">delete folder"
fi
sudo mkdir -vp /home/ubuntu/linkgather/Back
echo ">mkdir"

before install

#!/usr/bin/env bash

cd /home/ubuntu/linkgather/Back/

echo "> deploy"

sudo pm2 kill
rm -rf node_modules
npm i
sudo pm2 start ecosystem.config.js

after install

0개의 댓글