Skip to content

How to deploy an application to a Quake AI VM from CI

How-to · Updated Sep 2026

Coming from another cloud?

▸AWS·Code Deploy EC2

This Quake AI feature maps to AWS’s Code Deploy EC2.

▸DigitalOcean·APP Platform CI

This Quake AI feature maps to DigitalOcean’s APP Platform CI.

▸Linode·CI CD

This Quake AI feature maps to Linode’s CI CD.

Before this

How to deploy an application to a Quake AI VM from CI

Ship application changes from GitHub Actions or GitLab CI to a Quake AI instance over SSH. Quake AI does not provide hosted CI runners. Use GitHub-hosted or GitLab.com runners by default, or run a self-hosted runner on a Quake AI VM when you need private network access.

Prerequisites
  • A running instance with SSH access
  • An SSH key registered in your project and installed on the instance
  • Repository secrets configured in GitHub or GitLab

Store CI secrets#

Add these repository secrets (names are examples; match your workflow):

SecretPurpose
SSH_PRIVATE_KEYPrivate key that matches the public key on the instance
DEPLOY_HOSTFloating IP or hostname of the target instance
DEPLOY_USERSSH user on the instance (ubuntu, debian, etc.)

For post-deploy OpenStack API checks, add application credential variables using the same OS_* shape as the OpenTofu CI/CD guide.

Pattern A: Rsync and restart over SSH#

YAML
name: Deploy to VM
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install SSH key
        run: |
          install -m 700 -d ~/.ssh
          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519
          ssh-keyscan -H "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/known_hosts
      - name: Rsync application
        run: |
          rsync -az --delete ./ "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/opt/myapp/"
      - name: Restart service
        run: |
          ssh "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" \
            'sudo systemctl restart myapp'

Pattern B: Build a container image and restart on the VM#

Build the image in CI, save it as a tarball or push to a third-party registry, then SSH to the instance to docker load or docker pull and restart the container.

See also#

Usage Guidelines

The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.

For the full policy, see Usage Guidelines.

Last validated: 08.09.2026

Was this page helpful?