إنتقل إلى المحتوى الرئيسي

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