b16991b17a
Creating of LogWatcher makes it automatically receive new log chunks as it is part of logWatchers. But we cannot be sure that stream->write().then() will have already completed, so there is a chance that a null fulfiller will be caused, causing a crash. We cannot defer the creation of the LogWatcher until after stream->write() because in the meantime we may lose new messages, so call writeLogChunk to make sure we have a fulfiller before entering stream->write(). Also, pending chunks of log output were std::move()'d to the first interested client in the loop, they need to be copied if there is more than one client. |
||
---|---|---|
docker | ||
etc | ||
examples | ||
pkg | ||
src | ||
test | ||
CMakeLists.txt | ||
COPYING | ||
README.md | ||
UserManual.md |
Laminar CI
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=/usr
make -j4
# Warning: the following will overwrite an existing /etc/laminar.conf
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.
Contributing
Issues and pull requests via GitHub are most welcome. All pull requests must adhere to the Developer Certificate of Origin.