Skip to content

Run your own CI

Codebahn’s hosted runners are available on workspace plans. If you are on the Personal plan, or you want jobs to run on your own hardware, you have two options: register a Forgejo runner that polls Codebahn for jobs, or point an external CI system at your repositories.

If you have hosted runners and want to get started with a workflow file instead, see Set up CI.

A Forgejo runner polls your Codebahn instance for jobs, executes them in Docker containers, and reports results back. Follow the Forgejo runner installation guide for the binary, Docker, Podman, and systemd setup. This section covers what’s specific to Codebahn.

Get a UUID and registration token from Settings > Actions > Runners (available at user, org, or repo level). Point the runner at your Codebahn instance:

server:
connections:
codebahn:
url: https://codebahn.net/
uuid: YOUR_UUID
token: YOUR_REGISTRATION_TOKEN

Use the Codebahn runner image to get the same environment as the hosted runners, including pre-cached Go and Node toolchains:

runner:
labels:
- my-runner:docker://rg.fr-par.scw.cloud/codebahn-runner/ubuntu:24.04

Substitute any Docker image you prefer. See CI runners for the image contents.

ubuntu-latest, codebahn-small, codebahn-medium, and codebahn-large route to Codebahn’s hosted runners. Use a distinct label to keep your own hardware separate:

jobs:
build:
runs-on: my-runner

If you already run Woodpecker, Jenkins, or another CI system, point it at your Codebahn repositories. You need two things: a clone token and a webhook.

Go to Settings > Applications and create an access token with the read:repository scope. Use it in your CI system’s clone URL:

https://token:YOUR_TOKEN@codebahn.net/owner/repo.git

Add a webhook under Settings > Webhooks on your repository, pointing at your CI system’s trigger URL. See Webhooks for payload verification and the full event list.

  • Woodpecker CI supports Forgejo natively. See Woodpecker’s Forgejo integration docs for server config. Create an OAuth2 application under Settings > Applications on Codebahn for the client credentials.
  • Jenkins works via the clone token as a Git credential (username: token, password: your access token) and a webhook trigger.
  • GitHub Actions works via a push mirror. Set one up under Settings > Repository > Mirror Settings on Codebahn; commits mirror to GitHub and run on GitHub’s runners.