name: Deploy to VPS on: push: branches: [master] jobs: deploy: runs-on: ubuntu-latest # Use a label matching your runner, e.g., ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v4 with: fetch-depth: 0 # Full history for git operations - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -p ${{ secrets.DEPLOY_PORT }} -H ${{ secrets.DEPLOY_SERVER }} >> ~/.ssh/known_hosts eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 - name: Deploy via Git Pull and Rsync run: | ssh -p ${{ secrets.DEPLOY_PORT }} ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_SERVER }} " cd ${{ secrets.DEPLOY_PATH }} && git fetch origin && git reset --hard origin/master " - name: Restart docker container run: | ssh -p ${{ secrets.DEPLOY_PORT }} ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_SERVER }} " cd ${{ secrets.DEPLOY_PATH }} && docker compose down && docker compose up --build -d "