This section describes EMO-BON’s deployment strategy using GitHub infrastructure.
Deployment Architecture¶
EMO-BON uses GitHub’s infrastructure for:
Code hosting (repositories)
Automation (GitHub Actions)
Static site hosting (GitHub Pages)
Package registry (GitHub Container Registry)
Repository Deployment Patterns¶
Main Branch Deployment¶
Pattern: Changes to main branch trigger deployment
Used For:
Documentation sites
Profile repositories
Static content
Process:
Changes merged to main
GitHub Action triggered
Site built
Deployed to gh-pages branch
GitHub Pages serves content
Release-Based Deployment¶
Pattern: Tagged releases trigger deployment
Used For:
Versioned profiles
Stable data snapshots
Docker images
Process:
Create release tag (e.g., v1.2.3)
GitHub Action triggered
Build and test
Deploy to appropriate location
Update “latest” pointer
GitHub Pages Configuration¶
Repository Settings¶
Each repository that publishes to GitHub Pages requires:
Pages enabled in settings
Source set to gh-pages branch
Custom domain configured (if applicable)
HTTPS enforced
Build Process¶
For MyST Books:
steps:
- Install Python and Node.js
- Install MyST Markdown
- Build HTML: myst build --html
- Upload artifact
- Deploy to GitHub PagesFor RO-Crate Sites:
steps:
- Generate HTML from RO-Crate
- Copy static assets
- Upload artifact
- Deploy to GitHub PagesGitHub Container Registry¶
EMO-BON publishes Docker images to GitHub Container Registry (ghcr.io).
Image Naming¶
Pattern: ghcr.io/emo-bon/{image-name}:{tag}
Examples:
ghcr.io/emo-bon/semantic-uplifter:latestghcr.io/emo-bon/triple-store-harvester:v1.0.0
Publishing Process¶
steps:
- Build Docker image
- Tag image
- Login to ghcr.io
- Push imageUsing Published Images¶
Workflows can use published images:
jobs:
process:
container:
image: ghcr.io/emo-bon/semantic-uplifter:latestEnvironment Management¶
GitHub Environments¶
EMO-BON uses GitHub Environments for:
Production: Public-facing sites
Staging: Testing before production
Development: Active development
Environment Protection¶
Production environment requires:
Review approval
Restricted to main branch
Secrets protected
Secrets Management¶
Repository Secrets¶
Sensitive information stored as GitHub Secrets:
API tokens
Google Sheets credentials
S3 access keys
Service account credentials
Usage in Actions¶
steps:
- name: Download from Google Sheets
env:
GOOGLE_SHEETS_API_KEY: ${{ secrets.GOOGLE_SHEETS_API_KEY }}Deployment Monitoring¶
Deployment Status¶
GitHub shows deployment status in repository
Links to deployed site
Deployment history
Rollback¶
If deployment fails or has issues:
Revert commit in main branch
Re-trigger deployment
Or manually deploy previous version
Notifications¶
GitHub Actions send notifications
Deployment webhooks
Status badges in README
Multi-Repository Deployments¶
Coordinated Updates¶
Some changes require updates across multiple repositories:
Update governance-data
Trigger repo-constructor-action
New observatory repos created
Each repo runs its workflows
All sites updated
Dependency Management¶
Actions can depend on other actions
Repository dispatch triggers cross-repo workflows
Workflow artifacts shared between jobs
Continuous Deployment¶
EMO-BON follows continuous deployment principles:
Automated: No manual deployment steps
Tested: Validation before deployment
Incremental: Small, frequent changes
Reversible: Easy to roll back
Benefits¶
Faster delivery of updates
Reduced risk of errors
Better visibility of changes
Easier troubleshooting
Future Plans¶
Planned Improvements¶
Staging environment for testing
Preview deployments for pull requests
Enhanced monitoring and alerts
Automated performance testing