name: Deploy to GitHub Pages on: push: branches: "main" jobs: build_site: runs-on: ubuntu-latest container: jimfx/nodes:latest steps: - name: Checkout uses: actions/checkout@v4 # Cache Rust compilation (cargo + target) - name: Cache Rust build uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- # Prepare pnpm cache (store path) - name: Get pnpm store path id: pnpm-cache run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Cache pnpm store uses: actions/cache@v4 with: path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm- - name: Install dependencies run: pnpm install --frozen-lockfile - name: build run: pnpm run build:deploy - name: 🔑 Configure rclone run: | echo "$SSH_PRIVATE_KEY" > /tmp/id_rsa chmod 600 /tmp/id_rsa mkdir -p ~/.config/rclone echo -e "[sftp-remote]\ntype = sftp\nhost = ${SSH_HOST}\nuser = ${SSH_USER}\nport = ${SSH_PORT}\nkey_file = /tmp/id_rsa" > ~/.config/rclone/rclone.conf env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} SSH_HOST: ${{ vars.SSH_HOST }} SSH_PORT: ${{ vars.SSH_PORT }} SSH_USER: ${{ vars.SSH_USER }} - name: 🚀 Deploy Changed Files via rclone run: | echo "Uploading the rest" rclone sync --update -v --progress --exclude _astro/** --stats 2s --stats-one-line ./app/build/ sftp-remote:${REMOTE_DIR} --transfers 4 env: REMOTE_DIR: ${{ vars.REMOTE_DIR }}