name: Deploy Docusaurus to VPS on: push: branches: - main jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -H ${{ secrets.VPS_HOST }} >> ~/.ssh/known_hosts - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 22 - name: Install pnpm run: corepack enable && corepack prepare pnpm@latest --activate - name: Install dependencies run: pnpm install - name: Build Docusaurus run: pnpm run build - name: Install rsync run: sudo apt-get install -y rsync - name: Deploy to VPS env: VPS_HOST: ${{ secrets.VPS_HOST }} VPS_USER: ${{ secrets.VPS_USER }} VPS_DEPLOY_PATH: ${{ secrets.VPS_DEPLOY_PATH }} run: | rsync -avz -q --delete -e "ssh -i ~/.ssh/id_ed25519" ./ $VPS_USER@$VPS_HOST:$VPS_DEPLOY_PATH --exclude=node_module --exclude=.git - name: Install dependencies on server env: VPS_HOST: ${{ secrets.VPS_HOST }} VPS_USER: ${{ secrets.VPS_USER }} VPS_DEPLOY_PATH: ${{ secrets.VPS_DEPLOY_PATH }} run: | ssh -i ~/.ssh/id_ed25519 $VPS_USER@$VPS_HOST "source /home/debian/.nvm/nvm.sh && cd $VPS_DEPLOY_PATH && pnpm install" - name: Restart Docusaurus server env: VPS_HOST: ${{ secrets.VPS_HOST }} VPS_USER: ${{ secrets.VPS_USER }} run: | ssh -i ~/.ssh/id_ed25519 $VPS_USER@$VPS_HOST "source /home/debian/.nvm/nvm.sh && pm2 restart 8"