# Builds from GitHub

> Install the Unrent GitHub App, connect your GitHub account, and create a service **From a repository**. Each push to its branch builds that exact commit from your Dockerfile on the service’s own server, then deploys it, with a check run on the commit.

URL: https://unrent.dev/docs/builds/

## Connect GitHub

1. An admin opens **Settings → GitHub** and chooses **Install on GitHub**, then picks the repositories.
2. Each member chooses **Connect your GitHub account**. Unrent only shows repositories that your own GitHub account can read.

The app asks for read access to code and metadata, and write access to checks. Nothing else.

## Create a service from a repository

In **New service → From a repository**, choose the repository, the branch, an optional root folder (for monorepos) and the Dockerfile path, and whether to deploy on push. The server needs `git` and Docker.

Deploy any time with **Deploy latest commit**, or a given commit. The run view streams the build log.

## How a build runs

- The server fetches exactly one commit with a token limited to that repository, valid for at most an hour and revoked after the build
- Docker builds your Dockerfile (BuildKit when available), one build at a time per server, with a time limit (20 minutes by default, up to 30)
- The image is pushed to the server’s own registry and deployed by digest, through the usual health check and switch
- No build arguments or build secrets are passed, and the build is never privileged

> Builds run on the server that runs the service, so they use its CPU and memory while they run. Dedicated build servers are coming.

## Private registries

In **Settings → Registries**, add the registry host, a user name and a password. The password is sealed in your browser to every server; a server added later needs the credential replaced. Pick the credential when you create a service from an image.

## When things pause

If the GitHub App is uninstalled or suspended, a repository is removed from it, archived or deleted, the services that build from it pause and say why. They resume when access comes back.

## Questions

### Which build types are supported?

A Dockerfile in your repository. Railpack and Docker Compose are coming.

### What if GitHub is down when I push?

A push that never reaches Unrent does not build on its own; use Deploy latest commit once GitHub is back.
