Velcom 2.0 written in Rust
Find a file
2023-08-05 01:23:12 +02:00
.sqlx Insert new commits from repo 2023-08-05 00:32:40 +02:00
.vscode Use askama to render test template 2023-08-03 19:14:58 +02:00
meta Set up sqlx query* macros 2023-08-04 13:27:23 +02:00
migrations Insert new commits from repo 2023-08-05 00:32:40 +02:00
src Reorganize config file 2023-08-05 01:23:12 +02:00
static Use askama to render test template 2023-08-03 19:14:58 +02:00
templates Set up sqlx 2023-08-04 01:30:32 +02:00
.gitignore Create project 2023-08-03 14:32:37 +02:00
askama.toml Use askama to render test template 2023-08-03 19:14:58 +02:00
build.rs Switch to plain commit hash in version number 2023-08-04 16:09:55 +02:00
Cargo.lock Insert new commits from repo 2023-08-05 00:32:40 +02:00
Cargo.toml Insert new commits from repo 2023-08-05 00:32:40 +02:00
README.md Document building instructions 2023-08-04 14:46:56 +02:00
tsconfig.json Set up typescript project 2023-08-03 14:32:49 +02:00

tablejohn

A tool to run benchmarks for a git repo and display their results.

Building from source

The following tools are required:

For developing, the following tool is additionally required:

Once you have installed these tools, run cargo build --release. The compiled binary will be located at target/release/tablejohn. It contains everything needed to run tablejohn. No additional files are required.

Design notes

  • A tablejohn instance tracks exactly one git repository.

  • A tablejohn instance has exactly one sqlite db.

  • Tablejohn does not clone or update repos, only inspect them.

  • Tablejohn can inspect bare and non-bare repos.

  • Server settings should go in a config file.

  • Repo settings should go in the db and be managed via the web UI.

  • Locally, tablejohn should just work™ without custom config.

  • Run via tablejohn <db> [<repo>]

  • The db contains...

    • Known commits
    • Runs and their measurements
    • Queue of tasks (not-yet-run runs)
    • Tracked branches (new commits are added to the queue automatically)
    • Github commands
  • Runners...

    • Ping tablejohn instance regularly with their info?
      • WS connection complex, but quicker to update
    • Reserve tasks (for a limited amount of time 10 min?)
    • Steal tasks based on time already spent on task
    • Update server on tasks
      • Maybe this is the same as reserving a task?
      • Include last few lines of output
    • Turn tasks into runs
      • Handle errors sensibly
      • Include full output (stdout and stderr), especially if task fails