Update max disconnection duration in server configuration to 2 minute… #89
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy to server | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20.x' | |
| - name: Install dependecies and build | |
| run: | | |
| npm install | |
| npm run build | |
| - name: Setup SSH | |
| uses: webfactory/ssh-agent@v0.8.0 | |
| with: | |
| ssh-private-key: ${{ secrets.SSH_DEPLOY_PRIVATE_KEY }} | |
| - name: Add SERVER to known hosts | |
| run: | | |
| mkdir -p ~/.ssh | |
| ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts | |
| - name: Deploy code to Server | |
| env: | |
| SERVER_HOST: ${{ secrets.SERVER_HOST }} | |
| SERVER_USER: ${{ secrets.SERVER_USER }} | |
| DEPLOY_PATH: ${{ secrets.DEPLOY_PATH }} | |
| SERVICE_NAME: ${{ secrets.SERVICE_NAME }} | |
| run: | | |
| ssh ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} ' | |
| # First, change ownership of existing files | |
| sudo chown -R ${{ secrets.SERVER_USER }}:${{ secrets.SERVER_USER }} ${{ secrets.DEPLOY_PATH }} | |
| # Stop the service | |
| sudo systemctl stop ${{ secrets.SERVICE_NAME }} | |
| # Backup existing code | |
| timestamp=$(date +%Y%m%d_%H%M%S) | |
| if [ -d "${{ secrets.DEPLOY_PATH }}"]; then | |
| sudo mv ${{ secrets.DEPLOY_PATH }} "${{ secrets.DEPLOY_PATH }}_backup_${timestamp}" | |
| fi | |
| # Create and set permissions for new directory | |
| sudo mkdir -p ${{ secrets.DEPLOY_PATH }} | |
| sudo chown ${{ secrets.SERVER_USER }}:${{ secrets.SERVER_USER }} ${{ secrets.DEPLOY_PATH }} | |
| ' | |
| # Copy new code to Server | |
| scp -r dist/* ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:${{ secrets.DEPLOY_PATH }}/ | |
| ssh ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} ' | |
| cd ${{ secrets.DEPLOY_PATH }} | |
| # Install production dependencies on server | |
| echo "Installing production dependencies..." | |
| npm install --production | |
| # Set correct permissions | |
| sudo chown -R ${{ secrets.SERVER_USER }}:${{ secrets.SERVER_USER }} ${{ secrets.DEPLOY_PATH }} | |
| sudo chmod -R 755 ${{ secrets.DEPLOY_PATH }} | |
| # Restart the service | |
| echo "Restarting service..." | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable ${{ secrets.SERVICE_NAME }} | |
| sudo systemctl restart ${{ secrets.SERVICE_NAME }} | |
| # Check service status and exit if failed | |
| if ! sudo systemctl is-active --quiet ${{ secrets.SERVICE_NAME }}; then | |
| echo "Service failed to start. Status:" | |
| sudo systemctl status ${{ secrets.SERVICE_NAME }} | |
| exit 1 | |
| fi | |
| echo "Service status:" | |
| sudo systemctl status ${{ secrets.SERVICE_NAME }} | |
| ' |