Skip to content

Deploying from GitHub

WeekendBuilder can deploy any public or private GitHub repo, as long as it has a Dockerfile at the root.

Requirements

  • A Dockerfile in the root of your repo
  • The branch you want to deploy (defaults to main)
  • Your app must listen on a configurable port (default 3000)

How to deploy

  1. Open the dashboard and select the GitHub Repo tab
  2. Paste your repo URL — e.g. https://github.com/you/my-api
  3. Set the Branch field (defaults to main)
  4. Enter a Project name — this becomes your subdomain (my-api.weekendbuilder.io)
  5. Set the Port your app listens on (default 3000)
  6. Click Deploy

The engine clones your repo, runs docker build, then starts the container behind HTTPS.

Private repos

WeekendBuilder uses your GitHub OAuth token to clone private repos. The token is stored encrypted and is only used during builds. You don’t need to add any deploy keys or secrets to your repo.

Writing a Dockerfile

Your Dockerfile just needs to start your server and expose the port. A minimal Node.js example:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

A minimal Go example:

FROM golang:1.22-alpine AS build
WORKDIR /app
COPY . .
RUN go build -o server .
FROM alpine:3.19
COPY --from=build /app/server /server
EXPOSE 8080
CMD ["/server"]

Build logs

Once a build is running you can watch it live. Click the Build Logs button on the project card. Logs stream in real time and are saved so you can review them after the build finishes.

Build caching

WeekendBuilder caches your Docker layers between builds. Subsequent deploys are faster because unchanged layers are reused. To get the most from caching:

  • Copy package.json / go.mod before copying the rest of your source, so the dependency layer is only rebuilt when deps change
  • Keep RUN npm install / RUN go mod download as early as possible in your Dockerfile

If you push a commit with the exact same git SHA as a previous build, WeekendBuilder skips the build entirely and reuses the existing image.

Automatic redeploys

Set up a webhook so every push to your branch triggers a redeploy automatically. Without a webhook you can always trigger a manual redeploy from the dashboard.

Deploying a specific commit

Webhooks trigger on every push to the configured branch. To redeploy a specific commit, push it to that branch (e.g. via git push --force-with-lease or a revert commit).

Switching branches

Delete the project and create a new one pointing at the new branch. In-place branch switching is not supported yet.