#github #app #ci #qa #qvet

bin+lib qvet-standalone

Single binary artefact for qvet

6 releases

0.1.5 Feb 7, 2023
0.1.4 Feb 7, 2023

#215 in Testing

30 downloads per month

MIT license

529 lines


Quickly vet your releases for QA.


qvet has two main components:

  • web: The shiny dashboard UI. Most functionality is here.
  • api: A lightweight backend, used where secrets are required.

All data is stored in Github, there is no additional persistent store/database required.

Github App Configuration


  • Commit statuses: Read and Write
    • To read and set QA status
  • Contents: Read only
    • To read branches, commits and tags

Events (currently not required)

  • Create
    • To listen for a new tag (release) being created
  • Push
    • To listen for new commits being pushed to master
  • Status
    • To listen for QA statuses being updated


Start the two services in development/hot reload mode. Respectively:

  • web with cd web && npm install && npm run dev
  • api with cd api && cargo watch -x 'run -- --bind'

Standalone deployment

For convenience, qvet can run bundled in a single binary.


For convenience, this binary is available in a thin docker image wrapper.

To build a new release, run ./qvet-standalone/scripts/build.sh, which will produce an image named qvet-standalone.

This can then be invoked as follows:

docker run -d --rm --name ci-qvet --init -e GITHUB_CLIENT_ID -e GITHUB_CLIENT_SECRET -e QVET_COOKIE_KEY -p 39106:39105 qvet-standalone --bind

Environment variables

Environment Variable Example Purpose Notes
GITHUB_CLIENT_ID Iv1.0123456789abcdef Github App Client Id Required
GITHUB_CLIENT_SECRET random hexadecimal, 40 characters Github App Client Secret Required
QVET_COOKIE_KEY random hexadecimal, 64 characters qvet private cookie encryption Optional. If unset, a random key will be generated at runtime.


~866K SLoC