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
-
Checkout code.
-
Install dependencies with
npm ci. -
Type check with
npx tsc --noEmit. -
Check formatting with
npm run format:check. -
Build with
npm run buildusing:VITE_API_URL=https://api.ark-library.com VITE_DISABLE_ADMIN=true -
Configure SSH key from
DEPLOY_KEYsecret. -
rsync --deletebuiltdist/to both frontend servers:ec2-user@FRONTEND_1_HOST:/var/www/ark-library/ ec2-user@FRONTEND_2_HOST:/var/www/ark-library/ -
Verify both servers have matching
index.htmlSHA-256 checksums. -
Remove temporary SSH key.
Required repository secrets
The workflow expects these Gitea secrets:
DEPLOY_KEYFRONTEND_1_HOSTFRONTEND_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.