Skip to main content
Deploy your applications with GitHub Actions using the Qovery CLI.

Prerequisites

Before you can deploy your application with GitHub Actions, you need to:
  1. Install the Qovery CLI
  2. Generate a Qovery API token (via CLI or Console)
  3. Set the environment variable QOVERY_CLI_ACCESS_TOKEN with your API token
  4. Disable Qovery Auto Deployment on the services you want to deploy manually

Deploy a Container Application

Here is an example of a GitHub Actions workflow file (.github/workflows/deploy-with-qovery.yml) to deploy a container application:
name: Deploy with Qovery

on:
  release:
    types: [published]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Login to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          push: true
          tags: myorg/myapp:${{ github.sha }}

      - name: Deploy with Qovery
        env:
          QOVERY_CLI_ACCESS_TOKEN: ${{ secrets.QOVERY_CLI_ACCESS_TOKEN }}
        run: |
          # Install Qovery CLI
          curl -s https://get.qovery.com | bash

          # Deploy application
          qovery application deploy \
            --organization "My Organization" \
            --project "My Project" \
            --environment "Production" \
            --application "myapp" \
            --commit-id ${{ github.sha }} \
            --watch
This workflow assumes you have:
  • A container registry connected to Qovery
  • An existing container application on Qovery
  • Set the QOVERY_CLI_ACCESS_TOKEN secret in your GitHub repository

Deploy a Single Application

Use the Qovery CLI to deploy a single application:
qovery application deploy \
  --organization "My Organization" \
  --project "My Project" \
  --environment "Production" \
  --application "myapp" \
  --commit-id <commit-id> \
  --watch

Deploy Multiple Applications

Different Applications with Different Commits

qovery application deploy \
  --organization "My Organization" \
  --project "My Project" \
  --environment "Production" \
  --application "app1" \
  --commit-id <commit-id-1> \
  --watch

qovery application deploy \
  --organization "My Organization" \
  --project "My Project" \
  --environment "Production" \
  --application "app2" \
  --commit-id <commit-id-2> \
  --watch

Multiple Applications with the Same Commit (Monorepo)

qovery application deploy \
  --organization "My Organization" \
  --project "My Project" \
  --environment "Production" \
  --applications "app1,app2,app3" \
  --commit-id <commit-id> \
  --watch

Manage Preview Environments

Clone an Environment

qovery environment clone \
  --organization "My Organization" \
  --project "My Project" \
  --environment "Production" \
  --new-environment-name "preview-pr-123" \
  --cluster "my-cluster"

Update Application Branch in Cloned Environment

qovery application update \
  --organization "My Organization" \
  --project "My Project" \
  --environment "preview-pr-123" \
  --application "myapp" \
  --branch "feature-branch"

Deploy the Preview Environment

qovery application deploy \
  --organization "My Organization" \
  --project "My Project" \
  --environment "preview-pr-123" \
  --application "myapp" \
  --commit-id <commit-id> \
  --watch

Delete Preview Environment

qovery environment delete \
  --organization "My Organization" \
  --project "My Project" \
  --environment "preview-pr-123" \
  --yes

Integration with Terraform

If you’re using Terraform to manage your infrastructure, you can integrate it with your CI/CD pipeline. See the Terraform Provider documentation for more information.

Next Steps