callisto.liw.fi is a Radicle CI instance that runs CI
using Ambient for open source Rust projects, for free. That means your
project should have a Radicle repository, but it’s OK for it to be a
mirror where you push when you want CI to run on callisto.
Your projects also needs to be set up to use Ambient.
Radicle is an open source, peer-to-peer code collaboration stack built on Git.
Ambient is a CI engine that runs any code from the project under test in a virtual machine without network access. It has been developed to make it safe and secure to run CI for other people’s code.
A very terse summary of how to start using Radicle:
rad auth to initialize a Radicle node on your
machine.rad init to create a Radicle repository out of the
Git repository. This will not affect how you use Git in the future, but
there will be a new rqd remote.git push rad HEAD in your Git repository. You
need to do this so the changes reach callisto eventually
and it can run CI on them.To use https://callisto.liw.fi/:
Your project must be using Rust.
CI will run in Ambient, which runs actions in a virtual machine that has no network access.
Create a file .radicle/ambient.yaml at the root of
your repository with content like the following:
pre_plan:
- action: cargo_fetch
plan:
- action: cargo_fmt
- action: cargo_clippy
- action: cargo_testHere, pre_plan is a list of actions to run on the
host, before the virtual machine runs. The only action you can put there
is cargo_fetch, which downloads Rust crates and makes them
available in the VM.
The actions in plan are executed in the VM. The VM
isolates them so that the actions can’t do any damage apart from
spending time.
Available actions:
cargo_build, cargo_clippy,
cargo_fmt, cargo_test - run the corresponding
cargo commandcustom - run named executable located in
.ambient in the repository, with the arguments serialized
as JSON in stdin; in the example above, .ambient/dchdeb - build a deb packageshell - run arbitrary shell snippet with BashAmbient also supports post_plan actions, but they
aren’t enabled on callisto
There is a limit on CPUs, RAM, and run time, and disk space used
for cache (/workspace/cache in the VM), dependencies
(/workspace/deps), and artifacts
(/workspace/artifacts), and the run will fail end (possibly
with mysterious error messages) if those limits are exceeded.