Skip to content

New: AI agent integration via Model Context Protocol (MCP).Learn more

Continuous Delivery

Evolve ships with GitHub Actions pipelines that deliver the platform from day one. When you fork the repository, the workflows come along — this page describes what each one does so you can adapt them to your own environments.

The continuous delivery setup automates the build, test, and deployment process across multiple cloud platforms (AWS, GCP, and Azure).

  1. Monorepo Structure: the codebase is organized as a monorepo, which allows for easier management of dependencies and shared code across different parts of the platform.

  2. pnpm and Turborepo: pnpm is the package manager and Turborepo optimizes builds across the workspace.

  3. MACH Composer: manages and deploys the microservices architecture.

  4. Multi-Cloud Support: the pipelines support deployments to AWS, GCP, and Azure, as well as specialized platforms like Vercel for frontend hosting.

The main CI/CD pipeline (ci-cd.yaml) includes the following key steps:

  1. Validation: code checks (validate-code.yaml), dependency review (validate-dependencies.yaml), and pull-request standards (validate-pull-request.yaml).
  2. Testing: runs unit tests and reports coverage; Storybook is validated through validate-storybook.yaml and validate-storybook-vitest.yaml.
  3. MACH Composer Validation: validate-mach-composer-config.yaml checks the configurations for the different cloud environments.
  4. Service-Specific Builds: the service-common-*.yaml and service-site.yaml workflows build individual services when their files change.

deploy-test.yaml deploys the MACH Composer configurations to the test environment; deploy-production.yaml promotes to production. The monolith variant (deploy-monolith.yaml) covers single-container deployments.

A separate workflow (deploy-storybook.yaml) handles the deployment of Storybook to ensure the component library is always up-to-date.

  1. Caching: pnpm, Turborepo, and Terraform plugin caches speed up builds.
  2. Conditional Job Execution: jobs only run when relevant files have changed, reducing unnecessary builds.
  3. Parallel Execution: where possible, jobs run in parallel to minimize overall pipeline duration.
  1. CODEOWNERS: a CODEOWNERS file ensures the right teams review changes to critical parts of the codebase.
  2. Secrets Management: sensitive information is stored as GitHub Secrets and accessed securely within workflows.
  3. Pull Request Validation: automated checks (validate-pull-request.yaml) ensure pull requests meet standards before merging.

For more detailed information on optimizing deployments as your project grows, please refer to the Optimizing Deployments guide.