A Continuous Integration Daemon
Go to file
Přemysl Eric Janouch fb291b6def
All checks were successful
Alpine 3.20 Success
Improve the terminal filter
The new filter comes with these enhancements:

 - Processing is rune-wise rather than byte-wise;
   it assumes UTF-8 input and single-cell wide characters,
   but this condition should be /usually/ satisfied.
 - Unprocessed control characters are escaped, `cat -v` style.
 - A lot of escape sequences is at least recognised, if not processed.
 - Rudimentary preparation for efficient dynamic updates
   of task views, through Javascript.

We make terminal resets and screen clearing commands
flush all output and assume that the terminal has a new origin
for any later positioning commands.
This appears to work well enough with GRUB, at least.

The filter is now exposed through a command line option.
2024-12-25 23:14:54 +01:00
.gitignore Add Qt Creator project files to .gitignore 2024-12-21 09:37:11 +01:00
acid_test.go Adjust shell quoting 2024-04-17 01:45:13 +02:00
acid.adoc Clean up, add a deployment stage 2024-12-23 14:35:46 +01:00
acid.go Improve the terminal filter 2024-12-25 23:14:54 +01:00
acid.yaml.example Clean up, add a deployment stage 2024-12-23 14:35:46 +01:00
go.mod Clean up, add a deployment stage 2024-12-23 14:35:46 +01:00
go.sum Clean up, add a deployment stage 2024-12-23 14:35:46 +01:00
LICENSE Initial commit 2024-04-04 19:40:14 +02:00
Makefile Make do with a2x when there is no asciidoctor 2024-12-24 15:43:35 +01:00
README.adoc Update documentation 2024-04-18 07:10:32 +02:00
terminal_test.go Improve the terminal filter 2024-12-25 23:14:54 +01:00
terminal.go Improve the terminal filter 2024-12-25 23:14:54 +01:00

acid

acid is A Continuous Integration Daemon.

The aim of this project is to provide a trivial CI daemon for Gitea. I find most alternatives way too complex to set up and run in a local setting, while the gist of it is actually very simple—run some stuff on new git commits.

acid provides a simple web frontend, as well as a webhook endpoint for notifications about new commits. The daemon is supposed to be "firewalled" by a normal HTTP server, and as such it will not provide TLS support to secure communications.

acid runs tasks over SSH, which should be universal enough. It can tell you the build results via any method you can put in a shell script.

Getting it to work

# apt install git golang asciidoctor
$ git clone https://git.janouch.name/p/acid.git
$ cd acid
$ make
$ man -l acid.1

You will need to write your own runner scripts, which may be nontrivial. The author suggests using cloud-init-enabled virtual machines with QEMU.

For a step-by-step guide, see the related article.

Demo

acid is deployed on https://git.janouch.name.