name: Deploy static site on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install dependencies run: pip install pyyaml - name: Build site run: python build.py - name: Install rsync run: sudo apt-get update && sudo apt-get install -y rsync - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan -p ${{ secrets.DEPLOY_PORT }} ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts - name: Test SSH connection run: | ssh -i ~/.ssh/id_ed25519 \ -p ${{ secrets.DEPLOY_PORT }} \ -o StrictHostKeyChecking=yes \ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ "echo SSH connection successful" - name: Ensure remote directory exists run: | ssh -i ~/.ssh/id_ed25519 \ -p ${{ secrets.DEPLOY_PORT }} \ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ "mkdir -p ${{ secrets.DEPLOY_PATH }}" - name: Deploy via rsync run: | rsync -avz --delete \ -e "ssh -i ~/.ssh/id_ed25519 -p ${{ secrets.DEPLOY_PORT }} -o UpdateHostKeys=no" \ public/ \ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_PATH }}