name: Deploy to VPS on: push: branches: - main jobs: build-and-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 'latest' - name: Install & Build run: | npm ci npm run build - name: Ensure remote directory exists uses: appleboy/ssh-action@master with: host: ${{ secrets.VPS_HOST }} username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_SSH_KEY }} port: ${{ secrets.VPS_PORT }} script: | sudo mkdir -p ${{ secrets.VPS_DESTINATION }} sudo chown -R ${{ secrets.VPS_USER }} ${{ secrets.VPS_DESTINATION }} - name: Clean remote directory uses: appleboy/ssh-action@master with: host: ${{ secrets.VPS_HOST }} username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_SSH_KEY }} port: ${{ secrets.VPS_PORT }} script: | rm -rf ${{ secrets.VPS_DESTINATION }}/* - name: Deploy build via SCP uses: appleboy/scp-action@master with: host: ${{ secrets.VPS_HOST }} username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_SSH_KEY }} port: ${{ secrets.VPS_PORT }} source: "dist/*" target: ${{ secrets.VPS_DESTINATION }} - name: Restart Nginx (Service) uses: appleboy/ssh-action@master with: host: ${{ secrets.VPS_HOST }} username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_SSH_KEY }} port: ${{ secrets.VPS_PORT }} script: | sudo systemctl restart nginx