diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..9d171d8e --- /dev/null +++ b/.github/workflows/deploy.yml @@ -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 + " \ No newline at end of file