Skip to content
50 changes: 50 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Deploy to EC2

on:
push:
branches:
- deployment

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts

- name: Test SSH connection
run: |
ssh -i ~/.ssh/id_rsa ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "echo 'Connection successful'"

- name: Deploy Backend
run: |
ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "
cd ~/business-management/backend &&
git fetch origin deployment &&
git reset --hard origin/deployment &&
npm install &&
sudo systemctl restart node-service
"

- name: Deploy Frontend
run: |
ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "
export NVM_DIR=\"\$HOME/.nvm\" &&
[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" &&
cd ~/business-management/frontend &&
git fetch origin deployment &&
git reset --hard origin/deployment &&
npm install &&
npm run build &&
sudo rm -rf /var/www/html/* &&
sudo cp -r .next public package.json /var/www/html/ &&
sudo chown -R www-data:www-data /var/www/html
"