Deployments
Deployments are how your Odoo code gets from your Git repository to a running environment. This guide covers everything you need to know about triggering, monitoring, and managing deployments.
What is a Deployment?
A deployment is the automated process that:
- Connects to your server
- Pulls your code from Git
- Sets up the database
- Starts the Odoo application
- Configures routing and SSL
Each deployment creates a new version of your environment with the latest code from your repository.
Triggering a Deployment
Manual Deployment
- Navigate to your project in the dashboard
- Select the environment you want to deploy
- Click the button in Quick Actions:
- Deploy: For first-time deployment (environment status is "pending")
- Redeploy: For environments that have been deployed before
- Monitor the progress in real-time
No Server Assigned: If your environment doesn't have a server, the Deploy button will be disabled. Assign a server in Settings → Resources first.
Unsaved Changes
If you have unsaved changes to your environment settings:
- An orange indicator appears on the Settings tab
- The Quick Actions panel shows "Unsaved changes" warning
- Click Save Changes before deploying
Automatic Deployment
Enable auto-deploy in your environment settings to trigger deployments automatically when you push code to your Git repository.
Deployment Triggers
Deployments can be triggered by:
| Trigger | Description |
|---|---|
| Manual | User clicked Deploy or Redeploy |
| Git Push | Code pushed to the tracked branch (with auto-deploy enabled) |
| Webhook | External system triggered deployment via API |
| Scheduled | Scheduled deployment task |
| Auto Deploy | Automatic deployment from configuration change |
| Config Update | Settings changed that require redeployment |
Viewing Deployment History
To view past deployments:
- Go to your Project → Environment
- Look at the Recent Deployments section
- Or open the Deployments tab for full history
The deployment history shows:
- Status badge (success, failed, or cancelled)
- Git commit SHA (7 characters)
- Relative time (e.g., "2h ago")
- Click a deployment to view full logs
Understanding Deployment Status
| Status | Meaning |
|---|---|
| Pending | Deployment is queued and waiting to start |
| Queued | Deployment is in the queue for processing |
| Building | Docker image is being built |
| Deploying | Deployment is currently in progress |
| Success | Deployment completed successfully |
| Failed | Deployment encountered an error and stopped |
| Cancelled | Deployment was manually cancelled |
| Rolled Back | Deployment was rolled back to a previous state |
Viewing Deployment Progress
During Deployment
When a deployment starts, a progress widget appears showing:
- Overall progress with step counter (e.g., "Step 5 of 14")
- Current step name and status
- Latest message from each step
- Expandable logs for each step
Step indicators:
- Green checkmark: Step completed
- Blue spinner: Step in progress
- Red X: Step failed
- Gray circle: Step pending
Steps automatically expand when the deployment is in progress and collapse when completed. Click a deployment header to expand/collapse completed deployments.
Error Messages
If a step fails, an error banner appears at the bottom of the progress widget with the detailed error message.
After Deployment
- Open the environment details page
- Go to the Logs tab
- Select the deployment from the dropdown
- View logs grouped by deployment step
You can filter logs by level (info, warning, error) to find specific issues.
Deployment Steps
Each deployment follows these stages:
- Initializing - Preparing deployment configuration
- Connecting - Establishing connection to the server
- Creating Network - Setting up isolated Docker network
- Creating Database - Starting PostgreSQL container
- Cloning Repositories - Pulling code from Git
- Pulling Image - Downloading Odoo Docker image
- Generating Config - Creating Odoo configuration file
- Starting Container - Launching the Odoo application
- Installing Dependencies - Installing Python packages
- Initializing Database - Setting up the Odoo database
- Verifying DNS - Checking domain configuration
- Configuring Routing - Setting up HTTPS and routing
- Health Check - Verifying the application is responding
- Completed - Deployment finished
Migration Environments
For environments created from migrations (Odoo.sh, On-Premise, etc.):
Initial Restore
When you first deploy a migration environment, the backup is automatically restored.
Force Restore
After the initial restore, your data is protected. To re-restore from the original backup:
- A "Re-restore from original backup?" card appears in Quick Actions
- Click the button to open the confirmation dialog
- Review the warning about data loss
- Type "restore" to confirm
- Click Force Restore
Force restore overwrites all data added since the original migration. Use with caution.
Server Capacity Validation
Before deploying, the system validates that your environment's resources (CPU, RAM, Disk) don't exceed the server's capacity:
- If resources exceed capacity, an error banner appears
- The Deploy/Save button is disabled
- Reduce resources or choose a different server
Canceling a Deployment
If you need to stop a deployment in progress:
- Navigate to the active deployment
- Click the Cancel button
- Confirm the cancellation
Note: Canceling a deployment does not automatically clean up partial resources. You may need to redeploy or destroy the environment afterward.
Retrying a Failed Deployment
If a deployment fails due to temporary issues (network timeout, server unavailability):
- Find the failed deployment in the history
- Click the Retry button
- The system creates a new deployment with the same code
Use retry when external issues caused the failure. If your code has bugs, push fixes first and trigger a new deployment instead.
Troubleshooting
Deployment Stuck
If a deployment remains in "pending" or "deploying" status for more than 30 minutes, the system automatically marks it as failed. You can then retry or investigate the logs.
Common Errors
| Error | Solution |
|---|---|
| SSH connection timeout | Check that the server is online and accessible |
| Git clone failed | Verify repository access and credentials |
| Health check failed | Application may need more time to start, or there may be code issues |
| Resource limit exceeded | Reduce CPU, RAM, or disk allocation |
| No server assigned | Assign a server in environment settings |
What's Next?
- Environments - Set up new environments for deployment
- Backups - Protect your data before deployments
- Git Connections - Configure repository access