Fork of sbidoul/runboat with Forgejo/Gitea support
Find a file
2021-10-28 19:04:31 +02:00
.github/workflows Add basic CI 2021-10-17 15:44:23 +02:00
src/runboat Fix a few typing issues and bug revealed by mypy 2021-10-28 19:04:31 +02:00
.env.sample Add .env sample 2021-10-28 17:19:29 +02:00
.flake8 Initial commit 2021-10-17 15:19:34 +02:00
.gitignore Initial commit 2021-10-17 15:19:34 +02:00
.pre-commit-config.yaml Initial commit 2021-10-17 15:19:34 +02:00
LICENSE Initial commit 2021-10-17 15:19:34 +02:00
log-config-dev.yaml Update README 2021-10-28 18:20:21 +02:00
pyproject.toml Update README 2021-10-28 18:20:21 +02:00
README.md Tweak README 2021-10-28 18:23:30 +02:00
requirements.txt Update README 2021-10-28 18:20:21 +02:00

runboat ☸️

A simple Odoo runbot lookalike on kubernetes. Main goal is replacing the OCA runbot.

Requirements

For running the builds:

  • A namespace in a kubernetes cluster.
  • A wildcard DNS domain that points to the kubernetes ingress.
  • A postgres database, accessible from within the cluster namespace with a user with permissions to create database.

For running the controller:

  • Python 3.10
  • kubectl
  • A KUBECONFIG that provides access to the namespace where the builds are deployed, with permissions to create and delete service, deployment, ingress, secret and configmap resources.

Developing

  • setup environment variables (start from .env.sample)
  • create a virtualenv, make sure to have pip>=21.3.1 and pip install -e .
  • run with uvicorn runboat.app:app --reload --log-config=log-config-dev.yaml

Author and contributors

Authored by Stéphane Bidoul (@sbidoul).

Contributions welcome.

TODO

Prototype (min required to do load testing):

  • plug it on a bunch of OCA and shopinvader repos to test load
  • handle init failures, add failed status
  • configuring many repos in a .env file may be difficult, switch to a toml file ?

MVP:

  • deployment and more load testing
  • build/log and build/init-log api endpoints
  • report build status to github
  • secure github webhooks
  • k8s init container timeout
  • better error handling in API (return 400 on user errors)
  • basic tests
  • build and publish runboat container image
  • test what happens when the watcher looses connection to k8s
  • look at other TODO in code to see if anything important remains
  • basic UI (single page with a combo box to select repo and show builds by branch/pr, with start/stop buttons)

More:

  • shiny UI
  • handle PR close (delete all builds for PR)
  • handle branch delete (delete all builds for branch)
  • create builds for all supported repos on startup (goes with sticky branches)
  • never undeploy last build of sticky branches
  • make build images configurable (see build_images.py)