Skip to content

Merge pull request #102 from umc-commit/feat/set-swagger #8

Merge pull request #102 from umc-commit/feat/set-swagger

Merge pull request #102 from umc-commit/feat/set-swagger #8

Workflow file for this run

name: CD
on:
push:
branches:
- develop
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure SSH
run: |
mkdir -p ~/.ssh
echo "$EC2_SSH_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H $EC2_HOST >> ~/.ssh/known_hosts
cat >>~/.ssh/config <<END
Host ec2
HostName $EC2_HOST
User ubuntu
IdentityFile ~/.ssh/id_rsa
StrictHostKeyChecking no
END
env:
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}
- name: Copy code to EC2 (using rsync)
run: |
ssh ec2 "sudo mkdir -p /opt/app && sudo chown ubuntu:ubuntu /opt/app"
rsync -avz --delete -e "ssh" ./ ec2:/opt/app
- name: Create .env file
run: |
ssh ec2 "echo '$ENV_FILE' > /opt/app/.env"
env:
ENV_FILE: ${{ secrets.ENV_FILE }}
- name: Restore Firebase service account key
run: |
ssh ec2 "mkdir -p /opt/app/config && echo $FIREBASE_SERVICE_ACCOUNT_BASE64 | base64 -d > /opt/app/config/service-account-key.json"
env:
FIREBASE_SERVICE_ACCOUNT_BASE64: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_BASE64 }}
- name: Install dependencies
run: ssh ec2 "cd /opt/app && npm install"
- name: Create systemd service
run: |
ssh ec2 "echo '[Unit]
Description=Node.js App
After=network.target
[Service]
Environment=NODE_ENV=production
User=ubuntu
ExecStart=/usr/bin/npm run start --prefix /opt/app/
Restart=always
[Install]
WantedBy=multi-user.target' | sudo tee /etc/systemd/system/app.service"
- name: Enable & Restart systemd service
run: |
ssh ec2 "sudo systemctl daemon-reload"
ssh ec2 "sudo systemctl enable app"
ssh ec2 "sudo systemctl restart app"