rad:zwTxygwuz5LDGBq255RA2CbNGrz8
radicle-ci-brokerd537fd39d134550a61e8f83b1554d1235c280f2a
{ "request": "trigger", "version": 1, "event_type": "push", "repository": { "id": "rad:zwTxygwuz5LDGBq255RA2CbNGrz8", "name": "radicle-ci-broker", "description": "Radicle CI broker", "private": false, "default_branch": "main", "delegates": [ "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV", "did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT" ] }, "pusher": { "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV", "alias": "liw" }, "before": "d537fd39d134550a61e8f83b1554d1235c280f2a", "after": "d537fd39d134550a61e8f83b1554d1235c280f2a", "branch": "", "commits": [ "d537fd39d134550a61e8f83b1554d1235c280f2a" ] }
.radicle/native.yaml
shell: | cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- -Dwarnings cargo build --all-targets --workspace cargo doc --workspace cargo test --workspace --no-fail-fast subplot docgen ci-broker.subplot -o doc/ci-broker.html subplot docgen doc/userguide.subplot -o doc/userguide.html make -C doc publish
git clone /home/_rad/.radicle/storage/zwTxygwuz5LDGBq255RA2CbNGrz8 /srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src
git config advice.detachedHead false
git checkout d537fd39d134550a61e8f83b1554d1235c280f2a
git show d537fd39d134550a61e8f83b1554d1235c280f2a
timeout 600 bash -c set -xeuo pipefail
cargo --version
rustc --version
cargo fmt --check
cargo clippy --all-targets --workspace -- -Dwarnings
cargo build --all-targets --workspace
cargo doc --workspace
cargo test --workspace --no-fail-fast
subplot docgen ci-broker.subplot -o doc/ci-broker.html
subplot docgen doc/userguide.subplot -o doc/userguide.html
make -C doc publish
git clone /home/_rad/.radicle/storage/zwTxygwuz5LDGBq255RA2CbNGrz8 /srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src
Command arguments:
"git"
"clone"
"/home/_rad/.radicle/storage/zwTxygwuz5LDGBq255RA2CbNGrz8"
"/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src"
In directory: /
Exit code: 0
Output (stdout and stderr):
Cloning into '/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src'... done.
git config advice.detachedHead false
Command arguments:
"git"
"config"
"advice.detachedHead"
"false"
In directory: /srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src
Exit code: 0
git checkout d537fd39d134550a61e8f83b1554d1235c280f2a
Command arguments:
"git"
"checkout"
"d537fd39d134550a61e8f83b1554d1235c280f2a"
In directory: /srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src
Exit code: 0
Output (stdout and stderr):
HEAD is now at d537fd3 feat: filter on originating node for an event
git show d537fd39d134550a61e8f83b1554d1235c280f2a
Command arguments:
"git"
"show"
"d537fd39d134550a61e8f83b1554d1235c280f2a"
In directory: /srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src
Exit code: 0
Output (stdout and stderr):
commit d537fd39d134550a61e8f83b1554d1235c280f2a Author: Lars Wirzenius <liw@liw.fi> Date: Mon Oct 21 13:48:47 2024 +0300 feat: filter on originating node for an event Add the `Node(nid)` event filter. Add the `from_node` field to the `BranchDeleted` event so that it too can be filtered based on node. Adjust debug logging for event filtering so that it reports the filtering decision. Signed-off-by: Lars Wirzenius <liw@liw.fi> diff --git a/doc/userguide.md b/doc/userguide.md index 0f8d40f..04a9992 100644 --- a/doc/userguide.md +++ b/doc/userguide.md @@ -76,11 +76,12 @@ A branch has been updated. A branch has been deleted. -| Event | fields | field types | -|:----------------|:--------------------|:------------| -| `BranchDeleted` | `repo` | `RepoId` | -| | `branch` | `RefString` | -| | `tip` | ` Oid` | +| Event | fields | field types | +|:----------------|:------------|:------------| +| `BranchDeleted` | `from_node` | `NodeId` | +| | `repo` | `RepoId` | +| | `branch` | `RefString` | +| | `tip` | ` Oid` | ## `PatchCreated` @@ -114,6 +115,7 @@ Otherwise it is discarded and does not trigger a CI run. | Condition | Meaning | |:----------------|:----------------------------------------------------------| +| `Node` | Event originated from a specific node, identified by ID | | `Repository` | Event refers to a specific repository, identified by ID | | `Branch` | Event refers to a specific Git branch | | `BranchCreated` | Branch was created | diff --git a/src/ci_event.rs b/src/ci_event.rs index 5937579..7398902 100644 --- a/src/ci_event.rs +++ b/src/ci_event.rs @@ -37,6 +37,7 @@ pub enum CiEventV1 { old_tip: Oid, }, BranchDeleted { + from_node: NodeId, repo: RepoId, branch: RefString, tip: Oid, @@ -157,6 +158,7 @@ impl CiEvent { } } RefUpdate::Deleted { name, oid } => CiEventV1::BranchDeleted { + from_node: *remote, repo: *rid, branch: branch(name, update)?, tip: *oid, @@ -402,8 +404,9 @@ mod test { Ok(events) if !events.is_empty() => { for e in events { match e { - CiEvent::V1(CiEventV1::BranchDeleted { repo, branch, tip }) - if repo == rid && branch == main && tip == oid => {} + CiEvent::V1(CiEventV1::BranchDeleted { + repo, branch, tip, .. + }) if repo == rid && branch == main && tip == oid => {} _ => panic!("should not succeed that way"), } } diff --git a/src/filter.rs b/src/filter.rs index 2882fc7..cd9b399 100644 --- a/src/filter.rs +++ b/src/filter.rs @@ -2,7 +2,7 @@ use std::path::{Path, PathBuf}; use serde::{Deserialize, Serialize}; -use radicle::{cob::patch::PatchId, git::RefString, prelude::RepoId}; +use radicle::{cob::patch::PatchId, git::RefString, node::NodeId, prelude::RepoId}; use radicle_git_ext::Oid; use crate::{ @@ -38,6 +38,9 @@ pub enum EventFilter { /// Patch was updated, PatchUpdated, + /// Change originated from specific node. + Node(NodeId), + /// Allow any event. Allow, @@ -56,7 +59,6 @@ pub enum EventFilter { impl EventFilter { pub fn allows(&self, event: &CiEvent) -> bool { - logger::debug2(format!("EventFilter::allows: event={event:?}")); match self { Self::Allow => return true, Self::Deny => return false, @@ -66,39 +68,75 @@ impl EventFilter { _ => (), } - match event { + let decision = match event { CiEvent::V1(CiEventV1::Shutdown) => true, - CiEvent::V1(CiEventV1::BranchCreated { repo, branch, .. }) => match self { + CiEvent::V1(CiEventV1::BranchCreated { + from_node, + repo, + branch, + .. + }) => match self { + Self::Node(wantedc) => from_node == wantedc, Self::Repository(wanted) => repo == wanted, Self::Branch(wanted) => branch == wanted, Self::BranchCreated => true, _ => false, }, - CiEvent::V1(CiEventV1::BranchUpdated { repo, branch, .. }) => match self { + CiEvent::V1(CiEventV1::BranchUpdated { + from_node, + repo, + branch, + .. + }) => match self { + Self::Node(wanted) => from_node == wanted, Self::Repository(wanted) => repo == wanted, Self::Branch(wanted) => branch == wanted, Self::BranchUpdated => true, _ => false, }, - CiEvent::V1(CiEventV1::BranchDeleted { repo, branch, .. }) => match self { + CiEvent::V1(CiEventV1::BranchDeleted { + from_node, + repo, + branch, + .. + }) => match self { + Self::Node(wanted) => from_node == wanted, Self::Repository(wanted) => repo == wanted, Self::Branch(wanted) => branch == wanted, Self::BranchDeleted => true, _ => false, }, - CiEvent::V1(CiEventV1::PatchCreated { repo, patch, .. }) => match self { + CiEvent::V1(CiEventV1::PatchCreated { + from_node, + repo, + patch, + .. + }) => match self { + Self::Node(wanted) => from_node == wanted, Self::Repository(wanted) => repo == wanted, Self::Patch(wanted) => *patch == PatchId::from(wanted), Self::PatchCreated => true, _ => false, }, - CiEvent::V1(CiEventV1::PatchUpdated { repo, patch, .. }) => match self { + CiEvent::V1(CiEventV1::PatchUpdated { + from_node, + repo, + patch, + .. + }) => match self { + Self::Node(wanted) => from_node == wanted, Self::Repository(wanted) => repo == wanted, Self::Patch(wanted) => *patch == PatchId::from(wanted), Self::PatchUpdated => true, _ => false, }, - } + }; + + logger::debug2(format!( + "EventFilter::allows: decision={decision} event={event:?}" + )); + + decision } pub fn from_file(filename: &Path) -> Result<Vec<Self>, FilterError> { @@ -132,6 +170,10 @@ mod test { Did::decode("did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV").unwrap() } + fn other_did() -> Did { + Did::decode("did:key:z6MkfXa53s1ZSFy8rktvyXt5ADCojnxvjAoQpzajaXyLqG5n").unwrap() + } + fn rid() -> RepoId { const RID: &str = "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5"; RepoId::from_urn(RID).unwrap() @@ -194,7 +236,12 @@ mod test { tip, old_tip, }), - CiEvent::V1(CiEventV1::BranchDeleted { repo, branch, tip }), + CiEvent::V1(CiEventV1::BranchDeleted { + from_node: did.into(), + repo, + branch, + tip, + }), CiEvent::V1(CiEventV1::PatchCreated { from_node: did.into(), repo, @@ -460,6 +507,20 @@ mod test { } } + #[test] + fn allows_all_for_right_node() { + let filter = EventFilter::Node(*did()); + let events = all_events(did(), rid(), refstring("main"), patch_id(), oid(), oid()); + assert!(events.iter().all(|e| filter.allows(e))); + } + + #[test] + fn allows_none_for_wrong_node() { + let filter = EventFilter::Node(*other_did()); + let events = all_events(did(), rid(), refstring("main"), patch_id(), oid(), oid()); + assert!(!events.iter().any(|e| filter.allows(e))); + } + #[test] fn allows_any_event() { let filter = EventFilter::Allow; diff --git a/src/pages.rs b/src/pages.rs index c580016..3fb616c 100644 --- a/src/pages.rs +++ b/src/pages.rs @@ -196,9 +196,9 @@ impl PageData { tip, old_tip: _, }) => render_event(repo, branch, tip), - CiEvent::V1(CiEventV1::BranchDeleted { repo, branch, tip }) => { - render_event(repo, branch, tip) - } + CiEvent::V1(CiEventV1::BranchDeleted { + repo, branch, tip, .. + }) => render_event(repo, branch, tip), CiEvent::V1(CiEventV1::PatchCreated { from_node: _, repo,
timeout 600 bash -c set -xeuo pipefail
cargo --version
rustc --version
cargo fmt --check
cargo clippy --all-targets --workspace -- -Dwarnings
cargo build --all-targets --workspace
cargo doc --workspace
cargo test --workspace --no-fail-fast
subplot docgen ci-broker.subplot -o doc/ci-broker.html
subplot docgen doc/userguide.subplot -o doc/userguide.html
make -C doc publish
Command arguments:
"timeout"
"600"
"bash"
"-c"
"set -xeuo pipefail\ncargo --version\nrustc --version\n\ncargo fmt --check\ncargo clippy --all-targets --workspace -- -Dwarnings\ncargo build --all-targets --workspace\ncargo doc --workspace\ncargo test --workspace --no-fail-fast\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc publish\n"
In directory: /srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src
Exit code: 0
Output (stdout and stderr):
+ cargo --version cargo 1.80.1 (376290515 2024-07-16) + rustc --version rustc 1.80.1 (3f5fd8dd4 2024-08-06) + cargo fmt --check + cargo clippy --all-targets --workspace -- -Dwarnings Compiling proc-macro2 v1.0.86 Compiling unicode-ident v1.0.13 Compiling version_check v0.9.5 Compiling libc v0.2.158 Compiling typenum v1.17.0 Checking cfg-if v1.0.0 Compiling serde v1.0.210 Compiling shlex v1.3.0 Compiling thiserror v1.0.63 Compiling memchr v2.7.4 Compiling once_cell v1.20.0 Compiling byteorder v1.5.0 Compiling syn v1.0.109 Compiling bitflags v2.6.0 Checking subtle v2.6.1 Compiling rustix v0.38.37 Compiling crossbeam-utils v0.8.20 Compiling pkg-config v0.3.30 Compiling linux-raw-sys v0.4.14 Compiling anyhow v1.0.89 Compiling itoa v1.0.11 Compiling generic-array v0.14.7 Compiling ahash v0.8.11 Compiling log v0.4.22 Compiling regex-syntax v0.8.4 Checking cpufeatures v0.2.14 Compiling num-conv v0.1.0 Compiling allocator-api2 v0.2.18 Compiling utf8parse v0.2.2 Compiling aho-corasick v1.1.3 Compiling same-file v1.0.6 Compiling time-core v0.1.2 Compiling anstyle-parse v0.2.5 Compiling time-macros v0.2.18 Compiling walkdir v2.5.0 Compiling colorchoice v1.0.2 Compiling ucd-trie v0.1.6 Compiling anstyle v1.0.8 Compiling is_terminal_polyfill v1.70.1 Compiling anstyle-query v1.1.1 Compiling bstr v1.10.0 Compiling quote v1.0.37 Compiling heck v0.5.0 Compiling unic-common v0.9.0 Compiling anstream v0.6.15 Compiling powerfmt v0.2.0 Compiling vcpkg v0.2.15 Compiling syn v2.0.77 Compiling jobserver v0.1.32 Compiling getrandom v0.2.15 Compiling crossbeam-epoch v0.9.18 Compiling unic-char-range v0.9.0 Compiling libm v0.2.8 Compiling rand_core v0.6.4 Compiling doc-comment v0.3.3 Compiling cc v1.1.19 Compiling unicode-width v0.1.13 Compiling crossbeam-deque v0.8.5 Compiling unic-char-property v0.9.0 Compiling deranged v0.3.11 Compiling unic-ucd-version v0.9.0 Compiling proc-macro-error-attr v1.0.4 Compiling unicase v2.7.0 Compiling encoding_rs v0.8.34 Compiling serde_json v1.0.128 Checking tinyvec_macros v0.1.1 Compiling strsim v0.11.1 Compiling arraydeque v0.5.1 Compiling fastrand v2.1.1 Checking crypto-common v0.1.6 Checking block-buffer v0.10.4 Checking block-padding v0.3.3 Compiling clap_lex v0.7.2 Checking universal-hash v0.5.1 Checking digest v0.10.7 Checking inout v0.1.3 Checking tinyvec v1.8.0 Checking cipher v0.4.4 Compiling clap_builder v4.5.17 Compiling unic-ucd-segment v0.9.0 Compiling proc-macro-error v1.0.4 Checking signature v1.6.4 Compiling pulldown-cmark v0.12.1 Compiling time v0.3.36 Compiling unicode-linebreak v0.1.5 Compiling tempfile v3.12.0 Compiling regex-automata v0.4.7 Compiling ryu v1.0.18 Compiling amplify_syn v2.0.1 Compiling smawk v0.3.2 Compiling deunicode v1.6.0 Checking opaque-debug v0.3.1 Compiling textwrap v0.16.1 Checking unicode-normalization v0.1.23 Compiling humansize v2.1.3 Compiling unic-segment v0.9.0 Compiling slug v0.1.6 Checking ed25519 v1.5.3 Compiling getopts v0.2.21 Compiling libz-sys v1.1.20 Compiling pikchr v0.1.3 Compiling libgit2-sys v0.17.0+1.8.1 Compiling subplot v0.11.0 Checking ascii v1.1.0 Checking percent-encoding v2.3.1 Compiling humantime v2.1.0 Compiling utf8-width v0.1.7 Compiling pulldown-cmark-escape v0.11.0 Checking amplify_num v0.5.3 Checking unicode-bidi v0.3.15 Checking ct-codecs v1.1.2 Compiling lazy_static v1.5.0 Checking form_urlencoded v1.2.1 Checking ec25519 v0.1.0 Compiling html-escape v0.2.13 Compiling sqlite3-src v0.5.1 Checking polyval v0.6.2 Compiling amplify_derive v4.0.1 Checking idna v0.5.0 Checking sha2 v0.10.8 Compiling tracing-core v0.1.32 Checking base64ct v1.6.0 Checking keccak v0.1.5 Compiling line-col v0.2.1 Compiling pin-project-lite v0.2.14 Compiling file_diff v1.0.0 Compiling base64 v0.22.1 Checking pem-rfc7468 v0.7.0 Checking sha3 v0.10.8 Checking ghash v0.5.1 Checking aes v0.8.4 Checking ctr v0.9.2 Checking aead v0.5.2 Checking equivalent v1.0.1 Checking base32 v0.4.0 Compiling data-encoding v2.6.0 Checking hashbrown v0.14.5 Compiling cfg_aliases v0.2.1 Compiling nix v0.29.0 Checking blowfish v0.9.1 Checking ssh-encoding v0.2.0 Compiling regex v1.10.6 Compiling globset v0.4.15 Checking aes-gcm v0.10.3 Checking poly1305 v0.8.0 Checking cbc v0.1.2 Checking chacha20 v0.9.1 Checking pbkdf2 v0.12.2 Compiling env_filter v0.1.2 Checking zeroize v1.8.1 Checking radicle-std-ext v0.1.0 Compiling ignore v0.4.23 Checking indexmap v2.5.0 Compiling adler2 v2.0.0 Compiling env_logger v0.11.5 Compiling miniz_oxide v0.8.0 Checking ssh-cipher v0.2.0 Checking bcrypt-pbkdf v0.10.0 Checking rand v0.8.5 Compiling data-encoding-macro-internal v0.1.13 Compiling xattr v1.3.1 Compiling filetime v0.2.25 Compiling crc32fast v1.4.2 Checking base-x v0.2.11 Compiling slog v2.7.0 Checking signature v2.2.0 Compiling tar v0.4.41 Compiling globwalk v0.9.1 Checking ssh-key v0.6.6 Compiling flate2 v1.0.33 Checking qcheck v1.0.0 Checking data-encoding-macro v0.1.15 Checking cvt v0.1.2 Checking multibase v0.9.1 Compiling glob v0.3.1 Checking terminal_size v0.3.0 Checking radicle-dag v0.9.0 Checking amplify v4.7.0 Compiling serde_yml v0.0.11 Checking normpath v1.3.0 Compiling radicle-surf v0.22.1 Checking fs_at v0.2.1 Checking base64 v0.21.7 Checking fs2 v0.4.3 Checking unescape v0.1.0 Checking remove_dir_all v0.8.3 Checking siphasher v1.0.1 Checking state v0.5.3 Checking crossbeam-channel v0.5.13 Checking shell-words v1.1.0 Checking libyml v0.0.4 Checking cyphergraphy v0.3.0 Checking arc-swap v1.7.1 Checking uuid v1.10.0 Checking cypheraddr v0.4.0 Checking slog-scope v4.4.0 Compiling serde_derive v1.0.210 Compiling thiserror-impl v1.0.63 Compiling zerocopy-derive v0.7.35 Compiling clap_derive v4.5.13 Compiling git-testament-derive v0.2.0 Compiling tracing-attributes v0.1.27 Checking socks5-client v0.4.1 Compiling culpa-macros v1.0.2 Checking cyphernet v0.5.2 Checking html-page v0.4.0 Compiling ctor v0.2.8 Compiling git-testament v0.2.5 Compiling zerocopy v0.7.35 Compiling pest v2.7.12 Compiling git-ref-format-core v0.3.1 Checking radicle-ssh v0.9.0 Compiling culpa v1.0.2 Compiling tracing v0.1.40 Compiling subplotlib-derive v0.11.0 Compiling ppv-lite86 v0.2.20 Compiling git-ref-format-macro v0.3.1 Compiling rand_chacha v0.3.1 Compiling clap v4.5.17 Compiling hashlink v0.8.4 Compiling hashlink v0.9.1 Compiling pest_meta v2.7.12 Compiling yaml-rust2 v0.8.1 Compiling tempfile-fast v0.3.4 Compiling pest_generator v2.7.12 Compiling pest_derive v2.7.12 Checking url v2.5.2 Checking nonempty v0.9.0 Checking localtime v1.3.1 Compiling serde_path_to_error v0.1.16 Checking git-ref-format v0.3.1 Compiling marked-yaml v0.7.1 Checking slog-json v2.6.1 Compiling roadmap v0.6.1 Compiling tera v1.20.0 Checking git2 v0.19.0 Checking radicle-git-ext v0.8.1 Compiling subplot-build v0.11.0 Compiling subplotlib v0.11.0 Compiling radicle-ci-broker v0.7.0 (/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src) Checking sqlite3-sys v0.15.2 Checking sqlite v0.32.0 Checking radicle-crypto v0.11.0 Checking radicle-cob v0.12.0 Checking radicle v0.13.0 Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.38s + cargo build --all-targets --workspace Compiling cfg-if v1.0.0 Compiling bitflags v2.6.0 Compiling memchr v2.7.4 Compiling once_cell v1.20.0 Compiling log v0.4.22 Compiling itoa v1.0.11 Compiling subtle v2.6.1 Compiling typenum v1.17.0 Compiling libc v0.2.158 Compiling regex-syntax v0.8.4 Compiling fastrand v2.1.1 Compiling percent-encoding v2.3.1 Compiling serde v1.0.210 Compiling thiserror v1.0.63 Compiling utf8parse v0.2.2 Compiling crossbeam-utils v0.8.20 Compiling is_terminal_polyfill v1.70.1 Compiling anstyle-parse v0.2.5 Compiling anstyle-query v1.1.1 Compiling cpufeatures v0.2.14 Compiling colorchoice v1.0.2 Compiling ryu v1.0.18 Compiling rustix v0.38.37 Compiling anstyle v1.0.8 Compiling ahash v0.8.11 Compiling anyhow v1.0.89 Compiling powerfmt v0.2.0 Compiling time-core v0.1.2 Compiling num-conv v0.1.0 Compiling getrandom v0.2.15 Compiling strsim v0.11.1 Compiling clap_lex v0.7.2 Compiling deranged v0.3.11 Compiling anstream v0.6.15 Compiling hashbrown v0.14.5 Compiling time-macros v0.2.18 Compiling rand_core v0.6.4 Compiling encoding_rs v0.8.34 Compiling aho-corasick v1.1.3 Compiling bstr v1.10.0 Compiling generic-array v0.14.7 Compiling pest v2.7.12 Compiling crossbeam-epoch v0.9.18 Compiling rand_chacha v0.3.1 Compiling tinyvec_macros v0.1.1 Compiling tinyvec v1.8.0 Compiling hashlink v0.8.4 Compiling crossbeam-deque v0.8.5 Compiling hashlink v0.9.1 Compiling rand v0.8.5 Compiling clap_builder v4.5.17 Compiling signature v1.6.4 Compiling utf8-width v0.1.7 Compiling crypto-common v0.1.6 Compiling block-buffer v0.10.4 Compiling block-padding v0.3.3 Compiling lazy_static v1.5.0 Compiling universal-hash v0.5.1 Compiling inout v0.1.3 Compiling digest v0.10.7 Compiling opaque-debug v0.3.1 Compiling html-escape v0.2.13 Compiling ed25519 v1.5.3 Compiling subplot v0.11.0 Compiling ascii v1.1.0 Compiling cipher v0.4.4 Compiling unicode-bidi v0.3.15 Compiling ct-codecs v1.1.2 Compiling yaml-rust2 v0.8.1 Compiling unicode-normalization v0.1.23 Compiling amplify_num v0.5.3 Compiling tempfile v3.12.0 Compiling linux-raw-sys v0.4.14 Compiling pulldown-cmark v0.12.1 Compiling regex-automata v0.4.7 Compiling pest_meta v2.7.12 Compiling time v0.3.36 Compiling idna v0.5.0 Compiling tempfile-fast v0.3.4 Compiling ec25519 v0.1.0 Compiling sha2 v0.10.8 Compiling polyval v0.6.2 Compiling libz-sys v1.1.20 Compiling tracing-core v0.1.32 Compiling form_urlencoded v1.2.1 Compiling git-ref-format-core v0.3.1 Compiling pest_generator v2.7.12 Compiling serde_path_to_error v0.1.16 Compiling serde_json v1.0.128 Compiling keccak v0.1.5 Compiling base64 v0.22.1 Compiling byteorder v1.5.0 Compiling marked-yaml v0.7.1 Compiling base64ct v1.6.0 Compiling clap v4.5.17 Compiling amplify v4.7.0 Compiling git-ref-format-macro v0.3.1 Compiling tracing v0.1.40 Compiling pem-rfc7468 v0.7.0 Compiling sha3 v0.10.8 Compiling roadmap v0.6.1 Compiling url v2.5.2 Compiling cyphergraphy v0.3.0 Compiling git-testament-derive v0.2.0 Compiling ghash v0.5.1 Compiling libgit2-sys v0.17.0+1.8.1 Compiling ctr v0.9.2 Compiling aes v0.8.4 Compiling aead v0.5.2 Compiling equivalent v1.0.1 Compiling base32 v0.4.0 Compiling ssh-encoding v0.2.0 Compiling sqlite3-src v0.5.1 Compiling blowfish v0.9.1 Compiling git-ref-format v0.3.1 Compiling cbc v0.1.2 Compiling git2 v0.19.0 Compiling regex v1.10.6 Compiling globset v0.4.15 Compiling pest_derive v2.7.12 Compiling cypheraddr v0.4.0 Compiling chacha20 v0.9.1 Compiling pbkdf2 v0.12.2 Compiling poly1305 v0.8.0 Compiling radicle-std-ext v0.1.0 Compiling data-encoding v2.6.0 Compiling aes-gcm v0.10.3 Compiling zeroize v1.8.1 Compiling env_filter v0.1.2 Compiling ignore v0.4.23 Compiling ssh-cipher v0.2.0 Compiling socks5-client v0.4.1 Compiling env_logger v0.11.5 Compiling indexmap v2.5.0 Compiling data-encoding-macro v0.1.15 Compiling bcrypt-pbkdf v0.10.0 Compiling sqlite3-sys v0.15.2 Compiling git-testament v0.2.5 Compiling xattr v1.3.1 Compiling crc32fast v1.4.2 Compiling filetime v0.2.25 Compiling base-x v0.2.11 Compiling signature v2.2.0 Compiling flate2 v1.0.33 Compiling sqlite v0.32.0 Compiling tar v0.4.41 Compiling multibase v0.9.1 Compiling ssh-key v0.6.6 Compiling nix v0.29.0 Compiling cyphernet v0.5.2 Compiling radicle-ssh v0.9.0 Compiling nonempty v0.9.0 Compiling globwalk v0.9.1 Compiling qcheck v1.0.0 Compiling tera v1.20.0 Compiling cvt v0.1.2 Compiling culpa v1.0.2 Compiling slog v2.7.0 Compiling terminal_size v0.3.0 Compiling radicle-dag v0.9.0 Compiling base64 v0.21.7 Compiling normpath v1.3.0 Compiling subplotlib-derive v0.11.0 Compiling localtime v1.3.1 Compiling fs2 v0.4.3 Compiling radicle-surf v0.22.1 Compiling crossbeam-channel v0.5.13 Compiling arc-swap v1.7.1 Compiling state v0.5.3 Compiling fs_at v0.2.1 Compiling siphasher v1.0.1 Compiling shell-words v1.1.0 Compiling remove_dir_all v0.8.3 Compiling libyml v0.0.4 Compiling unescape v0.1.0 Compiling slog-scope v4.4.0 Compiling html-page v0.4.0 Compiling uuid v1.10.0 Compiling radicle-git-ext v0.8.1 Compiling slog-json v2.6.1 Compiling radicle-crypto v0.11.0 Compiling serde_yml v0.0.11 Compiling radicle-cob v0.12.0 Compiling radicle v0.13.0 Compiling subplot-build v0.11.0 Compiling subplotlib v0.11.0 Compiling radicle-ci-broker v0.7.0 (/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src) Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.00s + cargo doc --workspace Checking unicode-ident v1.0.13 Documenting unicode-ident v1.0.13 Documenting cfg-if v1.0.0 Documenting typenum v1.17.0 Documenting libc v0.2.158 Documenting subtle v2.6.1 Documenting bitflags v2.6.0 Documenting cpufeatures v0.2.14 Documenting tinyvec_macros v0.1.1 Documenting opaque-debug v0.3.1 Documenting memchr v2.7.4 Documenting ed25519 v1.5.3 Documenting log v0.4.22 Documenting ascii v1.1.0 Documenting ct-codecs v1.1.2 Documenting percent-encoding v2.3.1 Checking proc-macro2 v1.0.86 Documenting linux-raw-sys v0.4.14 Documenting unicode-bidi v0.3.15 Documenting amplify_num v0.5.3 Checking git-ref-format-core v0.3.1 Checking quote v1.0.37 Documenting tinyvec v1.8.0 Documenting proc-macro2 v1.0.86 Documenting byteorder v1.5.0 Checking syn v2.0.77 Checking syn v1.0.109 Documenting itoa v1.0.11 Documenting form_urlencoded v1.2.1 Documenting fastrand v2.1.1 Documenting keccak v0.1.5 Documenting base64ct v1.6.0 Documenting base32 v0.4.0 Documenting hashbrown v0.14.5 Documenting equivalent v1.0.1 Checking data-encoding v2.6.0 Documenting sqlite3-src v0.5.1 Documenting unicode-normalization v0.1.23 Documenting quote v1.0.37 Documenting radicle-std-ext v0.1.0 Documenting zeroize v1.8.1 Documenting rustix v0.38.37 Documenting ryu v1.0.18 Checking amplify_syn v2.0.1 Checking proc-macro-error v1.0.4 Documenting data-encoding-macro-internal v0.1.13 Documenting once_cell v1.20.0 Documenting data-encoding v2.6.0 Documenting pem-rfc7468 v0.7.0 Documenting utf8parse v0.2.2 Documenting base-x v0.2.11 Documenting powerfmt v0.2.0 Documenting signature v2.2.0 Documenting aho-corasick v1.1.3 Documenting serde_derive v1.0.210 Documenting amplify_syn v2.0.1 Documenting generic-array v0.14.7 Documenting thiserror-impl v1.0.63 Documenting proc-macro-error-attr v1.0.4 Documenting idna v0.5.0 Documenting indexmap v2.5.0 Documenting anstyle-parse v0.2.5 Documenting cvt v0.1.2 Documenting deranged v0.3.11 Documenting tempfile v3.12.0 Documenting time-macros v0.2.18 Documenting getrandom v0.2.15 Documenting libz-sys v1.1.20 Documenting data-encoding-macro v0.1.15 Documenting sqlite3-sys v0.15.2 Documenting crypto-common v0.1.6 Documenting block-padding v0.3.3 Documenting block-buffer v0.10.4 Documenting amplify_derive v4.0.1 Documenting thiserror v1.0.63 Documenting ec25519 v0.1.0 Documenting proc-macro-error v1.0.4 Documenting rand_core v0.6.4 Documenting multibase v0.9.1 Documenting libgit2-sys v0.17.0+1.8.1 Documenting nix v0.29.0 Documenting sqlite v0.32.0 Documenting num-conv v0.1.0 Documenting inout v0.1.3 Documenting anstyle v1.0.8 Documenting anstyle-query v1.1.1 Documenting is_terminal_polyfill v1.70.1 Documenting serde v1.0.210 Documenting rand v0.8.5 Documenting radicle-ssh v0.9.0 Documenting digest v0.10.7 Documenting universal-hash v0.5.1 Documenting git-ref-format-macro v0.3.1 Documenting aead v0.5.2 Documenting colorchoice v1.0.2 Documenting amplify v4.7.0 Documenting cipher v0.4.4 Documenting regex-syntax v0.8.4 Documenting time-core v0.1.2 Documenting terminal_size v0.3.0 Documenting culpa-macros v1.0.2 Documenting radicle-dag v0.9.0 Compiling radicle-ci-broker v0.7.0 (/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src) Documenting qcheck v1.0.0 Documenting anstream v0.6.15 Documenting fs_at v0.2.1 Documenting slog v2.7.0 Documenting sha2 v0.10.8 Documenting sha3 v0.10.8 Documenting pbkdf2 v0.12.2 Documenting time v0.3.36 Documenting polyval v0.6.2 Documenting cyphergraphy v0.3.0 Documenting poly1305 v0.8.0 Documenting crossbeam-utils v0.8.20 Documenting heck v0.5.0 Checking heck v0.5.0 Documenting lazy_static v1.5.0 Documenting clap_lex v0.7.2 Documenting aes v0.8.4 Documenting ctr v0.9.2 Documenting chacha20 v0.9.1 Documenting cbc v0.1.2 Documenting ssh-encoding v0.2.0 Documenting blowfish v0.9.1 Documenting regex-automata v0.4.7 Documenting ghash v0.5.1 Documenting url v2.5.2 Documenting git-ref-format-core v0.3.1 Documenting cypheraddr v0.4.0 Documenting serde_json v1.0.128 Documenting nonempty v0.9.0 Documenting utf8-width v0.1.7 Documenting strsim v0.11.1 Documenting normpath v1.3.0 Documenting crossbeam-channel v0.5.13 Documenting clap_derive v4.5.13 Documenting localtime v1.3.1 Documenting culpa v1.0.2 Documenting bcrypt-pbkdf v0.10.0 Documenting aes-gcm v0.10.3 Documenting html-escape v0.2.13 Documenting git2 v0.19.0 Documenting git-ref-format v0.3.1 Documenting filetime v0.2.25 Documenting clap_builder v4.5.17 Documenting socks5-client v0.4.1 Documenting remove_dir_all v0.8.3 Documenting fs2 v0.4.3 Documenting subplotlib-derive v0.11.0 Documenting arc-swap v1.7.1 Documenting unescape v0.1.0 Documenting state v0.5.3 Documenting siphasher v1.0.1 Documenting ssh-cipher v0.2.0 Documenting libyml v0.0.4 Documenting shell-words v1.1.0 Documenting base64 v0.22.1 Documenting html-page v0.4.0 Documenting slog-json v2.6.1 Documenting uuid v1.10.0 Documenting anyhow v1.0.89 Documenting regex v1.10.6 Documenting cyphernet v0.5.2 Documenting slog-scope v4.4.0 Documenting ssh-key v0.6.6 Documenting clap v4.5.17 Documenting serde_yml v0.0.11 Documenting subplotlib v0.11.0 Documenting radicle-git-ext v0.8.1 Documenting radicle-crypto v0.11.0 Documenting radicle-surf v0.22.1 Documenting radicle-cob v0.12.0 Documenting radicle v0.13.0 Documenting radicle-ci-broker v0.7.0 (/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src) Finished `dev` profile [unoptimized + debuginfo] target(s) in 33.92s Generated /srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src/target/doc/radicle_ci_broker/index.html and 3 other files + cargo test --workspace --no-fail-fast Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s Running unittests src/lib.rs (target/debug/deps/radicle_ci_broker-2451bfca66cd8825) running 66 tests test broker::test::does_not_find_unknown_repo ... ok test broker::test::adds_adapter ... ok test broker::test::does_not_have_a_default_adapter_initially ... ok test adapter::test::adapter_reports_failure ... ok test adapter::test::adapter_is_killed_before_any_messages ... ok test adapter::test::adapter_does_not_exist ... ok test adapter::test::adapter_is_not_executable ... ok test ci_event::test::branch_created ... ok test ci_event::test::nothing_updated ... ok test ci_event::test::branch_deleted ... ok test adapter::test::adapter_is_killed_after_second_message ... ok test ci_event::test::patch_created ... ok test ci_event::test::skipped ... ok test adapter::test::adapter_reports_success ... ok test ci_event::test::branch_updated ... ok test ci_event::test::patch_updated ... ok test ci_event::test_namespaced_branch::empty ... ok test ci_event::test_namespaced_branch::has_namespace ... ok test ci_event::test_namespaced_branch::has_namespace_with_path ... ok test ci_event::test_namespaced_branch::lacks_namespace ... ok test filter::test::allows_all_for_default_repository ... ok test ci_event::test_patch_id::has_namespace ... ok test ci_event::test_patch_id::has_namespace_with_path ... ok test filter::test::allows_all_for_main_branch ... ok test ci_event::test_patch_id::empty ... ok test ci_event::test_patch_id::lacks_namespace ... ok test filter::test::allows_any_event ... ok test filter::test::allows_branch_creation ... ok test filter::test::allows_all_for_right_node ... ok test filter::test::allows_branch_deletion ... ok test filter::test::allows_branch_update ... ok test filter::test::allows_if_all_allow ... ok test filter::test::allows_if_any_allows ... ok test filter::test::allows_no_event ... ok test filter::test::allows_opposite ... ok test filter::test::allows_shutdown ... ok test filter::test::allows_patch_creation ... ok test filter::test::allows_patch_update ... ok test filter::test::allows_none_for_wrong_node ... ok test filter::test::allows_specific_patch ... ok test filter::test::doesnt_allows_other_patch ... ok test filter::test::only_allows_branch_creation ... ok test filter::test::doesnt_allow_any_for_other_branch ... ok test filter::test::only_allows_branch_deletion ... ok test filter::test::only_allows_branch_update ... ok test msg::test_push_branch::get_no_push_branch ... ok test filter::test::doesnt_allow_any_for_other_repository ... ok test msg::test_push_branch::get_push_branch ... ok test filter::test::only_allows_patch_creation ... ok test filter::test::only_allows_patch_update ... ok test run::test::serialize_run_state ... ok test adapter::test::adapter_has_bad_interpreter ... ok test adapter::test::adapter_is_killed_after_first_message ... ok test adapter::test::adapter_exits_nonzero ... ok test adapter::test::adapter_produces_as_bad_message ... ok test adapter::test::adapter_outputs_too_many_messages ... ok test adapter::test::adapter_first_message_isnt_triggered ... ok test msg::trigger_from_ci_event_tests::trigger_push_from_branch_updated ... ok test msg::trigger_from_ci_event_tests::trigger_push_from_branch_created ... ok test msg::trigger_from_ci_event_tests::trigger_patch_from_patch_created ... ok test msg::trigger_from_ci_event_tests::trigger_patch_from_patch_updated ... ok test broker::test::finds_default_adapter_for_unknown_repo ... ok test broker::test::has_no_adapters_initially ... ok test broker::test::sets_a_default_adapter_initially ... ok test broker::test::adapter_fails ... ok test broker::test::executes_adapter ... ok test result: ok. 66 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.97s Running unittests src/bin/cib.rs (target/debug/deps/cib-ca399d4216427adf) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/bin/cibtool.rs (target/debug/deps/cibtool-6339b9b0bbf25f06) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/bin/synthetic-events.rs (target/debug/deps/synthetic_events-4582c07f5816de5d) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/subplot.rs (target/debug/deps/subplot-10afb6a41619c650) running 38 tests test adapter_with_url_runs_successfully ... ok test dummy_adapter_runs_successfully ... ok test can_add_shutdown_event_to_queue ... ok test event_synthesizer_terminates_after_first_connection ... ok test allows_setting_minimum_log_level ... ok test don_t_insert_event_for_non_existent_repository ... ok test convert_recorded_node_events_into_ci_events ... ok test add_information_about_run_that_s_finished_successfully_to_database ... ok test add_information_about_triggered_run_to_database ... ok test add_information_about_run_that_s_running_to_database ... ok test can_trigger_a_ci_run ... ok test logs_termination_due_to_error ... ok test add_information_about_run_that_s_finished_in_failure_to_database ... ok test adapter_can_provide_url_for_info_on_run ... ok test don_t_insert_events_into_queue_when_not_allowed_by_filter ... ok test events_can_be_queued_and_removed_from_queue ... ok test filter_recorded_ci_events ... ok test shows_config_as_json ... ok test gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file ... ok test can_remove_all_queued_events ... ok test gives_helpful_error_message_if_node_socket_can_t_be_found ... ok test insert_events_into_queue ... ok test we_can_run_rad ... ok test record_node_events ... ok test produces_a_json_status_file ... ok test logs_start_and_successful_end ... ok test reports_it_version ... ok test produces_a_report_page_upon_request ... ok test logs_adapter_stderr_output ... ok test shuts_down_when_requested ... ok test process_queued_events ... ok test stops_if_the_node_connection_breaks ... ok test smoke_test__runs_adapter ... ok test update_and_show_information_about_run_to_running ... ok test acceptance_criteria_for_upgrades has been running for over 60 seconds test count_in_a_single_process has been running for over 60 seconds test count_in_concurrent_processes has been running for over 60 seconds test insert_many_events_into_queue has been running for over 60 seconds test count_in_a_single_process ... ok test insert_many_events_into_queue ... ok test acceptance_criteria_for_upgrades ... ok test count_in_concurrent_processes ... ok test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 88.27s Doc-tests radicle_ci_broker running 1 test test src/msg.rs - msg::RunId (line 44) ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.86s + subplot docgen ci-broker.subplot -o doc/ci-broker.html INFO: Starting Subplot INFO: Subplot finished successfully + subplot docgen doc/userguide.subplot -o doc/userguide.html INFO: Starting Subplot INFO: Subplot finished successfully + make -C doc publish make: Entering directory '/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src/doc' plantuml -tsvg --output=. architecture.uml plantuml -tsvg --output=. architecture-ext.uml dot -Tsvg comp.dot > comp.svg.tmp mv comp.svg.tmp comp.svg dot -Tsvg comp-ext.dot > comp-ext.svg.tmp mv comp-ext.svg.tmp comp-ext.svg pandoc -V date="Version: $(git describe --long --dirty --all)" --toc --number-sections --standalone --self-contained architecture.md -o architecture.html bash publish.sh + '[' /srv/pages/ci-broker '!=' unset ']' + echo web root set, publishing arch doc there web root set, publishing arch doc there + install -d -m 0755 /srv/pages/ci-broker + install -m 0644 ./architecture.html ./ci-broker.html ./userguide.html /srv/pages/ci-broker make: Leaving directory '/srv/http/d4584d1e-f076-42d6-8025-4887c714517e/src/doc'