Deploy from Git
Point an app at a repository and let Deplo build, deploy and redeploy it on push.
What it is
Pointing an app at a repository and letting Deplo build it. This is the source most apps use.
- GitHub has the deepest integration.
- GitLab, Bitbucket, Gitea and Forgejo work through a token.
- Any other Git server works through a plain URL.
How it works
The repository is cloned by the agent, on the target server, using a credential the control plane decrypts at that moment. Nothing is cloned onto the control plane.
Deplo then detects the framework, builds an image and brings the stack up.
What the provider gives you depends on how it is connected:
| GitHub App | GitLab, Bitbucket, Gitea (Beta) | A bare Git URL | |
|---|---|---|---|
| Repository picker | yes | yes | no, you paste the URL |
| Branch list | yes | yes | no, you type it |
| Deploy on push | yes, automatic webhook | yes, automatic webhook | no, use the deploy hook |
| Pull request previews | yes | no | no |
| Credential | short-lived installation token | a personal access token you store once | the URL, or a stored token |
Deploy one
Start a new app
On the Overview, open Add new, then Application. The wizard's first step is where you pick the source - or Template, to start from the catalogue instead.
Pick the source
Pick the GitHub or Git tile, then Next.
If nothing is connected yet, click Connect GitHub. Deplo creates the GitHub App through GitHub's manifest flow, so there is no client id or private key to copy. Choose which repositories it can see, then pick the repository and the branch.
Check what Deplo read
The last card arrives filled in: the App name from the repository, the framework it
recognised, and the Build command and Deploy command your package.json declares.
Reset empties a command, which hands the decision back to the builder.
Leave push deploys on
Leave Automatic deployments on unless you want to release by hand.
Deploy
The server, the build method and the watch paths are under Advanced, already answered. Click Deploy.
Change the source later
Settings -> Deployments, the Deploy Source card. You can move an app between repositories, branches and even source types. The app keeps its slug, its domains, its variables and its volumes, so switching from a Docker image to a repository does not start over.
Prop
Type
Saving the source does not deploy. Click Redeploy when you are ready.
Private repositories
Deplo never asks you to paste a key into an app. Credentials live once on the connection, and every app that uses that host reuses them. See Git providers for how each provider connects, what it unlocks, and what to do if a credential breaks.
Limits and gotchas
- Only a GitHub app can have pull request previews. The settings page is visible for other sources but disabled, with the reason on it.
- A bare Git URL cannot register a webhook. Deploy on push is not available, and the deploy hook is how you trigger it instead.
- Watch paths fail open. When a webhook delivery carries no file list, which happens with some tag pushes, the deploy runs rather than being skipped.
- The branch is the app's, not the repository's. Two apps can track two branches of the same repository, and that is a normal way to run staging.
- Changing the repository does not clear the volumes. Data written by the old code is still mounted.
If it does not work
- The repository picker is empty - the GitHub App cannot see it. Use Manage connected apps and grant the repository on GitHub.
Authentication failedin the clone step - the stored token expired or was revoked. Settings -> Git, then Test connection.- Pushes do not deploy - check the webhook status on Settings -> Deployments, and see Automatic deployments.
More in Deploys and builds.
See also
Did this page help you?