1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2024-10-27 20:34:20 +00:00
Go to file
Oliver Giles 0384fc9a0a
Replace nodes/tags with contexts
The nodes/tags system has not been particularly successful, it's not as
intuitive as it could be, and in an attempt to be a single feature to address
many use cases, ends up addressing none of them particularly well.

This commit replaces nodes and tags with contexts.

Each job may define which context(s) the job may be associated with.
Laminar will only pop the job off the waiting queue when it can be assigned
to a context. A context defines an integer number of executors, which
represents how many runs can be simultaneously assigned to it. A context
may provide extra environment variables.

Essentially, a context replaces a node, and tags are gone. You just assign
jobs to contexts directly, and you can use a glob expression. This should be
more intuitive.

For grouping jobs in the WebUI, a separate mechanism called "groups" is provided.
2019-12-13 10:42:22 +02:00
docker resolves #102: example Dockerfile to build laminar docker image 2019-09-19 09:10:05 +03:00
etc resolves #85: systemd unit file After=network.target 2019-03-31 08:36:08 +03:00
example-scripts quote args to xsltproc 2015-09-20 09:23:50 +02:00
pkg Replace nodes/tags with contexts 2019-12-13 10:42:22 +02:00
src Replace nodes/tags with contexts 2019-12-13 10:42:22 +02:00
test Replace nodes/tags with contexts 2019-12-13 10:42:22 +02:00
CMakeLists.txt replace websockets with sse and refactor 2019-10-05 20:06:35 +03:00
COPYING Added GPLv3 license file. 2017-10-11 09:56:26 +02:00
README.md move packaging scripts into pkg directory 2019-11-01 10:24:03 +02:00
UserManual.md Replace nodes/tags with contexts 2019-12-13 10:42:22 +02:00

Laminar CI status

Laminar (https://laminar.ohwg.net) is a lightweight and modular Continuous Integration service for Linux. It is self-hosted and developer-friendly, eschewing a configuration UI in favour of simple version-controllable configuration files and scripts.

Laminar encourages the use of existing GNU/Linux tools such as bash and cron instead of reinventing them.

Although the status and progress front-end is very user-friendly, administering a Laminar instance requires writing shell scripts and manually editing configuration files. That being said, there is nothing esoteric here and the guide should be straightforward for anyone with even very basic Linux server administration experience.

See the website and the documentation for more information.

Building from source

First install development packages for capnproto (version 0.7.0 or newer), rapidjson, sqlite and boost (for the header-only multi_index_container library) from your distribution's repository or other source.

On Debian Buster, this can be done with:

sudo apt install \
		 capnproto cmake g++ libboost-dev libcapnp-dev libsqlite-dev libsqlite3-dev make rapidjson-dev zlib1g-dev

Then compile and install laminar with:

git clone https://github.com/ohwgiles/laminar.git
cd laminar
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/
make -j4
sudo make install

make install includes a systemd unit file. If you intend to use it, consider creating a new user laminar or modifying the user specified in the unit file.

Packaging for distributions

The pkg directory contains shell scripts which use docker to build native packages (deb,rpm) for common Linux distributions. Note that these are very simple packages which may not completely conform to the distribution's packaging guidelines, however they may serve as a starting point for creating an official package, or may be useful if the official package lags.