Files
nodarium/.gitea/workflows/deploy.yaml
Max Richter c2dc538c05
All checks were successful
🏗️ Build and Deploy / setup (push) Successful in 1m11s
🏗️ Build and Deploy / lint (push) Successful in 36s
🏗️ Build and Deploy / format (push) Successful in 40s
🏗️ Build and Deploy / typecheck (push) Successful in 37s
🏗️ Build and Deploy / build_and_deploy (push) Successful in 1m51s
fix(ci): make deploy step work
2026-02-02 17:39:17 +01:00

111 lines
3.3 KiB
YAML

name: 🏗️ Build and Deploy
on:
push:
branches: ["*"]
env:
PNPM_CACHE_FOLDER: .pnpm-store
jobs:
setup:
runs-on: ubuntu-latest
container: jimfx/nodes:latest
steps:
- name: 📑 Checkout Code
uses: actions/checkout@v4
- name: 💾 Setup pnpm Cache
uses: actions/cache@v4
with:
path: ${{ env.PNPM_CACHE_FOLDER }}
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: 📦 Install Dependencies
run: pnpm install --frozen-lockfile --store-dir ${{ env.PNPM_CACHE_FOLDER }}
- name: 🗜️ Tar Workspace
run: tar -cf workspace.tar --exclude="${{ env.PNPM_CACHE_FOLDER }}" .
- name: 📤 Upload Workspace
uses: actions/upload-artifact@v3
with:
name: workspace-deps
path: workspace.tar
compression-level: 0
lint:
needs: setup
runs-on: ubuntu-latest
container: jimfx/nodes:latest
steps:
- name: 📥 Download Workspace
uses: actions/download-artifact@v3
with:
name: workspace-deps
- name: 🔓 Untar Workspace
run: tar -xf workspace.tar && rm workspace.tar
- name: 🧹 Run Linter
run: pnpm lint
format:
needs: setup
runs-on: ubuntu-latest
container: jimfx/nodes:latest
steps:
- name: 📥 Download Workspace
uses: actions/download-artifact@v3
with:
name: workspace-deps
- name: 🔓 Untar Workspace
run: tar -xf workspace.tar && rm workspace.tar
- name: 🎨 Check Formatting
run: pnpm format:check
typecheck:
needs: setup
runs-on: ubuntu-latest
container: jimfx/nodes:latest
steps:
- name: 📥 Download Workspace
uses: actions/download-artifact@v3
with:
name: workspace-deps
- name: 🔓 Untar Workspace
run: tar -xf workspace.tar && rm workspace.tar
- name: 🧬 Type Check
run: pnpm check
build_and_deploy:
if: github.ref == 'refs/heads/main'
needs: [lint, format, typecheck]
runs-on: ubuntu-latest
container: jimfx/nodes:latest
steps:
- name: 📥 Download Workspace
uses: actions/download-artifact@v3
with:
name: workspace-deps
- name: 🔓 Untar Workspace
run: tar -xf workspace.tar && rm workspace.tar
- name: 🛠️ Build Site
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 }}