package builder-web

  1. Overview
  2. Docs
Web interface for builder

Install

Dune Dependency

Authors

Maintainers

Sources

builder-web-0.2.0.tbz
sha256=5f4f388368a6be57ca59a4463f00f0e52262fd45b85d8e8d757f1a0cf84b9df2
sha512=ce3572c962dc46b68237b62a48da6d8b431a3ac3ff4b786efa482142332f641bcc8793626b6c97b43912a5da1103c6246e97ecd608df75a32bc7c54c47acbe76

Description

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.

Published: 10 Sep 2024

README

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

Dependencies (34)

  1. digestif >= "1.2.0"
  2. decompress >= "1.5.0"
  3. solo5-elftool >= "0.3.0"
  4. owee
  5. tar-unix >= "3.0.0"
  6. tar >= "3.0.0"
  7. cmarkit >= "0.3.0"
  8. fmt >= "0.8.7"
  9. uri
  10. cmdliner >= "1.1.0"
  11. logs
  12. asn1-combinators >= "0.3.0"
  13. duration
  14. ptime
  15. tyxml >= "4.3.0"
  16. ipaddr
  17. metrics-rusage >= "0.3.0"
  18. metrics-influx >= "0.3.0"
  19. metrics-lwt >= "0.3.0"
  20. metrics >= "0.3.0"
  21. opam-format >= "2.1.0"
  22. opam-core
  23. kdf
  24. mirage-crypto-rng >= "0.11.0"
  25. caqti-driver-sqlite3
  26. caqti-lwt
  27. caqti >= "2.1.2"
  28. lwt >= "5.7.0"
  29. ohex >= "0.2.0"
  30. bos
  31. dream >= "1.0.0~alpha7"
  32. builder >= "0.4.0"
  33. dune >= "2.7.0"
  34. ocaml >= "4.13.0"

Dev Dependencies (4)

  1. yojson with-test
  2. ppx_deriving_yojson with-test
  3. ppx_deriving with-test
  4. alcotest >= "1.2.0" & with-test

Used by

None

Conflicts

None

OCaml

Innovation. Community. Security.