Deployments & Sync
Full DevOps control center — Gitea repositories, GitHub mirrors, Cloudflare Pages deployments, and pull requests
Overview
The Deployments & Sync page (/admin/deployments) is a unified DevOps hub providing full control over the Arcturus-Prime deployment pipeline: Gitea source repos, GitHub push mirrors, Cloudflare Pages builds, and pull requests.
Tabs
Deployments
Shows all recent Cloudflare Pages deployments as status-colored cards. Each card displays branch, commit hash, commit message, environment (production/preview), and relative time.
Features:
- Filter by production/preview environment
- Search by branch name, commit hash, or message
- Click any card for a detail modal with build timeline (queued → initialize → build → deploy stages with durations)
- Direct links: “Site” for production, “Preview” for preview deploys (appends
?previewfor admin access) - Deploy trigger button (calls CF Pages deploy hook)
- Auto-refreshes every 30 seconds
API: GET /api/dashboard/cf-pages?project=Arcturus-Prime&limit=40 and POST /api/dashboard/cf-pages for deploy trigger.
Repositories
Lists all Gitea organization repos with full CRUD operations.
Features:
- Search across repo names, descriptions, languages
- Create new repos (name, description, visibility, auto-init with README)
- Edit repos (description, default branch, public/private toggle)
- Delete repos (with confirmation prompt)
- Each card shows: visibility tag, language, default branch, stars, forks, last updated
- Direct links to Gitea and GitHub
API: GET /api/admin/gitea-repos?org=InovinLabs&limit=50 and POST /api/admin/gitea-repos with actions: create, update, delete.
Mirrors & Sync
Shows all Gitea → GitHub push mirror configurations with sync controls.
Features:
- Visual pipeline diagram: Gitea → GitHub → CF Pages
- Stats: total mirrors, healthy count, error count
- Per-repo sync button
- Bulk “Sync All” button
- Health status badges (Healthy/Error/No mirror)
- Auto-sync indicator for repos with sync-on-commit enabled
- Error messages displayed inline
API: GET /api/admin/github-sync and POST /api/admin/github-sync with optional { repo } body.
Pull Requests
Lists open and closed pull requests from the Arcturus-Prime Gitea repo.
Features:
- Filter: Open / Closed / All
- Search by title, branch, author
- Click for detail modal with: branch info, author, state, description, changed files list with +/- counts
- Merge and Close actions (with confirmation)
- Direct link to Gitea PR page
API: GET /api/admin/gitea-pr?repo=InovinLabs/Arcturus-Prime&state=open&head= and POST /api/admin/gitea-pr with actions: merge, close, files.
Environment Variables
| Variable | Purpose |
|---|---|
CF_API_TOKEN | Cloudflare API bearer token |
CF_ACCOUNT_ID | Cloudflare account ID |
CF_DEPLOY_HOOK_URL | Cloudflare Pages deploy hook URL |
GITEA_API_TOKEN | Gitea API access token |
Demo Mode
When demo mode is active, all write actions are disabled: deploy trigger, sync, merge, close, create, edit, and delete buttons are greyed out with tooltips.
Technical Notes
- Uses
<style is:global>because content is dynamically rendered by JavaScript - All script variables use
var(notconst) to prevent View Transitions redeclaration errors - Tabs lazy-load: each tab fetches its API only on first visit
- Auto-refresh interval is 30 seconds (deployments and mirrors tabs only)
- The
astro:before-preparationevent cleans up the refresh interval on navigation
Related
- CSP & Security Headers — CSP rules for API domains
- Content Management — Content pipeline (separate page)