Log from Radicle native CI

Request message

{
  "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": "c377b05a97dc21e212539430b058d8f3891c7b9c",
  "after": "c377b05a97dc21e212539430b058d8f3891c7b9c",
  "branch": "",
  "commits": [
    "c377b05a97dc21e212539430b058d8f3891c7b9c",
    "d76efe40073b0dcde00c2cb20768259aa10f6f66",
    "842ce74f0227ac6fe584ce3555d2f5ca477ce318"
  ]
}

.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

Table of contents

Run: git clone /home/_rad/.radicle/storage/zwTxygwuz5LDGBq255RA2CbNGrz8 /srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src

Command arguments:

In directory: /

Exit code: 0

Output (stdout and stderr):

Cloning into '/srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src'...
done.

Run: git config advice.detachedHead false

Command arguments:

In directory: /srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src

Exit code: 0

Run: git checkout c377b05a97dc21e212539430b058d8f3891c7b9c

Command arguments:

In directory: /srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src

Exit code: 0

Output (stdout and stderr):

HEAD is now at c377b05 test: add step to install an adapter

Run: git show c377b05a97dc21e212539430b058d8f3891c7b9c

Command arguments:

In directory: /srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src

Exit code: 0

Output (stdout and stderr):

commit c377b05a97dc21e212539430b058d8f3891c7b9c
Author: Lars Wirzenius <liw@liw.fi>
Date:   Tue Nov 12 16:39:24 2024 +0200

    test: add step to install an adapter
    
    This is simpler to understand, for most readers of the subplot, than
    installing a file and adjusting its Unix permissions with chmod.
    
    Signed-off-by: Lars Wirzenius <liw@liw.fi>

diff --git a/ci-broker.md b/ci-broker.md
index a4da7a6..dd14f0f 100644
--- a/ci-broker.md
+++ b/ci-broker.md
@@ -242,6 +242,8 @@ _Who:_ `cib-devs`
 
 ~~~scenario
 given an installed CI broker
+given a CI adapter adapter.sh from dummy.sh
+
 given file radenv.sh
 given file setup-node.sh
 when I run bash radenv.sh bash setup-node.sh
@@ -253,8 +255,6 @@ when I run synthetic-events synt.sock refsfetched.json --log log.txt
 
 given a directory reports
 given file broker.yaml
-given file adapter.sh from dummy.sh
-when I run chmod +x adapter.sh
 
 when I run bash radenv.sh RAD_SOCKET=synt.sock cib --config broker.yaml process-events
 then stderr contains "CI broker starts"
@@ -490,6 +490,8 @@ _Who:_ `adapter-devs`, `node-ops`
 
 ~~~scenario
 given an installed CI broker
+given a CI adapter adapter.sh from dummy.sh
+
 given file radenv.sh
 given file setup-node.sh
 when I run bash radenv.sh bash setup-node.sh
@@ -499,8 +501,6 @@ when I run bash radenv.sh cibtool --db ci-broker.db event list --json
 
 given file broker.yaml
 given a directory reports
-given file adapter.sh from dummy.sh
-when I run chmod +x adapter.sh
 
 when I run bash radenv.sh cib --config broker.yaml queued
 then stderr contains "Mordor"
@@ -763,13 +763,12 @@ down.
 
 ~~~scenario
 given an installed CI broker
+given a CI adapter adapter.sh from dummy.sh
+
 given file radenv.sh
 given file setup-node.sh
 when I run bash radenv.sh bash setup-node.sh
 
-given file adapter.sh from dummy.sh
-when I run chmod +x adapter.sh
-
 when I run bash radenv.sh cibtool --db ci-broker.db event add --repo testy --ref main --commit HEAD
 when I run cibtool --db ci-broker.db event shutdown
 
@@ -1302,13 +1301,12 @@ when properly set up.
 
 ~~~scenario
 given an installed CI broker
+given a CI adapter adapter.sh from dummy.sh
+
 given file radenv.sh
 given file setup-node.sh
 when I run bash radenv.sh bash setup-node.sh
 
-given file adapter.sh from dummy.sh
-when I run chmod +x adapter.sh
-
 given file broker.yaml
 given a directory reports
 when I run bash radenv.sh cib --config broker.yaml queued
@@ -1410,6 +1408,8 @@ to be updated when a new release is made.
 
 ~~~scenario
 given an installed CI broker
+given a CI adapter adapter.sh from dummy.sh
+
 given file radenv.sh
 given file setup-node.sh
 when I run bash radenv.sh bash setup-node.sh
@@ -1418,9 +1418,6 @@ given file broker.yaml
 given file verify-upgrade
 given a directory reports
 
-given file adapter.sh from dummy.sh
-when I run chmod +x adapter.sh
-
 when I touch file run-list.txt
 when I run bash radenv.sh bash -x verify-upgrade run-list.txt 535b1592904125fbe62c3c8c383d7741d9f432ac
 when I run bash radenv.sh bash -x verify-upgrade run-list.txt 869b451728d16719b560df142b2d901cbaf3764c
diff --git a/ci-broker.yaml b/ci-broker.yaml
index 480d5a0..a9b1308 100644
--- a/ci-broker.yaml
+++ b/ci-broker.yaml
@@ -3,6 +3,11 @@
     rust:
       function: install_ci_broker
 
