CI/CD & Releases
import { Aside } from ‘@astrojs/starlight/components’;
Orimora uses GitHub Actions for continuous integration and Coolify webhooks for continuous deployment. Releases follow Semantic Versioning.
Branching Model
Section titled “Branching Model”main ← production-ready, tagged releases ↑dev ← integration branch, all feature work merges here first ↑feature/*, fix/*, chore/* ← short-lived branches from dev| Branch | Purpose | Merges into |
|---|---|---|
main | Stable releases, deployed to production | — |
dev | Integration and testing | main (via PR) |
feature/<name> | New features | dev |
fix/<name> | Bug fixes | dev (or main for hotfixes) |
chore/<name> | Tooling, dependency updates | dev |
hotfix/<name> | Critical production fixes | main directly |
CI Pipeline (.github/workflows/ci.yml)
Section titled “CI Pipeline (.github/workflows/ci.yml)”Runs on every push to main/dev and on every PR targeting those branches.
| Job | What it does |
|---|---|
| Lint & Typecheck | oxlint, prettier --check, svelte-check |
| Unit Tests | vitest run with PostgreSQL + Redis services |
| Production Build | vite build — verifies the app compiles |
| Docker Build | Builds the Docker image (dry run, no push) |
| Security Audit | yarn audit --level moderate |
All jobs must pass before a PR can be merged.
Release Pipeline (.github/workflows/release.yml)
Section titled “Release Pipeline (.github/workflows/release.yml)”Triggered by pushing a version tag (v*).
| Step | What it does |
|---|---|
| Build Docker image | Multi-arch (linux/amd64 + linux/arm64) |
| Push to GHCR | ghcr.io/defcon1702/orimora:<version> + :latest |
| Create GitHub Release | Auto-generated release notes |
Release Process
Section titled “Release Process”# 1. On dev branch, update versionyarn version --new-version 0.2.0
# 2. Update CHANGELOG.md
# 3. Create PR: dev → maingh pr create --title "Release v0.2.0" --body "..."
# 4. After merge, tag and pushgit checkout main && git pullgit tag v0.2.0git push origin v0.2.0The tag push triggers the release workflow automatically.
Versioning Scheme
Section titled “Versioning Scheme”Orimora follows Semantic Versioning (vMAJOR.MINOR.PATCH):
- MAJOR — breaking API or schema changes
- MINOR — new features, backwards-compatible
- PATCH — bug fixes
Pre-release versions use suffixes: v0.1.0-beta.1, v0.1.0-rc.1.
Coolify Auto-Deploy
Section titled “Coolify Auto-Deploy”Coolify listens for GitHub webhooks and triggers a build+deploy when:
- A push lands on the configured branch (
main) - The changed files match the Watch Paths (if configured)
No additional CI/CD configuration is needed for deployment — Coolify handles the Docker build and rolling restart.
Commit Conventions
Section titled “Commit Conventions”All commits follow Conventional Commits:
feat: add tag filtering to sidebarfix: prevent duplicate document creationrefactor: extract search into dedicated servicetest: add permission check unit testsdocs: update deployment guidechore: upgrade drizzle-ormBreaking changes use ! and a BREAKING CHANGE: footer:
feat!: change document API response format
BREAKING CHANGE: documents.list now returns paginated wrapper