deployment
Deployment Guide
Deployment Environments
| Environment | URL | Trigger |
|---|---|---|
| Production | https://openstandardagents.org | Manual deploy from main |
| Staging | ossa-staging.review.blueflyagents.com | Release Main MRs |
| Review | mr-{ID}.openstandardagents.orb.local | Feature Release MRs |
GitLab Pages (Production)
Production deploys to GitLab Pages when manually triggered on main branch.
How It Works
- Merge to
mainbranch - Pipeline runs build jobs
- Click "Deploy" on
pagesjob (manual) - Site deploys to https://openstandardagents.org
The Pages Job
pages: stage: deploy needs: - build:website script: - cp -r website-build public artifacts: paths: - public rules: - if: $CI_COMMIT_BRANCH == "main" when: manual
Review Apps (Local K8s)
Review apps deploy to local OrbStack Kubernetes cluster for preview.
Prerequisites
- OrbStack with Kubernetes enabled
- nginx-ingress controller installed
- KUBECONFIG_LOCAL CI variable set
Setup
# 1. Install OrbStack (https://orbstack.dev) # 2. Enable Kubernetes in OrbStack settings # 3. Get kubeconfig kubectl config view --raw | base64 | pbcopy # 4. Add to GitLab CI/CD Variables: # Key: KUBECONFIG_LOCAL # Value: (paste from clipboard) # Protected: Yes # Masked: Yes
Review App URLs
- Pattern:
mr-{MR_ID}.openstandardagents.orb.local - Example:
http://mr-264.openstandardagents.orb.local
Cleanup
Review apps auto-stop after 1 week. Manual cleanup:
- GitLab UI: Settings CI/CD Environments
- Or run
review:stopjob manually
Docker Build
# Build image docker build -t openstandardagents.org:latest . # Run locally docker run -p 3000:3000 openstandardagents.org:latest
Multi-stage Dockerfile
The project uses a multi-stage build:
- deps - Install dependencies
- builder - Build Next.js site
- runner - Production runtime (Alpine)
Auto-Sync System
The website automatically syncs content from multiple sources.
Data Sources
| Source | Schedule | Command |
|---|---|---|
| OSSA Spec | Daily midnight | npm run fetch-spec |
| Examples | Daily 4 AM | npm run fetch-examples |
| Versions | On release | npm run fetch-versions |
| Wiki | Daily 4 AM | npm run sync-wiki |
Sync Job Triggers
- Scheduled - Every 6 hours via pipeline schedule
- Push to main/release - On branch updates
- Manual - Run
sync:autojob manually
What Gets Synced
website/public/examples.json- 100+ OSSA exampleswebsite/lib/versions.json- Version metadatawebsite/lib/release-highlights.json- Release noteswebsite/content/spec/- OSSA specification schema
Sync Flow
npm registry @bluefly/ossa package
GitLab API Wiki content
GitHub repos Example agents
sync:auto CI job runs fetch scripts
CI Job
Changes detected?
Creates MR Auto-merge enabled
with changes Labels: workflow::auto-merge
Pipeline runs Build + tests
MR auto-merges
Manual Deployment
Deploy from Local
# 1. Build locally cd website npm run build # 2. Export static site npm run export # if configured # 3. Copy to server rsync -avz out/ user@server:/var/www/ossa/
Force Sync
# Run all sync scripts cd website npm run fetch-spec npm run fetch-examples npm run fetch-versions npm run fetch-highlights npm run sync-version npm run fix-versions # Commit and push git add . git commit -m "chore: manual sync" git push
Environment Variables
Build Time
| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_SITE_URL | Production URL | https://openstandardagents.org |
NEXT_PUBLIC_GA_ID | Google Analytics ID | - |
CI/CD Variables
| Variable | Description | Required |
|---|---|---|
CI_JOB_TOKEN | Auto-provided by GitLab | Yes |
KUBECONFIG_LOCAL | K8s config for review apps | For review apps |
GITLAB_TOKEN | API token for sync operations | For auto-sync |
Monitoring
Health Checks
- GitLab Pages status: https://status.gitlab.com
- Pipeline status: Check CI/CD Pipelines
Logs
- Build logs: CI/CD Jobs Select job
- Pages logs: Deploy Pages View logs
Performance
- Lighthouse CI runs on every MR
- Target scores: Performance > 90, Accessibility > 90