Files
Arkie-Library-Frontend/docs/deploy.md
TerryM f59d1e8e2a
All checks were successful
Deploy to Frontend Servers / deploy (push) Successful in 55s
docs: add frontend onboarding docs
2026-05-16 18:14:55 +08:00

1.5 KiB

Deployment

Production frontend deploy is handled by Gitea Actions in .gitea/workflows/deploy.yml.

Trigger

A push to main triggers the deploy workflow.

on:
  push:
    branches:
      - main

CI/deploy steps

  1. Checkout code.

  2. Install dependencies with npm ci.

  3. Type check with npx tsc --noEmit.

  4. Check formatting with npm run format:check.

  5. Build with npm run build using:

    VITE_API_URL=https://api.ark-library.com
    VITE_DISABLE_ADMIN=true
    
  6. Configure SSH key from DEPLOY_KEY secret.

  7. rsync --delete built dist/ to both frontend servers:

    ec2-user@FRONTEND_1_HOST:/var/www/ark-library/
    ec2-user@FRONTEND_2_HOST:/var/www/ark-library/
    
  8. Verify both servers have matching index.html SHA-256 checksums.

  9. Remove temporary SSH key.

Required repository secrets

The workflow expects these Gitea secrets:

  • DEPLOY_KEY
  • FRONTEND_1_HOST
  • FRONTEND_2_HOST

Common failures

TypeScript fails on unused imports

This repo uses noUnusedLocals and noUnusedParameters. Remove unused imports/variables and rerun:

npx tsc --noEmit

Format check fails

Run:

npm run format
npm run format:check

Then commit the formatting changes.

Build uses wrong API

Check VITE_API_URL in .gitea/workflows/deploy.yml or local .env.

One frontend server differs from the other

The workflow compares remote index.html checksums. If it fails, inspect the rsync step and both FRONTEND_*_HOST values.