docs-mintlify/admin/deployment/continuous-deployment.mdx
Each Cube deployment is configured to use one of the following deploy modes:
cubejs-cli deploy command. The
production branch is never built automatically; it only changes when
somebody explicitly runs cubejs-cli deploy.You can change the deploy mode at any time on the Build & Deploy tab of the Settings screen.
Independently of the deploy mode, you can connect a GitHub repository to the deployment. Non-production branches pushed to GitHub are then auto-synced into Cube Cloud and reflected in their staging environments. The production branch follows the deploy mode: it auto-deploys in Git mode and stays manual in CLI mode.
Continuous deployment works by connecting a Git repository to a Cube Cloud deployment and keeping the two in sync.
First, go to the Build & Deploy tab on the Settings screen and select Deploy with Git under Deploy with. From the same screen you can pick the production branch, connect a Git repository, and copy the commands that set up Cube Cloud as a Git remote:
<Frame> </Frame>Click Generate Git credentials to obtain Git credentials. The instructions to set up Cube Cloud as a Git remote are also available on the same screen:
git config credential.helper store
git remote add cubecloud <YOUR-CUBE-CLOUD-GIT-URL>
git push cubecloud master
You can connect a GitHub repository to your deployment by clicking the Connect to GitHub button on the Build & Deploy tab of the Settings screen and selecting your repository. This works with both the Deploy with Git and Deploy with CLI deploy modes.
<Warning>If your organization uses SAML SSO for GitHub authentication, make sure to start an active SAML session prior to connecting to your GitHub account from Cube.
</Warning>What happens after connecting depends on the deploy mode:
master by default) on every push, and also
sync non-production branches into their staging environments.When a deployment is configured to deploy with CLI, production builds are only triggered when you (or your CI/CD pipeline) push the project to Cube Cloud by running:
npx cubejs-cli deploy --token <TOKEN>
You can find your Deploy Token, along with copy-paste instructions and an example CI/CD pipeline config (such as a GitHub Actions workflow), on the Build & Deploy tab of the Settings screen. The same screen lets you regenerate the token if it needs to be rotated.
<Frame> </Frame> <Note>Cube Cloud still maintains an internal Git repository for the deployment so
that features such as development mode and branching can work.
This internal repository is overwritten on every successful CLI deploy — only
the contents of your most recent cubejs-cli deploy invocation are used to
build and run production.
You can still connect a GitHub repository to a CLI deployment. When you do:
cubejs-cli deploy against the deployment.This gives you GitHub-driven previews for feature work while keeping the production deploy gated on an explicit CLI invocation (for example, from your CI/CD pipeline after a release is approved).
Development mode is fully available on CLI deployments: developers can enter dev mode, switch branches, save changes, commit them, and even merge branches into the production branch from the Cube Cloud UI.
However, in CLI mode, none of these actions trigger a production build or redeploy. Specifically:
cubejs-cli deploy, which uploads the contents of your local project to
Cube Cloud and triggers a production build.In other words, a CLI-mode deployment will not change production just because
somebody pressed Enter Development Mode and merged a work-in-progress
branch — production only changes when somebody (or some pipeline) explicitly
runs cubejs-cli deploy against the deployment.
If you want changes made in the Cube Cloud UI to flow to production automatically, switch the deployment to Deploy with Git.