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