RaseefDocs
Deploy

Deploy from GitHub

Connect a GitHub account, choose a repository and branch, and deploy on demand or on every push.

Connect a GitHub account

Raseef reads your code through the Raseef GitHub App. In the console, open Settings → GitHub and choose Connect GitHub, or start a new project from GitHub Repository. GitHub asks which repositories the app may see.

The app asks only for read access:

PermissionWhy
Repository contentsTo fetch the commit being built.
Repository metadataTo list repositories and branches.
Organization membersTo check that the person connecting an organization owns it.
  • A personal GitHub account can be connected only by its owner.
  • An organization can be connected only by one of its owners.
  • A GitHub account is connected to one Raseef workspace at a time.
  • Private repositories work. Each fetch uses a short-lived token limited to that one repository, with read access to its contents, and the token is revoked right after.

Removing the app from GitHub, or taking a repository away from it, disconnects the services built from it. Their current deployments keep running.

Create services from a repository

Choose New project → GitHub Repository, then the account, repository and branch. Raseef looks through the repository for apps:

  • folders up to three levels deep that hold an app,
  • members of npm, pnpm, Yarn or Bun workspaces that have a start script or a Dockerfile, each created as its own service with watch paths for its own folder.

It shows up to 20 apps; choose the ones to create. Deploy Now (or Deploy N services for several) builds and deploys them. If the repository declares variables (in a .env.example file, for example), the button is Add Variables instead: it creates the services without deploying, so you can set their variables first and then deploy.

Source settings

On a service built from GitHub, Builds shows the connected repository and its settings:

SettingWhat it does
BranchThe branch that is built.
Root directoryThe folder of this app inside the repository, like apps/web. Relative, up to 200 characters. Empty means the repository root.
Dockerfile pathA Dockerfile to build with, relative to the repository root. Empty means Raseef looks for a Dockerfile in the root directory.

See Builds for how a build is made with and without a Dockerfile.

Deploy a commit

Deploy latest commit builds the branch's latest commit and deploys it. Building again after a change of variables or settings is done the same way.

A service has one build in progress at a time, and a workspace at most three. When the limit is reached, the console asks you to wait for one to finish.

Deploy on every push

Turn on Deploy automatically on every push to build and deploy each push to the branch. It is off for a new service, and turns off again whenever you save the source settings (repository, branch, root directory or Dockerfile path); turn it back on after such a change.

  • Only the commit at the head of the branch when GitHub notifies Raseef is built. A queued build that has not started yet is replaced by a newer push.
  • Deleting the branch builds nothing.

Watch paths

In a monorepo you rarely want every push to rebuild every app. Watch paths decide which pushes build a service: a push builds it only when it changes a file that matches.

  • One pattern per line, written like .gitignore, from the repository root. Up to 20 patterns.
  • shared/** adds a folder; !**/*.md leaves files out.
  • Empty means the default: the service's root directory, and its Dockerfile if it lives outside that folder. A service built from the repository root is built by every push.

When Raseef cannot tell which files a push changed (a force push, a new branch, or a very large push), it builds every service on that branch.

Disconnect a repository

Disconnect repository stops automatic deploys and cancels a build in progress. The current deployment keeps running.

On this page