+- given: "a CI adapter {filename:path} from {embedded:file}"
+  impl:
+    rust:
+      function: install_adapter
+
 - then: "stdout has one line"
   impl:
     rust:
diff --git a/src/subplot.rs b/src/subplot.rs
index da96ee3..d014177 100644
--- a/src/subplot.rs
+++ b/src/subplot.rs
@@ -1,7 +1,14 @@
 // Implementations of Subplot scenario steps for the CI broker.
 
-use std::path::{Path, PathBuf};
+use std::{
+    fs::{set_permissions, Permissions},
+    io::Write,
+    os::unix::fs::PermissionsExt,
+    path::{Path, PathBuf},
+};
 
+use subplotlib::steplibrary::datadir::Datadir;
+use subplotlib::steplibrary::files::Files;
 use subplotlib::steplibrary::runcmd::Runcmd;
 
 #[derive(Debug, Default)]
@@ -35,6 +42,29 @@ fn bindir() -> PathBuf {
     path.canonicalize().unwrap()
 }
 
+#[step]
+#[context(SubplotContext)]
+#[context(Datadir)]
+#[context(Files)]
+fn install_adapter(context: &Datadir, filename: &Path, embedded: SubplotDataFile) {
+    eprintln!(
+        "install adapter {} from {}:\n{}",
+        filename.display(),
+        embedded.name().display(),
+        String::from_utf8_lossy(embedded.data()),
+    );
+    eprintln!("write {}", filename.display());
+    context.open_write(filename)?.write_all(embedded.data())?;
+    let realpath = context.canonicalise_filename(filename)?;
+    eprintln!(
+        "chmod {} (exists? {})",
+        realpath.display(),
+        realpath.exists()
+    );
+    let executable = Permissions::from_mode(0o755);
+    set_permissions(realpath, executable)?;
+}
+
 #[step]
 #[context(SubplotContext)]
 #[context(Runcmd)]

Run: 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:

