The CI event contains a namespaced ref. The default branch we get
also. The CI broker filter configuration does not. Fix
src/filter.rs::is_default_branch to compare only the un-namespaced
branch names.
Signed-off-by: Lars Wirzenius <liw@liw.fi>
The boolean operators "And", "Or", and "Not", all take a list of
filter expressions as operands. In normal boolean logic they take
two or one, and the list case can be a little confusing to read.
Introduce aliases "AllOf", "AnyOf", and "NoneOf". These are merely
aliases for the operators, with the exact same semantics.
Signed-off-by: Lars Wirzenius <liw@liw.fi>
Change the logical negation operator `Not` to take a list of filters
as operands. The operator returns true, if and only if all of the
operands are false. The syntax is now consistent with logical `And`
and `Or`, which simplifies code, and is expected to simplify use.
In YAML syntax, `Not` now works like this:
~~~
!Not
- !Allow
~~~
Previously, `!Not` only had one operand, so that above would have been
expressed as `!Not Allow`.
Signed-off-by: Lars Wirzenius <liw@liw.fi>
The `EventFilter::Not` variant would not correctly deserialize, resulting in the
following error:
deserializing nested enum in EventFilter::Not from YAML is not supported yet
This can be fixed by using `#[serde(with = "serde_yml::with::singleton_map")]`
on that variant.
A test case is provided to show that a `Not` case can be deserialized correctly.
The change also includes some improvements to `EventFilter`:
- Add `PartialEq` and `Eq` for testing equality in testing
- The `And` and `Or` variants do not need the `Box`, since the `Vec` acts as a
size pointer for the recursive `Self` – unlike the `Not` variant.
"cibtool trigger" option "--ref" defaults to "main" and "--commit" to
"HEAD", and there's no need to say those explicitly.
Signed-off-by: Lars Wirzenius <liw@liw.fi>
The default doesn't change, but it's now called
`DEFAULT_QUEUE_LEN_INTERVAL` instead of `DEFAULT_MAX_RUN_TIME`.
Signed-off-by: Lars Wirzenius <liw@liw.fi>
For several releases already, `cib` has refused to start if the
database has any "broker events". Broker events were a predecessor for
CI events, and they haven't been supported by the CI broker since
0.7.0, from October 2024.
Drop the Db method to query the database for queued broker events.
Also drop the creation of a table for that queue.
Signed-off-by: Lars Wirzenius <liw@liw.fi>
Add a check for auditing the project via `cargo audit`.
Note that a RUSTSEC is ignored due to it not affecting the project – this is
recoreded in `.cargo/audit.toml`.
Adds a `flake.nix` for building and testing the radicle-ci-broker using Nix.
Auditing and license denial configurations are also added as part of the `nix
flake check`s.
Note that one of the tests is ignore as part of the nextest check, since it
relies on using the Git repository itself. This is discouraged, since the check
runs in a sandboxed environment.
While setting up a Nix flake, a series of tests were failing due to shell
invocations. The falling were the changes required:
- Use `!#/bin/sh` instead of `!#/bin/bash`
- Use `$$` instead of `$BASHPID`
- Use `true` and `false` instead of `/bin/true` and `/bin/false`
It was also noted that the `git-remote-helper` is needed alongside the `rad`
binary for some of the acceptance tests to work.