- Scheme 77.2%
- Tree-sitter Query 20.2%
- CSS 1.1%
- JavaScript 0.7%
- Makefile 0.5%
- Other 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
automate/trunk The package builds, its tests pass and the code is formatted
|
||
| .automate | ||
| automate | ||
| bin | ||
| build-aux | ||
| channel/guile-automate | ||
| doc | ||
| examples | ||
| tests | ||
| .dir-locals.el | ||
| .envrc | ||
| .gitignore | ||
| .guix-channel | ||
| 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. It was written with the help of Claude Opus and Claude Fable via Claude Code. See the announcement blog post here https://www.cbaines.net/posts/announcing_guile_automate/.
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
guix build -f guix.scm runs the same Autotools build, tests
included, and the package it makes carries the modules, the automate
command and the manual. The repository is also a Guix channel
providing it as guile-automate, for a Guix that has pulled it to
build Automate by name: a pipeline that lowers other pipelines'
definitions with lower-definition builds the package of the Guix its
guix-channels resource captured, until the package is in Guix itself.
Automate's own pipelines build it to check a commit and publish its
manual.
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.