In directory: /srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/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.89
   Compiling unicode-ident v1.0.13
   Compiling version_check v0.9.5
   Compiling libc v0.2.162
   Compiling typenum v1.17.0
    Checking cfg-if v1.0.0
   Compiling serde v1.0.214
   Compiling shlex v1.3.0
   Compiling thiserror v1.0.68
   Compiling memchr v2.7.4
   Compiling once_cell v1.20.2
   Compiling byteorder v1.5.0
   Compiling syn v1.0.109
   Compiling bitflags v2.6.0
    Checking subtle v2.6.1
    Checking stable_deref_trait v1.2.0
   Compiling rustix v0.38.39
   Compiling pkg-config v0.3.31
   Compiling crossbeam-utils v0.8.20
   Compiling anyhow v1.0.93
   Compiling linux-raw-sys v0.4.14
   Compiling log v0.4.22
   Compiling generic-array v0.14.7
   Compiling ahash v0.8.11
   Compiling itoa v1.0.11
   Compiling regex-syntax v0.8.5
    Checking cpufeatures v0.2.14
    Checking writeable v0.5.5
   Compiling time-core v0.1.2
   Compiling num-conv v0.1.0
    Checking litemap v0.7.3
   Compiling aho-corasick v1.1.3
   Compiling utf8parse v0.2.2
   Compiling same-file v1.0.6
   Compiling allocator-api2 v0.2.18
   Compiling anstyle-parse v0.2.6
   Compiling time-macros v0.2.18
   Compiling anstyle v1.0.10
   Compiling walkdir v2.5.0
   Compiling is_terminal_polyfill v1.70.1
    Checking icu_locid_transform_data v1.5.0
   Compiling quote v1.0.37
   Compiling anstyle-query v1.1.2
   Compiling colorchoice v1.0.3
   Compiling ucd-trie v0.1.7
   Compiling anstream v0.6.18
   Compiling bstr v1.10.0
   Compiling syn v2.0.87
    Checking icu_properties_data v1.5.0
   Compiling jobserver v0.1.32
   Compiling getrandom v0.2.15
   Compiling crossbeam-epoch v0.9.18
   Compiling libm v0.2.11
   Compiling heck v0.5.0
   Compiling unicode-width v0.1.14
   Compiling doc-comment v0.3.3
   Compiling cc v1.1.36
   Compiling rand_core v0.6.4
   Compiling unic-common v0.9.0
   Compiling vcpkg v0.2.15
   Compiling unic-char-range v0.9.0
   Compiling powerfmt v0.2.0
   Compiling unic-ucd-version v0.9.0
   Compiling crossbeam-deque v0.8.5
   Compiling unic-char-property v0.9.0
   Compiling proc-macro-error-attr v1.0.4
   Compiling encoding_rs v0.8.35
   Compiling deranged v0.3.11
    Checking utf16_iter v1.0.5
   Compiling fastrand v2.2.0
   Compiling serde_json v1.0.132
    Checking write16 v1.0.0
    Checking icu_normalizer_data v1.5.0
   Compiling clap_lex v0.7.2
    Checking utf8_iter v1.0.4
    Checking crypto-common v0.1.6
    Checking block-buffer v0.10.4
    Checking block-padding v0.3.3
   Compiling arraydeque v0.5.1
    Checking smallvec v1.13.2
   Compiling strsim v0.11.1
    Checking inout v0.1.3
    Checking universal-hash v0.5.1
    Checking digest v0.10.7
    Checking cipher v0.4.4
   Compiling unic-ucd-segment v0.9.0
   Compiling clap_builder v4.5.20
   Compiling proc-macro-error v1.0.4
   Compiling deunicode v1.6.0
   Compiling unicode-linebreak v0.1.5
    Checking signature v1.6.4
   Compiling tempfile v3.14.0
   Compiling pulldown-cmark v0.12.2
   Compiling ryu v1.0.18
   Compiling regex-automata v0.4.8
   Compiling time v0.3.36
    Checking opaque-debug v0.3.1
   Compiling amplify_syn v2.0.1
   Compiling smawk v0.3.2
   Compiling textwrap v0.16.1
   Compiling humansize v2.1.3
   Compiling slug v0.1.6
   Compiling unic-segment v0.9.0
    Checking ed25519 v1.5.3
   Compiling getopts v0.2.21
   Compiling subplot v0.11.0
    Checking percent-encoding v2.3.1
    Checking amplify_num v0.5.3
    Checking ct-codecs v1.1.2
   Compiling libz-sys v1.1.20
   Compiling pikchr v0.1.3
   Compiling libgit2-sys v0.17.0+1.8.1
   Compiling unicase v2.8.0
   Compiling humantime v2.1.0
   Compiling utf8-width v0.1.7
   Compiling pulldown-cmark-escape v0.11.0
   Compiling lazy_static v1.5.0
    Checking ascii v1.1.0
   Compiling html-escape v0.2.13
    Checking ec25519 v0.1.0
   Compiling sqlite3-src v0.5.1
    Checking form_urlencoded v1.2.1
   Compiling amplify_derive v4.0.1
    Checking polyval v0.6.2
    Checking sha2 v0.10.8
   Compiling tracing-core v0.1.32
    Checking base64ct v1.6.0
   Compiling pin-project-lite v0.2.15
   Compiling file_diff v1.0.0
   Compiling base64 v0.22.1
   Compiling line-col v0.2.1
    Checking keccak v0.1.5
    Checking ghash v0.5.1
    Checking aes v0.8.4
    Checking pem-rfc7468 v0.7.0
    Checking ctr v0.9.2
    Checking aead v0.5.2
    Checking sha3 v0.10.8
    Checking equivalent v1.0.1
    Checking base32 v0.4.0
   Compiling autocfg v1.4.0
   Compiling data-encoding v2.6.0
   Compiling cfg_aliases v0.2.1
    Checking hashbrown v0.15.1
    Checking ssh-encoding v0.2.0
    Checking blowfish v0.9.1
   Compiling nix v0.29.0
    Checking poly1305 v0.8.0
    Checking chacha20 v0.9.1
   Compiling globset v0.4.15
   Compiling regex v1.11.1
    Checking aes-gcm v0.10.3
    Checking cbc v0.1.2
   Compiling num-traits v0.2.19
   Compiling synstructure v0.13.1
    Checking pbkdf2 v0.12.2
   Compiling ignore v0.4.23
    Checking indexmap v2.6.0
   Compiling env_filter v0.1.2
   Compiling adler2 v2.0.0
   Compiling env_logger v0.11.5
    Checking zeroize v1.8.1
    Checking radicle-std-ext v0.1.0
   Compiling miniz_oxide v0.8.0
   Compiling data-encoding-macro-internal v0.1.13
    Checking bcrypt-pbkdf v0.10.0
    Checking ssh-cipher v0.2.0
    Checking rand v0.8.5
   Compiling xattr v1.3.1
   Compiling filetime v0.2.25
   Compiling crc32fast v1.4.2
   Compiling globwalk v0.9.1
    Checking base-x v0.2.11
    Checking signature v2.2.0
   Compiling slog v2.7.0
    Checking ssh-key v0.6.7
   Compiling flate2 v1.0.34
   Compiling tar v0.4.43
    Checking data-encoding-macro v0.1.15
    Checking multibase v0.9.1
    Checking qcheck v1.0.0
    Checking cvt v0.1.2
    Checking tinyvec_macros v0.1.1
   Compiling glob v0.3.1
   Compiling rust_decimal v1.36.0
    Checking amplify v4.8.0
    Checking tinyvec v1.8.0
    Checking terminal_size v0.4.0
    Checking radicle-dag v0.9.0
   Compiling serde_yml v0.0.11
    Checking arrayvec v0.7.6
    Checking normpath v1.3.0
    Checking cyphergraphy v0.3.0
    Checking base64 v0.21.7
   Compiling radicle-surf v0.22.1
    Checking chrono v0.4.38
    Checking cypheraddr v0.4.0
    Checking crossbeam-channel v0.5.13
    Checking fs2 v0.4.3
    Checking fs_at v0.2.1
    Checking shell-words v1.1.0
    Checking siphasher v1.0.1
    Checking socks5-client v0.4.1
    Checking remove_dir_all v0.8.4
    Checking winnow v0.6.20
    Checking unicode-normalization v0.1.24
    Checking arc-swap v1.7.1
    Checking state v0.5.3
    Checking cyphernet v0.5.2
    Checking unescape v0.1.0
    Checking libyml v0.0.4
    Checking uuid v1.11.0
    Checking slog-scope v4.4.0
   Compiling serde_derive v1.0.214
   Compiling thiserror-impl v1.0.68
   Compiling zerocopy-derive v0.7.35
   Compiling zerofrom-derive v0.1.4
   Compiling yoke-derive v0.7.4
   Compiling zerovec-derive v0.10.3
   Compiling displaydoc v0.2.5
   Compiling icu_provider_macros v1.5.0
   Compiling clap_derive v4.5.18
   Compiling git-testament-derive v0.2.0
   Compiling tracing-attributes v0.1.27
   Compiling culpa-macros v1.0.2
    Checking html-page v0.4.0
   Compiling ctor v0.2.8
   Compiling zerocopy v0.7.35
   Compiling git-testament v0.2.5
   Compiling pest v2.7.14
   Compiling git-ref-format-core v0.3.1
    Checking radicle-ssh v0.9.0
   Compiling ppv-lite86 v0.2.20
    Checking zerofrom v0.1.4
    Checking yoke v0.7.4
   Compiling hashbrown v0.14.5
   Compiling culpa v1.0.2
   Compiling git-ref-format-macro v0.3.1
   Compiling rand_chacha v0.3.1
    Checking zerovec v0.10.4
   Compiling subplotlib-derive v0.11.0
   Compiling tracing v0.1.40
   Compiling clap v4.5.20
   Compiling hashlink v0.8.4
   Compiling hashlink v0.9.1
   Compiling yaml-rust2 v0.8.1
   Compiling tempfile-fast v0.3.4
    Checking tinystr v0.7.6
    Checking icu_collections v1.5.0
   Compiling pest_meta v2.7.14
    Checking icu_locid v1.5.0
    Checking icu_provider v1.5.0
   Compiling pest_generator v2.7.14
    Checking icu_locid_transform v1.5.0
    Checking icu_properties v1.5.1
   Compiling pest_derive v2.7.14
    Checking nonempty v0.9.0
    Checking localtime v1.3.1
    Checking duration-str v0.11.2
    Checking git-ref-format v0.3.1
   Compiling serde_path_to_error v0.1.16
    Checking icu_normalizer v1.5.0
    Checking slog-json v2.6.1
   Compiling marked-yaml v0.7.1
    Checking idna_adapter v1.2.0
    Checking idna v1.0.3
   Compiling roadmap v0.6.1
    Checking url v2.5.3
   Compiling tera v1.20.0
    Checking git2 v0.19.0
   Compiling subplot-build v0.11.0
    Checking radicle-git-ext v0.8.1
   Compiling subplotlib v0.11.0
   Compiling radicle-ci-broker v0.8.0 (/srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/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.82s
+ 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.2
   Compiling log v0.4.22
   Compiling itoa v1.0.11
   Compiling subtle v2.6.1
   Compiling stable_deref_trait v1.2.0
   Compiling typenum v1.17.0
   Compiling libc v0.2.162
   Compiling regex-syntax v0.8.5
   Compiling serde v1.0.214
   Compiling thiserror v1.0.68
   Compiling zerofrom v0.1.4
   Compiling percent-encoding v2.3.1
   Compiling fastrand v2.2.0
   Compiling utf8parse v0.2.2
   Compiling crossbeam-utils v0.8.20
   Compiling colorchoice v1.0.3
   Compiling yoke v0.7.4
   Compiling rustix v0.38.39
   Compiling anstyle-parse v0.2.6
   Compiling writeable v0.5.5
   Compiling anstyle v1.0.10
   Compiling powerfmt v0.2.0
   Compiling anstyle-query v1.1.2
   Compiling litemap v0.7.3
   Compiling is_terminal_polyfill v1.70.1
   Compiling zerovec v0.10.4
   Compiling ryu v1.0.18
   Compiling num-conv v0.1.0
   Compiling time-core v0.1.2
   Compiling cpufeatures v0.2.14
   Compiling anstream v0.6.18
   Compiling deranged v0.3.11
   Compiling ahash v0.8.11
   Compiling anyhow v1.0.93
   Compiling getrandom v0.2.15
   Compiling time-macros v0.2.18
   Compiling strsim v0.11.1
   Compiling icu_locid_transform_data v1.5.0
   Compiling aho-corasick v1.1.3
   Compiling hashbrown v0.14.5
   Compiling clap_lex v0.7.2
   Compiling generic-array v0.14.7
   Compiling bstr v1.10.0
   Compiling pest v2.7.14
   Compiling rand_core v0.6.4
   Compiling crossbeam-epoch v0.9.18
   Compiling icu_properties_data v1.5.0
   Compiling rand_chacha v0.3.1
   Compiling encoding_rs v0.8.35
   Compiling crossbeam-deque v0.8.5
   Compiling hashlink v0.8.4
   Compiling tinystr v0.7.6
   Compiling icu_collections v1.5.0
   Compiling crypto-common v0.1.6
   Compiling block-padding v0.3.3
   Compiling block-buffer v0.10.4
   Compiling inout v0.1.3
   Compiling icu_locid v1.5.0
   Compiling digest v0.10.7
   Compiling write16 v1.0.0
   Compiling cipher v0.4.4
   Compiling utf8_iter v1.0.4
   Compiling utf16_iter v1.0.5
   Compiling smallvec v1.13.2
   Compiling icu_normalizer_data v1.5.0
   Compiling universal-hash v0.5.1
   Compiling rand v0.8.5
   Compiling hashlink v0.9.1
   Compiling clap_builder v4.5.20
   Compiling signature v1.6.4
   Compiling lazy_static v1.5.0
   Compiling utf8-width v0.1.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 tempfile v3.14.0
   Compiling ct-codecs v1.1.2
   Compiling regex-automata v0.4.8
   Compiling icu_provider v1.5.0
   Compiling time v0.3.36
   Compiling linux-raw-sys v0.4.14
   Compiling pest_meta v2.7.14
   Compiling amplify_num v0.5.3
   Compiling pulldown-cmark v0.12.2
   Compiling yaml-rust2 v0.8.1
   Compiling icu_locid_transform v1.5.0
   Compiling tempfile-fast v0.3.4
   Compiling ec25519 v0.1.0
   Compiling polyval v0.6.2
   Compiling libz-sys v1.1.20
   Compiling sha2 v0.10.8
   Compiling serde_path_to_error v0.1.16
   Compiling serde_json v1.0.132
   Compiling pest_generator v2.7.14
   Compiling icu_properties v1.5.1
   Compiling marked-yaml v0.7.1
   Compiling tracing-core v0.1.32
   Compiling form_urlencoded v1.2.1
   Compiling git-ref-format-core v0.3.1
   Compiling base64 v0.22.1
   Compiling git-testament-derive v0.2.0
   Compiling clap v4.5.20
   Compiling roadmap v0.6.1
   Compiling amplify v4.8.0
   Compiling keccak v0.1.5
   Compiling byteorder v1.5.0
   Compiling base64ct v1.6.0
   Compiling git-ref-format-macro v0.3.1
   Compiling tracing v0.1.40
   Compiling ghash v0.5.1
   Compiling sha3 v0.10.8
   Compiling globset v0.4.15
   Compiling regex v1.11.1
   Compiling pem-rfc7468 v0.7.0
   Compiling cyphergraphy v0.3.0
   Compiling pest_derive v2.7.14
   Compiling libgit2-sys v0.17.0+1.8.1
   Compiling ctr v0.9.2
   Compiling ignore v0.4.23
   Compiling aes v0.8.4
   Compiling env_filter v0.1.2
   Compiling aead v0.5.2
   Compiling hashbrown v0.15.1
   Compiling base32 v0.4.0
   Compiling env_logger v0.11.5
   Compiling git-testament v0.2.5
   Compiling equivalent v1.0.1
   Compiling cypheraddr v0.4.0
   Compiling git-ref-format v0.3.1
   Compiling ssh-encoding v0.2.0
   Compiling blowfish v0.9.1
   Compiling sqlite3-src v0.5.1
   Compiling poly1305 v0.8.0
   Compiling chacha20 v0.9.1
   Compiling cbc v0.1.2
   Compiling pbkdf2 v0.12.2
   Compiling icu_normalizer v1.5.0
   Compiling aes-gcm v0.10.3
   Compiling radicle-std-ext v0.1.0
   Compiling zeroize v1.8.1
   Compiling data-encoding v2.6.0
   Compiling socks5-client v0.4.1
   Compiling bcrypt-pbkdf v0.10.0
   Compiling globwalk v0.9.1
   Compiling ssh-cipher v0.2.0
   Compiling sqlite3-sys v0.15.2
   Compiling indexmap v2.6.0
   Compiling tera v1.20.0
   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 data-encoding-macro v0.1.15
   Compiling tar v0.4.43
   Compiling flate2 v1.0.34
   Compiling ssh-key v0.6.7
   Compiling multibase v0.9.1
   Compiling idna_adapter v1.2.0
   Compiling sqlite v0.32.0
   Compiling cyphernet v0.5.2
   Compiling idna v1.0.3
   Compiling nix v0.29.0
   Compiling num-traits v0.2.19
   Compiling qcheck v1.0.0
   Compiling radicle-ssh v0.9.0
   Compiling nonempty v0.9.0
   Compiling url v2.5.3
   Compiling cvt v0.1.2
   Compiling tinyvec_macros v0.1.1
   Compiling tinyvec v1.8.0
   Compiling culpa v1.0.2
   Compiling slog v2.7.0
   Compiling terminal_size v0.4.0
   Compiling radicle-dag v0.9.0
   Compiling base64 v0.21.7
   Compiling arrayvec v0.7.6
   Compiling normpath v1.3.0
   Compiling radicle-surf v0.22.1
   Compiling git2 v0.19.0
   Compiling rust_decimal v1.36.0
   Compiling chrono v0.4.38
   Compiling fs_at v0.2.1
   Compiling remove_dir_all v0.8.4
   Compiling subplotlib-derive v0.11.0
   Compiling localtime v1.3.1
   Compiling unicode-normalization v0.1.24
   Compiling fs2 v0.4.3
   Compiling crossbeam-channel v0.5.13
   Compiling winnow v0.6.20
   Compiling siphasher v1.0.1
   Compiling state v0.5.3
   Compiling arc-swap v1.7.1
   Compiling libyml v0.0.4
   Compiling shell-words v1.1.0
   Compiling unescape v0.1.0
   Compiling slog-json v2.6.1
   Compiling html-page v0.4.0
   Compiling slog-scope v4.4.0
   Compiling uuid v1.11.0
   Compiling serde_yml v0.0.11
   Compiling subplot-build v0.11.0
   Compiling duration-str v0.11.2
   Compiling subplotlib v0.11.0
   Compiling radicle-ci-broker v0.8.0 (/srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src)
   Compiling radicle-git-ext v0.8.1
   Compiling radicle-crypto v0.11.0
   Compiling radicle-cob v0.12.0
   Compiling radicle v0.13.0
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.65s
+ 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.162
 Documenting subtle v2.6.1
 Documenting stable_deref_trait v1.2.0
 Documenting bitflags v2.6.0
 Documenting writeable v0.5.5
 Documenting litemap v0.7.3
 Documenting cpufeatures v0.2.14
 Documenting icu_locid_transform_data v1.5.0
 Documenting icu_properties_data v1.5.0
 Documenting utf16_iter v1.0.5
 Documenting icu_normalizer_data v1.5.0
 Documenting utf8_iter v1.0.4
    Checking proc-macro2 v1.0.89
 Documenting smallvec v1.13.2
 Documenting write16 v1.0.0
 Documenting opaque-debug v0.3.1
 Documenting memchr v2.7.4
 Documenting ed25519 v1.5.3
 Documenting ascii v1.1.0
    Checking quote v1.0.37
 Documenting proc-macro2 v1.0.89
 Documenting amplify_num v0.5.3
 Documenting log v0.4.22
 Documenting ct-codecs v1.1.2
    Checking syn v2.0.87
    Checking syn v1.0.109
 Documenting itoa v1.0.11
 Documenting percent-encoding v2.3.1
 Documenting linux-raw-sys v0.4.14
    Checking git-ref-format-core v0.3.1
 Documenting keccak v0.1.5
 Documenting base64ct v1.6.0
 Documenting fastrand v2.2.0
 Documenting byteorder v1.5.0
 Documenting hashbrown v0.15.1
    Checking data-encoding v2.6.0
 Documenting base32 v0.4.0
 Documenting quote v1.0.37
 Documenting form_urlencoded v1.2.1
 Documenting equivalent v1.0.1
 Documenting sqlite3-src v0.5.1
 Documenting radicle-std-ext v0.1.0
    Checking amplify_syn v2.0.1
    Checking proc-macro-error v1.0.4
 Documenting data-encoding-macro-internal v0.1.13
    Checking synstructure v0.13.1
 Documenting powerfmt v0.2.0
 Documenting pem-rfc7468 v0.7.0
 Documenting ryu v1.0.18
 Documenting data-encoding v2.6.0
 Documenting once_cell v1.20.2
 Documenting zeroize v1.8.1
 Documenting rustix v0.38.39
 Documenting time-macros v0.2.18
 Documenting signature v2.2.0
 Documenting synstructure v0.13.1
 Documenting zerovec-derive v0.10.3
 Documenting displaydoc v0.2.5
 Documenting generic-array v0.14.7
 Documenting serde_derive v1.0.214
 Documenting icu_provider_macros v1.5.0
 Documenting thiserror-impl v1.0.68
 Documenting amplify_syn v2.0.1
 Documenting getrandom v0.2.15
 Documenting proc-macro-error-attr v1.0.4
 Documenting libz-sys v1.1.20
 Documenting indexmap v2.6.0
 Documenting sqlite3-sys v0.15.2
 Documenting data-encoding-macro v0.1.15
 Documenting zerofrom-derive v0.1.4
 Documenting crypto-common v0.1.6
 Documenting yoke-derive v0.7.4
 Documenting block-buffer v0.10.4
 Documenting block-padding v0.3.3
 Documenting ec25519 v0.1.0
 Documenting rand_core v0.6.4
 Documenting proc-macro-error v1.0.4
 Documenting deranged v0.3.11
 Documenting utf8parse v0.2.2
 Documenting thiserror v1.0.68
 Documenting libgit2-sys v0.17.0+1.8.1
 Documenting amplify_derive v4.0.1
 Documenting time-core v0.1.2
 Documenting digest v0.10.7
 Documenting inout v0.1.3
 Documenting zerofrom v0.1.4
 Documenting universal-hash v0.5.1
 Documenting serde v1.0.214
 Documenting aead v0.5.2
 Documenting rand v0.8.5
 Documenting num-conv v0.1.0
 Documenting base-x v0.2.11
 Documenting radicle-ssh v0.9.0
 Documenting git-ref-format-macro v0.3.1
 Documenting anstyle-parse v0.2.6
 Documenting tempfile v3.14.0
 Documenting cipher v0.4.4
 Documenting amplify v4.8.0
 Documenting yoke v0.7.4
 Documenting sqlite v0.32.0
 Documenting nix v0.29.0
 Documenting time v0.3.36
 Documenting multibase v0.9.1
 Documenting aho-corasick v1.1.3
 Documenting sha2 v0.10.8
 Documenting sha3 v0.10.8
 Documenting polyval v0.6.2
 Documenting poly1305 v0.8.0
 Documenting pbkdf2 v0.12.2
 Documenting qcheck v1.0.0
 Documenting num-traits v0.2.19
 Documenting cvt v0.1.2
 Documenting zerovec v0.10.4
 Documenting aes v0.8.4
 Documenting cyphergraphy v0.3.0
 Documenting ctr v0.9.2
 Documenting chacha20 v0.9.1
 Documenting blowfish v0.9.1
 Documenting ssh-encoding v0.2.0
 Documenting cbc v0.1.2
 Documenting git-ref-format-core v0.3.1
 Documenting serde_json v1.0.132
 Documenting ghash v0.5.1
 Documenting nonempty v0.9.0
 Documenting anstyle-query v1.1.2
 Documenting is_terminal_polyfill v1.70.1
 Documenting regex-syntax v0.8.5
 Documenting colorchoice v1.0.3
 Documenting tinystr v0.7.6
 Documenting icu_collections v1.5.0
 Documenting cypheraddr v0.4.0
 Documenting tinyvec_macros v0.1.1
 Documenting anstyle v1.0.10
 Documenting bcrypt-pbkdf v0.10.0
 Documenting fs_at v0.2.1
 Documenting terminal_size v0.4.0
 Documenting culpa-macros v1.0.2
 Documenting radicle-dag v0.9.0
 Documenting aes-gcm v0.10.3
   Compiling radicle-ci-broker v0.8.0 (/srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src)
 Documenting slog v2.7.0
 Documenting icu_locid v1.5.0
 Documenting tinyvec v1.8.0
 Documenting git-ref-format v0.3.1
 Documenting crossbeam-utils v0.8.20
 Documenting lazy_static v1.5.0
 Documenting anstream v0.6.18
 Documenting socks5-client v0.4.1
 Documenting normpath v1.3.0
 Documenting heck v0.5.0
 Documenting utf8-width v0.1.7
 Documenting strsim v0.11.1
 Documenting arrayvec v0.7.6
 Documenting ssh-cipher v0.2.0
    Checking heck v0.5.0
 Documenting clap_lex v0.7.2
 Documenting regex-automata v0.4.8
 Documenting culpa v1.0.2
 Documenting chrono v0.4.38
 Documenting unicode-normalization v0.1.24
 Documenting icu_provider v1.5.0
 Documenting crossbeam-channel v0.5.13
 Documenting clap_derive v4.5.18
 Documenting html-escape v0.2.13
 Documenting localtime v1.3.1
 Documenting remove_dir_all v0.8.4
 Documenting rust_decimal v1.36.0
 Documenting cyphernet v0.5.2
 Documenting filetime v0.2.25
 Documenting ssh-key v0.6.7
 Documenting fs2 v0.4.3
 Documenting clap_builder v4.5.20
 Documenting icu_locid_transform v1.5.0
 Documenting subplotlib-derive v0.11.0
 Documenting arc-swap v1.7.1
 Documenting state v0.5.3
 Documenting libyml v0.0.4
 Documenting winnow v0.6.20
 Documenting shell-words v1.1.0
 Documenting unescape v0.1.0
 Documenting base64 v0.22.1
 Documenting siphasher v1.0.1
 Documenting html-page v0.4.0
 Documenting slog-json v2.6.1
 Documenting uuid v1.11.0
 Documenting anyhow v1.0.93
 Documenting slog-scope v4.4.0
 Documenting regex v1.11.1
 Documenting icu_properties v1.5.1
 Documenting serde_yml v0.0.11
 Documenting clap v4.5.20
 Documenting duration-str v0.11.2
 Documenting subplotlib v0.11.0
 Documenting icu_normalizer v1.5.0
 Documenting idna_adapter v1.2.0
 Documenting idna v1.0.3
 Documenting url v2.5.3
 Documenting git2 v0.19.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.8.0 (/srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src)
warning: unresolved link to `RunningProcess`
   --> src/adapter.rs:186:44
    |
186 |     /// Error from [`TimeoutCommand`] or [`RunningProcess`].
    |                                            ^^^^^^^^^^^^^^ no item named `RunningProcess` in scope
    |
    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: `radicle-ci-broker` (lib doc) generated 1 warning
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.16s
   Generated /srv/http/85611bfd-0a11-43b1-af26-e18ec74c8aa9/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.14s
     Running unittests src/lib.rs (target/debug/deps/radicle_ci_broker-495e1cb64d064e27)

running 84 tests
test broker::test::adds_adapter ... ok
test broker::test::does_not_find_unknown_repo ... ok
test adapter::test::adapter_does_not_exist ... ok
test adapter::test::adapter_is_not_executable ... ok
test adapter::test::adapter_has_bad_interpreter ... ok
test broker::test::does_not_have_a_default_adapter_initially ... ok
test ci_event::test::branch_created ... ok
test ci_event::test::branch_deleted ... ok
test ci_event::test::branch_updated ... ok
test ci_event::test::nothing_updated ... ok
test ci_event::test::patch_created ... ok
test ci_event::test::patch_updated ... ok
test ci_event::test::skipped ... 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 ci_event::test_patch_id::empty ... ok
test ci_event::test_patch_id::has_namespace ... ok
test ci_event::test_patch_id::has_namespace_with_path ... ok
test ci_event::test_patch_id::lacks_namespace ... ok
test config::test::parse_config_yaml ... ok
test config::test::parse_config_yaml_without_max_run_time ... ok
test filter::test::allows_all_for_default_repository ... ok
test filter::test::allows_all_for_main_branch ... ok
test filter::test::allows_all_for_right_node ... ok
test filter::test::allows_any_event ... ok
test filter::test::allows_branch_creation ... 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_none_for_wrong_node ... ok
test filter::test::allows_opposite ... ok
test filter::test::allows_patch_creation ... ok
test filter::test::allows_patch_update ... ok
test filter::test::allows_shutdown ... ok
test filter::test::allows_specific_patch ... ok
test filter::test::doesnt_allow_any_for_other_branch ... ok
test filter::test::doesnt_allow_any_for_other_repository ... ok
test filter::test::doesnt_allows_other_patch ... ok
test filter::test::only_allows_branch_creation ... ok
test filter::test::only_allows_branch_deletion ... ok
test filter::test::only_allows_branch_update ... ok
test filter::test::only_allows_patch_creation ... ok
test filter::test::only_allows_patch_update ... ok
test msg::test_push_branch::get_no_push_branch ... ok
test msg::test_push_branch::get_push_branch ... 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 msg::trigger_from_ci_event_tests::trigger_patch_from_patch_created ... ok
test run::test::serialize_run_state ... ok
test sensitive::test_sensitive::debugged ... ok
test sensitive::test_sensitive::deser ... ok
test sensitive::test_sensitive::displayed ... ok
test msg::trigger_from_ci_event_tests::trigger_push_from_branch_created ... ok
test sensitive::test_sensitive::ser ... ok
test msg::trigger_from_ci_event_tests::trigger_patch_from_patch_updated ... ok
test msg::trigger_from_ci_event_tests::trigger_push_from_branch_updated ... ok
test adapter::test::adapter_ends_ok_before_second_message ... ok
test adapter::test::adapter_produces_as_bad_message ... ok
test adapter::test::adapter_is_killed_before_any_messages ... ok
test adapter::test::adapter_exits_nonzero ... ok
test adapter::test::adapter_first_message_isnt_triggered ... ok
test adapter::test::adapter_is_killed_after_first_message ... ok
test adapter::test::adapter_reports_failure ... ok
test adapter::test::adapter_is_killed_after_second_message ... ok
test adapter::test::adapter_outputs_too_many_messages ... ok
test adapter::test::adapter_reports_success ... ok
test broker::test::adapter_fails ... ok
test timeoutcmd::tests::bin_true ... ok
test timeoutcmd::tests::bin_false ... ok
test timeoutcmd::tests::hello_world ... ok
test timeoutcmd::tests::hello_world_to_stderr ... ok
test broker::test::executes_adapter ... ok
test timeoutcmd::tests::pipe_through_cat ... ok
test timeoutcmd::tests::sleep_1 ... ok
test timeoutcmd::tests::sleep_for_too_long ... ok
test timeoutcmd::tests::yes_to_stderr ... ok
test timeoutcmd::tests::yes_to_stdout ... ok
test timeoutcmd::tests::kill_stderr ... ok
test timeoutcmd::tests::kill ... ok

test result: ok. 84 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.82s

     Running unittests src/bin/cib.rs (target/debug/deps/cib-e4c48798f2e7e6c6)

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-2cf48344a146e958)

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-999522308590d13c)

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-525b692d59bb3615)

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 don_t_insert_event_for_non_existent_repository ... ok
test allows_setting_minimum_log_level ... 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_run_that_s_finished_in_failure_to_database ... ok
test don_t_insert_events_into_queue_when_not_allowed_by_filter ... ok
test add_information_about_run_that_s_running_to_database ... ok
test logs_termination_due_to_error ... ok
test add_information_about_triggered_run_to_database ... ok
test can_trigger_a_ci_run ... ok
test adapter_can_provide_url_for_info_on_run ... ok
test events_can_be_queued_and_removed_from_queue ... ok
test filter_recorded_ci_events ... ok
test shows_config_as_json ... ok
test can_remove_all_queued_events ... ok
test gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file ... ok
test gives_helpful_error_message_if_node_socket_can_t_be_found ... ok
test record_node_events ... ok
test insert_events_into_queue ... ok
test we_can_run_rad ... ok
test logs_start_and_successful_end ... ok
test produces_a_json_status_file ... ok
test produces_a_report_page_upon_request ... ok
test reports_it_version ... ok
test logs_adapter_stderr_output ... ok
test process_queued_events ... ok
test shuts_down_when_requested ... ok
test stops_if_the_node_connection_breaks ... ok
test update_and_show_information_about_run_to_running ... ok
test smoke_test__runs_adapter ... 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 count_in_concurrent_processes ... ok
test acceptance_criteria_for_upgrades ... ok

test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 90.33s

   Doc-tests radicle_ci_broker

running 2 tests
test src/msg.rs - msg::RunId (line 44) ... ok
test src/timeoutcmd.rs - timeoutcmd (line 21) ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.59s

+ 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/85611bfd-0a11-43b1-af26-e18ec74c8aa9/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/85611bfd-0a11-43b1-af26-e18ec74c8aa9/src/doc'