현재 main 브랜치에 push되면 github actions를 활용해서 EC2에 배포되는 flow를 가지고 있습니다.
name: 테스트 자동배포
on:
push:
branches:
- dev
workflow_dispatch:
env:
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build-deploy:
runs-on: node-deployment-server
steps:
- name: 깃레포지토리 소스코드 체크아웃
uses: actions/checkout@v3
- name: 노드 설치
uses: actions/setup-node@v3
with:
node-version: '16'
- name: 노드 패키지 설치
run: npm install;
- name: 프로젝트 빌드
run: npm run build
- name: 빌드 파일 배포
run: rsync -az ./dist ./bin ./.env ./package.json ./package-lock.json [email protected]:/home/dev/server -e "ssh -i /etc/ssh/daehanbooks-account"
- name: 노드 서버 리부트
run: ssh -i /etc/ssh/daehanbooks-account [email protected] 'export NODE_ENV=development; cd server; npm install; npx node-pre-gyp rebuild -C ./node_modules/canvas; npm run patch; pm2 delete all; export SERVER_PORT=4001; pm2 start ./dist/server.js --name server --merge-logs -l ~/.pm2/logs/server.log -o NULL -e NULL;'
DEVELOPMENT_DATABASE_URI=mongodb+srv://server:[email protected]/dev-salerbook-cash
PRODUCTION_DATABASE_URI=mongodb+srv://server:[email protected]/salerbook-cash