Skip to main content
The deployment pipeline basically defines the operations that shall be performed to properly deploy every service defined within your environment.

Overview

The deployment pipeline is composed of Deployment Stages. Each service within your environment belongs to exactly one deployment stage. Deployment stages are ordered by execution priority - a stage with a lower order is executed before a stage with a higher order. This allows you to control the deployment sequence and manage dependencies between services. Example Deployment Pipeline

Pipeline Execution

Build Phase

During the build phase:
  • Qovery CI downloads the repositories and generates container images
  • Maximum parallelism: 7 builds can run simultaneously
  • Build resources: Each build uses 4 CPU and 4 GB memory by default
  • Image storage: Built images are pushed to the mirroring registry
  • Pre-built images: Applications deployed from external CI/CD can bypass this step by using pre-built images from container registries
Auto-deploy Build Process

Deployment Phase

During the deployment phase:
  • Qovery engine manages deployment via Helm charts
  • Maximum parallelism: 7 deployments can run simultaneously
  • Image retrieval: Images are pulled from the mirroring registry
  • Chart generation: Custom Helm charts are generated unless you provide your own

Default Pipeline Structure

When you create a new environment, Qovery automatically creates four default deployment stages: Default Deployment Pipeline
1

0.DEFAULT DATABASE

All database services are deployed in this stage
2

1.DEFAULT JOB

All job services (lifecycle jobs and cron jobs) are deployed in this stage
3

2.DEFAULT CONTAINER

All container image deployments are deployed in this stage
4

3.DEFAULT APPLICATION

All Git repository-based applications are deployed in this stage
You can modify these stages or create custom stages through your environment configuration.

Performance Optimization

To optimize your deployment pipeline performance, consider the following strategies:

Dockerfile Optimization

Review and optimize your Dockerfile structure following Docker best practices:
  • Use specific base image tags instead of latest
  • Order Dockerfile commands from least to most frequently changed
  • Leverage Docker layer caching
  • Use multi-stage builds to reduce image size
  • Copy dependency files separately to cache installations

Maximize Parallelism

When services have no dependencies between them, place them in the same deployment stage to deploy them in parallel. This can significantly reduce overall deployment time.

Multi-Stage Build Caching

If you have multiple applications that share the same base image or dependencies, deploy dependent applications to later stages. This allows Qovery to reuse already-built images and cache layers.

Avoid Environment-Specific Docker ARGs

Don’t use environment-specific Docker ARG values in your Dockerfiles. This causes Qovery to rebuild images for each environment even when the code hasn’t changed. Instead, use environment variables that are injected at runtime.

Managing Deployment Stages

You can customize your deployment pipeline by creating, modifying, or removing deployment stages from your environment configuration section.

Next Steps