A web user interface and API for our reproducible builds of MirageOS unikernels and host system tools.
Find a file
Reynir Björnsson e253848a15 Rely on the default error page triggering for 404s
It is not immediately obvious how to avoid the error handler making a
different 404 response when the application code returns an explicit 404
page. Since we were already replying "Resource not found" in all cases
except one where we reply "File not found" not much is lost by relying
on the error handler behavior.
2022-07-15 11:16:01 +02:00
auth add explicit package dependencies 2021-06-09 16:03:03 +00:00
bin Implemented general error-handler + Added special error-page for iframes/vizs 2022-07-15 10:51:57 +02:00
db Update database version 2022-05-17 12:24:24 +02:00
http_status_middleware Add http status metrics middleware 2021-06-08 12:36:53 +00:00
lib Rely on the default error page triggering for 404s 2022-07-15 11:16:01 +02:00
opamdiff investigate differences in build, install, and uri when opam file differed (#48) 2021-07-06 08:34:17 +00:00
packaging FreeBSD/create_package.sh: Do not quote glob 2022-07-05 09:37:59 +02:00
test Refactor and fix tests 2022-07-12 13:14:52 +02:00
.gitignore .gitignore: Emacs files 2022-02-01 11:30:44 +00:00
.ocp-indent Remove trailing whitespace 2022-02-07 13:51:56 +00:00
builder-web.opam map_err and bind_lwt_err will be deprecated with lwt.5.6.0 2022-07-12 13:23:23 +02:00
CHANGES.md Prepare for initial public release 2021-11-12 13:42:26 +00:00
dune-project Initial commit 2020-12-04 18:10:21 +01:00
LICENSE.md debian packaging 2021-06-29 09:41:05 +00:00
README.md minor stylistic adjustments from reading git diff -w 0afec16..6f3c89c 2022-02-24 14:05:06 +01:00

Builder-web - a web frontend for reproducible builds

Builder-web takes in submissions of builds, typically from builder, and displays the produced artifacts in a way that makes it easy to compare checksums and build status. Produced binaries can be downloaded and executed. builds.robur.coop itself runs builder-web.

Overview

Builder-web is a single binary web server using a sqlite3 database with versioned schemas. Finished builds from builder are uploaded to builder-web, stored and indexed in the database and presented in the web interface to the user. Users can:

  • Get an overview of jobs - a job is typically script or opam package that is run and builds an artifact,
  • Browse all builds of a job - each job may have multiple builds, that are executed periodically by builder
  • Browse individual build and download artifacts and build information for reproducing the same binary.
  • Compare two builds, observing the differences in used opam packages, environment variables, and system packages.
  • Search for the SHA-256 hash of a binary to view a build that resulted in that binary.

Installation

Installing from source can be done with opam: opam install builder-web.

We also provide reproducible binary packages.

Setup

Builder-web consists of a binary builder-web that runs a web server on port 3000 listening on all interfaces by default. These values can be changed with the --port and --host flags respectively. See builder-web --help for more information.

Service scripts for FreeBSD and systemd are provided.

The web server expects a sqlite3 database in its data directory. An empty database can be created with builder-db migrate.

Database migrations

The sqlite3 database builder-web uses contains versioning information. On every schema change the database schema version is updated, and migration and rollback scripts are provided. The tool for database migrations is builder-migrations. See the builder-migrations --help output for each migration for further details.

Less common workflows

Here are listed some less common but useful workflows:

Extracting builds from one server to another

This is useful for development on a separate machine that doesn't run the build jobs itself.

On the source server:

builder-db extract-build <build-hash> --dest <build-hash>.full

After copying the file over the destination server (you need a user first, see builder-db user-add --help):

curl --data-binary @<build-hash>.full http://<user>:<passwd>@localhost:<builder-web-port>/upload