Skip to main content

DevOps & CI/CD

Ever Teams uses GitHub Actions for continuous integration and continuous deployment, with Docker for containerized builds and deployments.

GitHub Actions Workflows​

The project includes 34 GitHub Actions workflows in .github/workflows/:

Web Application​

WorkflowTriggerDescription
web.before-merge.ymlPRLint, type-check, and build validation
deploy-vercel-dev.ymlPush to developDeploy to Vercel (dev)
deploy-vercel-stage.ymlPush to stageDeploy to Vercel (staging)
deploy-vercel-prod.ymlPush to mainDeploy to Vercel (production)
deploy-do-dev/stage/prod.ymlPush to branchesDeploy to DigitalOcean
deploy-render-dev.ymlPush to developDeploy to Render

Docker​

WorkflowTriggerDescription
docker-build-publish-dev.ymlPush to developBuild and push Docker image (dev tag)
docker-build-publish-stage.ymlPush to stageBuild and push Docker image (stage tag)
docker-build-publish-prod.ymlPush to mainBuild and push Docker image (latest tag)

Desktop​

WorkflowTriggerDescription
desktop.apps.ymlRelease/manualBuild desktop app for all platforms
desktop-server-web.apps.ymlRelease/manualBuild server-web Electron app
desktop-server-api.apps.ymlRelease/manualBuild server-api Electron app

Mobile​

WorkflowTriggerDescription
mobile.apps.ios.ymlReleaseBuild iOS app
mobile.apps.android.ymlReleaseBuild Android app
mobile.apps.stage.ios.ymlPush to stageBuild iOS staging app
mobile.apps.stage.android.ymlPush to stageBuild Android staging app
mobile.before-merge.ymlPRMobile build validation
mobile.dev/stage/prod.ymlEnvironment branchesMobile CI for environments

Extensions​

WorkflowTriggerDescription
extensions.dev.ymlPush to developBuild browser extension (dev)
extensions.prod.ymlPush to mainBuild and publish extension

Releases​

WorkflowTriggerDescription
release.dev.ymlPush to developDevelopment release
release.stage.ymlPush to stageStaging release
release.prod.ymlPush to mainProduction release
release.apps.ymlManual/tagFull app release

Quality​

WorkflowTriggerDescription
typos.ymlPRCheck for typos in code
knip-cleanup.ymlManualFind unused code and dependencies

Docker Build Pipeline​

Dockerfile​

The web app Dockerfile is at .deploy/web/Dockerfile:

Docker Compose Configurations​

FileUse Case
docker-compose.ymlFull production stack (API + webapp + infra)
docker-compose.demo.ymlQuick demo with pre-built images
docker-compose.dev.ymlDevelopment with hot-reload
docker-compose.build.ymlBuild everything from source
docker-compose.infra.ymlInfrastructure services only

Container Registry​

Images are published to:

  • GitHub Container Registry: ghcr.io/ever-co/
  • Docker Hub: everco/

Release Process​

Branching Strategy​

BranchPurposeDeploys To
mainProduction releasesProduction
stageStaging / QAStaging
developActive developmentDevelopment
feature/*Feature branchesPR previews

Semantic Versioning​

Releases follow Semantic Versioning with Conventional Commits:

  • feat: → minor version bump
  • fix: → patch version bump
  • BREAKING CHANGE: → major version bump

Tools: semantic-release, commitizen, commitlint

Environment Management​

EnvironmentBranchAPIURL
Productionmainapi.ever.teamapp.ever.team
Stagingstageapistage.gauzy.costage.ever.team
Developmentdevelopapidev.ever.teamdev deployment

CI/CD Infrastructure​

Self-Hosted Runners​

Ever Teams uses both GitHub-hosted and self-hosted runners:

  • GitHub-hosted: Linux (Ubuntu) for web and Docker builds
  • Self-hosted: Windows x64 and ARM64 for Electron desktop builds
  • macOS: For iOS and macOS desktop builds

Caching​

Cache TypeProvider
NX CacheNX Cloud
Yarn dependenciesactions/cache
Docker layersDocker BuildKit cache
Next.js build.next/cache