Racs#

Screenshot 1

Overview#

racs (Raja's Attempt at a Continuous Something) is a simple tool for building and deploying OCI images (docker, podman, etc) from git repositories.

It is deliberately minimal in options, with a fixed set of build steps for all projects. Unlike many other continuous build tools, racs is designed for incremental builds with tools such as make, gradle and of course rabs.

Features#

racs provides the following features:

  • Simple web UI and API, including webhooks for pulling and building projects.

  • Support for incremental builds. Every project is given its own working directory that persists between builds. The UI and API provide commands for emptying the working directory and performing a clean checkout if required.

  • Projects can trigger other projects after each build. This allows for more complex project build workflows.

  • Build scripts can be uploaded outside of the git repository. This means racs can work with existing projects without requiring any changes to their codebases.

Limitations#

racs has several limitations, some due to implementation time constraints and others intentional:

  • Hard-coded to use podman for all image builds. It is expected that racs is running on its own server or container with a working podman available. This may become configurable in the future.

  • Only supports PAM based authentication, authenticating against the local users. With racs running on its own server, this should be sufficient. This may become configurable in the future.

  • Fixed build steps for all projects: cleanclonepreparepullbuildpacakgepush.

Installation#

racs is written in go so assuming go is already installed on a machine, building racs is simply:

$ git clone https://github.com/wrapl/racs.git
$ cd racs
$ go build

The result racs executable should then be run in the desired directory:

$ cd /path/to/projects
$ /path/to/racs -port 8080 -ssl-cert ssl.crt -ssl-key ssl.key -no-login true

Options#

-port <num>:

Sets the port number for the web server, defaults to 8080.

-no-login:

Allows users to perform all operations without logging in.

-ssl-cert:

Uses HTTPS instead of HTTP, with the provided SSL cert file.

-ssl-key:

The SSL key file to use.