Deplo

Git providers

Connect Deplo to where your code lives, once per team, so every app can clone it without anybody pasting a token into an app.

Settings -> Git.


How it works

Two mechanisms, not one.

GitHub connects as a GitHub App, created through GitHub's manifest flow: you click, you approve on GitHub, and Deplo receives the credentials directly. There is no client id or private key to copy. The App is installed on the accounts and organisations that hold your repositories, and mints short-lived tokens to list and clone them. See GitHub.

Everything else connects as a git connection, which is one stored credential per host, reused by every app that deploys from it. This covers GitLab, Bitbucket and Gitea, self-hosted included, and is marked Beta.

Tokens are encrypted at rest, never returned by the API, and decrypted only at the clone edge and when calling the provider's own API.


What each connection unlocks

GitHub AppGit connectionA bare URL
Repository pickeryesyesno
Branch listyesyesno
Deploy on pushyesyesno
Pull request previewsyesnono
Preview commentsyesnono

A bare URL is the escape hatch: it clones and nothing else. Its automatic trigger is the deploy hook.


Where the choice lives in the interface

The deploy source chips stay at five: GitHub, Git, Docker Image, Upload, Compose. Providers other than GitHub live in a dropdown inside the Git chip, which is why you will not find a Bitbucket tab.

Limits and gotchas

  • One GitHub App per team.
  • GitLab reports token expiry, Gitea does not. For Gitea, a background check is what tells you a token died.
  • A revoked token surfaces before a deploy fails on it, because the maintenance sweep re-tests connections.
  • Webhooks are registered automatically for both connected kinds, and removed when the app stops using them.
  • The token is per host, not per repository. Everything that host serves is reachable with it, so scope the token on the provider's side.

If it does not work

  • The repository list is empty: the GitHub App has no access. Use Manage and grant it there.
  • Authentication failed in a clone: the token expired or was revoked. Test connection confirms it.
  • Pushes do not deploy: check the webhook status on the app's Settings -> Deployments. A provider that cannot reach this instance cannot deliver.
  • Saving a self-hosted address is refused: it resolves to a private address, and only an instance admin can allow that.

See Deploys and builds for more.


See also

Did this page help you?

On this page