- Scheme 79.6%
- Tree-sitter Query 17.5%
- CSS 1.3%
- Makefile 0.6%
- JavaScript 0.6%
- Other 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
automate/trunk The tests pass, the code is formatted and the manual builds
If the definition has changed since the last run. |
||
| .automate | ||
| automate | ||
| bin | ||
| build-aux | ||
| doc | ||
| examples | ||
| tests | ||
| .dir-locals.el | ||
| .envrc | ||
| .gitignore | ||
| automate.scm | ||
| bootstrap.sh | ||
| CLAUDE.md | ||
| configure.ac | ||
| COPYING | ||
| DESIGN.md | ||
| guile.am | ||
| guix.scm | ||
| Makefile.am | ||
| manifest.scm | ||
| NEWS | ||
| pre-inst-env.in | ||
| README.md | ||
| STYLE.md | ||
Guile Automate
Build and run pipelines written in GNU Guile using GNU Guix and Spritely Goblins.
At the moment, Guile Automate is a prototype. Everything is currently unstable and open to breaking changes.
The manual, for whoever writes or runs pipelines, is at
https://docs.cbaines.net/guile-automate/; it is built from
doc/ by make -C doc index.html. The design, for whoever changes
Automate, is DESIGN.md, and code follows STYLE.md. Automate's own
pipelines are under .automate/.
Trying it
Automate runs on Linux, and needs GNU Guix on
every machine that builds or runs a pipeline, since each step is a
program in the store. Steps are confined in Linux namespaces, so the
kernel has to let an unprivileged process create them; where it does
not, --unconfined runs steps as ordinary processes. A step that
builds with Guix while it runs also needs a guix-daemon.
Start with examples/hello.scm: a two-step pipeline with a workspace,
a secret, a limiter and a parameter, whose header says how to build and
run it. The manual's Getting Started section walks through the same
kind of file.
Reporting bugs
Report bugs and suggest changes in the issue tracker at https://forge.cbaines.net/cbaines/guile-automate/issues. Since Automate is a prototype, open an issue to discuss a larger change before writing it.
Developing
guix shell -D -f guix.scm -- guile -L . tests/run.scm
guix shell -D -f guix.scm -- guile tests/integration/lowering.scm
Or with Autotools, which compiles the modules and can install them:
guix shell -D -f guix.scm
./bootstrap.sh && ./configure && make
make check # the suites, one per file
make check-integration # tests/integration/, needs a guix-daemon
make install # puts the automate command on the path
The dependencies are declared in guix.scm, so that is the file to
hand guix shell: it caches the profile against the mtime of the file
it is given and reads nothing that file loads, so a profile cached
against manifest.scm, which loads guix.scm, goes on being used
after a dependency changes. manifest.scm adds Emacs and bash to the
same inputs, for make format and for Automate's own pipelines, which
build it afresh on every run:
guix shell -m manifest.scm -- make format
Copying
Guile Automate is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version. See COPYING.