Buildbot for Nix, tailored for Lix usecases
Go to file
eldritch horrors 45135d249b fix silent timeout, set build timeout
using `--option` like this hid that the silent timeout was never
actually set, instead we set the unknown and thus ignored option
`--max-silent-time`. while we're at it we can also set a timeout
for the entire build, chosen as two hours because that should be
enough for all current jobs (and hopefully it'll stay that way).
2024-05-26 16:26:25 +02:00
.github Bump cachix/install-nix-action from 24 to 25 2024-01-15 01:50:37 +00:00
bin add buildbot-effects 2023-12-26 21:54:20 +01:00
buildbot_effects fix new linting errors 2023-12-26 22:36:40 +01:00
buildbot_nix fix silent timeout, set build timeout 2024-05-26 16:26:25 +02:00
examples remove cachix 2024-03-11 06:26:39 +01:00
nix hotfix: missing comma for arguments list 2024-05-11 20:07:32 +02:00
.gitignore also create webhooks automatically 2023-10-12 17:50:43 +02:00
.mergify.yml add mergify 2023-10-12 23:59:45 +02:00
default.nix add buildbot_nix as a python package to buildbot 2023-10-31 11:35:35 +01:00
flake.lock flake.lock: Update 2024-02-29 01:34:25 +00:00
flake.nix nix/coordinator: rename it into what this really is 2024-03-02 18:45:19 +01:00
pyproject.toml typecheck twisted 2024-01-01 15:38:28 +00:00
README.md Improve readme 2023-12-24 07:51:41 +00:00

Buildbot-nix

Buildbot-nix is a NixOS module designed to integrate Buildbot, a continuous integration (CI) framework, into the Nix ecosystem. This module is under active development, and while it's generally stable and widely used, please be aware that some APIs may change over time.

Getting Started with Buildbot Setup

To set up Buildbot using Buildbot-nix, you can start by exploring the provided examples:

Additionally, you can find real-world examples at the end of this document.

Buildbot masters and workers can be deployed either on the same machine or on separate machines. To support multiple architectures, configure them as nix remote builders. For a practical NixOS example, see this remote builder configuration.

Using Buildbot in Your Project

Buildbot-nix automatically triggers builds for your project under these conditions:

  • When a pull request is opened.
  • When a commit is pushed to the default git branch.

It does this by evaluating the .#checks attribute of your project's flake in parallel. Each attribute found results in a separate build step. You can test these builds locally using nix flake check -L or nix-fast-build.

If you need to build other parts of your flake, such as packages or NixOS machines, you should re-export these into the .#checks output. Here are two examples to guide you:

Integration with GitHub

Buildbot-nix primarily supports GitHub, with plans to extend support to other platforms like Gitea.

To integrate with GitHub:

  1. GitHub App: Set up a GitHub app for Buildbot to enable GitHub user authentication on the Buildbot dashboard.
  2. OAuth Credentials: After installing the app, generate OAuth credentials and configure them in the buildbot-nix NixOS module.
  3. GitHub Token: Obtain a GitHub token with admin:repo_hook and repo permissions. For GitHub organizations, it's advisable to create a separate GitHub user for managing repository webhooks.

Real-World Deployments

See Buildbot-nix in action in these deployments: