Skip to content

Merge branch 'develop' of github.com:Sweepic/sweepic-Server into develop #29

Merge branch 'develop' of github.com:Sweepic/sweepic-Server into develop

Merge branch 'develop' of github.com:Sweepic/sweepic-Server into develop #29

Workflow file for this run

name: deploy-main # 파이프라인 이름
on:
push:
branches:
- main # main 브랜치에 새로운 커밋이 올라왔을 때만 실행
workflow_dispatch: # 필요한 경우 사용자가 수동 실행
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# CI/CD 파이프라인이 실행될 운영체제 환경 지정
- name: Checkout
uses: actions/checkout@v4
# prisma 폴더 파일의 변경사항이 있는지 검사
# - name: Check prisma has changes
# uses: dorny/paths-filter@v3
# id: paths-filter
# with:
# filters: |
# prisma: ["prisma/**"]
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: |
npm install -g yarn
yarn install
- name: Generate Tsoa Routes
run: |
yarn tsoa-routes
- name: Generate Swagger document
run: |
yarn swagger
yarn tsoa-swagger
- name: Run build
run: |
yarn prisma generate
yarn build
- name: Compress dist folder
run: |
tar -czvf dist.tar.gz ./dist
# SSH 설정
- name: Configure SSH
run: |
mkdir -p ~/.ssh
echo "$EC2_SSH_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
cat >>~/.ssh/config <<END
Host sweepic-ec2
HostName $EC2_HOST
User $EC2_USER
IdentityFile ~/.ssh/id_rsa
StrictHostKeyChecking no
Host *
ServerAliveInterval 120
TCPKeepAlive no
END
env:
EC2_USER: ubuntu
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}
# 프로젝트 폴더의 압축 파일을 EC2 서버로 전송
- name: Copy Workspace
run: |
ssh sweepic-ec2 'sudo mkdir -p /opt/app'
ssh sweepic-ec2 'sudo chown ubuntu:ubuntu /opt/app'
scp dist.tar.gz sweepic-ec2:/opt/app
# 전송된 압축 배포파일을 압축풀기
- name: Release Compressed File
run: |
ssh sweepic-ec2 'sudo tar -xzvf /opt/app/dist.tar.gz -C /opt/app'
# 원격 서버에서 애플리케이션을 Systemd 서비스로 등록하는 과정
- name: Copy systemd service file
run: |
ssh sweepic-ec2 '
echo "[Unit]
Description=Sweepic Project
After=network.target
[Service]
User=${USER}
WorkingDirectory=/opt/app
ExecStart=/usr/bin/node dist/app.cjs
Restart=always
[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/app.service
'
# systemd 서비스 활성화
- name: Enable systemd service
run: |
ssh sweepic-ec2 'sudo systemctl daemon-reload'
ssh sweepic-ec2 'sudo systemctl enable app'
# systemd 서비스 재시작
- name: Restart systemd service
run: |
ssh sweepic-ec2 'sudo systemctl restart app'