Skip to content

Merge pull request #32 from codeit-moving/dev #17

Merge pull request #32 from codeit-moving/dev

Merge pull request #32 from codeit-moving/dev #17

Workflow file for this run

name: Deploy to EC2
on:
push:
branches:
- main # main 브랜치에 푸시될 때 트리거됨
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up SSH key
run: |
# ~/.ssh 디렉토리 생성 (기본적으로 없을 수 있음)
mkdir -p ~/.ssh
# GitHub secrets에 저장된 PEM 파일을 생성
echo "${{ secrets.EC2_SSH_PEM }}" > ~/.ssh/ec2.pem
chmod 600 ~/.ssh/ec2.pem # SSH 키에 적절한 권한 부여
# EC2 인스턴스의 호스트 키를 확인하지 않도록 설정 (보안을 강화하려면 이 부분을 수정)
echo -e "Host *\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
- name: Set up environment variables
run: |
ssh -i ~/.ssh/ec2.pem ec2-user@${{ secrets.EC2_ADDRESS }} "bash -s" << 'EOF'
# .env 파일이 존재하는지 확인
if [ ! -f ~/moving-be/.env ]; then
# .env 파일이 없으면 새로 생성
touch ~/moving-be/.env
fi
# GitHub Actions에서 전달된 .env 파일 내용 시크릿으로 가져오기
echo "${{ secrets.ENV_FILE }}" > ~/moving-be/.env
# 파일 내용 확인 (선택 사항)
cat ~/moving-be/.env
EOF
- name: Deploy to EC2
run: |
ssh -i ~/.ssh/ec2.pem -T ec2-user@${{ secrets.EC2_ADDRESS }} << 'EOF'
cd ~/moving-be
git pull origin main # GitHub에서 최신 변경 사항을 pull
npm install # 필요에 따라 의존성 설치
npm run build
pm2 start dist/app.js --name my-app || pm2 reload my-app -f # 서버 재시작 (pm2 또는 다른 방법으로)
EOF