rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwooda48081f2717f069d456ec09f31d9e639b232dbed
{
"request": "trigger",
"version": 1,
"event_type": "push",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"pusher": {
"id": "did:key:z6MkswQE8gwZw924amKatxnNCXA55BMupMmRg7LvJuim2C1V",
"alias": "erikli"
},
"before": "a48081f2717f069d456ec09f31d9e639b232dbed",
"after": "a48081f2717f069d456ec09f31d9e639b232dbed",
"branch": "master",
"commits": [
"a48081f2717f069d456ec09f31d9e639b232dbed"
]
}
{
"response": "triggered",
"run_id": {
"id": "c44c2db4-b193-4521-b400-819767c5651a"
},
"info_url": "https://cci.rad.levitte.org//c44c2db4-b193-4521-b400-819767c5651a.html"
}
Started at: 2025-10-21 20:18:53.052119+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW added
✓ Remote-tracking branch cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW/master created for z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ Remote erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz added
✓ Remote-tracking branch erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz/master created for z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz
✓ Remote lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz added
✓ Remote-tracking branch lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz/master created for z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
✓ Repository successfully cloned under /opt/radcis/ci.rad.levitte.org/cci/state/c44c2db4-b193-4521-b400-819767c5651a/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 125 issues · 15 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout a48081f2717f069d456ec09f31d9e639b232dbed
HEAD is now at a48081f2 cli: Move node addresses command
Exit code: 0
$ git show a48081f2717f069d456ec09f31d9e639b232dbed
commit a48081f2717f069d456ec09f31d9e639b232dbed
Author: cloudhead <cloudhead@radicle.xyz>
Date: Mon Feb 26 14:23:13 2024 +0100
cli: Move node addresses command
To make things a little more consistent, move the `rad self --address`
command to `rad node config --addresses`, since it's more about
externally-facing configuration of the node, rather than your local user
or profile.
diff --git a/radicle-cli/examples/rad-node.md b/radicle-cli/examples/rad-node.md
index fd44566a..fbb52587 100644
--- a/radicle-cli/examples/rad-node.md
+++ b/radicle-cli/examples/rad-node.md
@@ -18,6 +18,12 @@ $ rad node status
✓ Node is running and listening on [..].
```
+```
+$ rad node config --addresses
+z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi@41.12.98.112:8776
+z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi@seed.cloudhead.io:8776
+```
+
The node also allows us to query data that it has access to such as
the follow policies and the routing table. Before we explore
those commands we'll first follow a peer so that we have something to
diff --git a/radicle-cli/examples/rad-self.md b/radicle-cli/examples/rad-self.md
index 6acf3ba9..a486efc8 100644
--- a/radicle-cli/examples/rad-self.md
+++ b/radicle-cli/examples/rad-self.md
@@ -38,8 +38,3 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHahWSBEpuT1ESZbynOmBNkLBSnR32Ar4woZqSV2YNH1
$ rad self --home
[..]/home/alice/.radicle
```
-
-```
-$ rad self --address
-z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi@seed.alice.acme:8776
-```
diff --git a/radicle-cli/src/commands/node.rs b/radicle-cli/src/commands/node.rs
index 341d3a0f..28ccf69b 100644
--- a/radicle-cli/src/commands/node.rs
+++ b/radicle-cli/src/commands/node.rs
@@ -4,6 +4,8 @@ use std::time;
use anyhow::anyhow;
+use radicle::node::config::ConnectAddress;
+use radicle::node::Handle as _;
use radicle::node::{Address, Node, NodeId, PeerAddr};
use radicle::prelude::RepoId;
@@ -32,7 +34,7 @@ Usage
rad node connect <nid>@<addr> [<option>...]
rad node routing [--rid <rid>] [--nid <nid>] [--json] [<option>...]
rad node events [--timeout <secs>] [-n <count>] [<option>...]
- rad node config
+ rad node config [--addresses]
For `<node-option>` see `radicle-node --help`.
@@ -68,7 +70,9 @@ pub enum Operation {
addr: PeerAddr<NodeId, Address>,
timeout: time::Duration,
},
- Config,
+ Config {
+ addresses: bool,
+ },
Events {
timeout: time::Duration,
count: usize,
@@ -121,6 +125,7 @@ impl Args for Options {
let mut lines: usize = 60;
let mut count: usize = usize::MAX;
let mut timeout = time::Duration::MAX;
+ let mut addresses = false;
let mut path = None;
let mut verbose = false;
@@ -167,6 +172,9 @@ impl Args for Options {
Long("foreground") if matches!(op, Some(OperationName::Start)) => {
foreground = true;
}
+ Long("addresses") if matches!(op, Some(OperationName::Config)) => {
+ addresses = true;
+ }
Long("verbose") | Short('v') if matches!(op, Some(OperationName::Start)) => {
verbose = true;
}
@@ -191,7 +199,7 @@ impl Args for Options {
})?,
timeout,
},
- OperationName::Config => Operation::Config,
+ OperationName::Config => Operation::Config { addresses },
OperationName::Events => Operation::Events { timeout, count },
OperationName::Routing => Operation::Routing { rid, nid, json },
OperationName::Logs => Operation::Logs { lines },
@@ -217,7 +225,16 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
Operation::Connect { addr, timeout } => {
control::connect(&mut node, addr.id, addr.addr, timeout)?
}
- Operation::Config => control::config(&node)?,
+ Operation::Config { addresses } => {
+ if addresses {
+ let cfg = node.config()?;
+ for addr in cfg.external_addresses {
+ term::print(ConnectAddress::from((*profile.id(), addr)).to_string());
+ }
+ } else {
+ control::config(&node)?;
+ }
+ }
Operation::Sessions => {
let sessions = control::sessions(&node)?;
if let Some(table) = sessions {
diff --git a/radicle-cli/src/commands/self.rs b/radicle-cli/src/commands/self.rs
index 94c3b2a3..fa45d130 100644
--- a/radicle-cli/src/commands/self.rs
+++ b/radicle-cli/src/commands/self.rs
@@ -1,7 +1,6 @@
use std::ffi::OsString;
use radicle::crypto::ssh;
-use radicle::node::config::ConnectAddress;
use radicle::Profile;
use crate::terminal as term;
@@ -22,7 +21,6 @@ Options
--did Show your DID
--alias Show your Node alias
--nid Show your Node ID (NID)
- --address Show your Node address(es)
--home Show your Radicle home
--config Show the location of your configuration file
--ssh-key Show your public key in OpenSSH format
@@ -34,7 +32,6 @@ Options
#[derive(Debug)]
enum Show {
Alias,
- Address,
NodeId,
Did,
Home,
@@ -61,9 +58,6 @@ impl Args for Options {
Long("alias") if show.is_none() => {
show = Some(Show::Alias);
}
- Long("address") if show.is_none() => {
- show = Some(Show::Address);
- }
Long("nid") if show.is_none() => {
show = Some(Show::NodeId);
}
@@ -105,12 +99,6 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
Show::Alias => {
term::print(profile.config.alias());
}
- Show::Address => {
- let nid = profile.public_key;
- for addr in profile.config.node.external_addresses {
- term::print(ConnectAddress::from((nid, addr)).to_string());
- }
- }
Show::NodeId => {
term::print(profile.id());
}
diff --git a/radicle-cli/tests/commands.rs b/radicle-cli/tests/commands.rs
index c33e7caf..e882ec98 100644
--- a/radicle-cli/tests/commands.rs
+++ b/radicle-cli/tests/commands.rs
@@ -1,6 +1,6 @@
use std::path::Path;
use std::str::FromStr;
-use std::{env, thread, time};
+use std::{env, net, thread, time};
use radicle::git;
use radicle::node;
@@ -8,7 +8,7 @@ use radicle::node::address::Store as _;
use radicle::node::config::seeds::{RADICLE_COMMUNITY_NODE, RADICLE_TEAM_NODE};
use radicle::node::routing::Store as _;
use radicle::node::Handle as _;
-use radicle::node::{Alias, DEFAULT_TIMEOUT};
+use radicle::node::{Address, Alias, DEFAULT_TIMEOUT};
use radicle::prelude::RepoId;
use radicle::profile;
use radicle::profile::Home;
@@ -582,7 +582,13 @@ fn rad_node_connect() {
#[test]
fn rad_node() {
let mut environment = Environment::new();
- let alice = environment.node(Config::test(Alias::new("alice")));
+ let alice = environment.node(Config {
+ external_addresses: vec![
+ Address::from(net::SocketAddr::from(([41, 12, 98, 112], 8776))),
+ Address::from_str("seed.cloudhead.io:8776").unwrap(),
+ ],
+ ..Config::test(Alias::new("alice"))
+ });
let working = tempfile::tempdir().unwrap();
let alice = alice.spawn();
Exit code: 0
shell: 'cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny clippy::all cargo build --all-targets --workspace cargo doc --workspace cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name c44c2db4-b193-4521-b400-819767c5651a -v /opt/radcis/ci.rad.levitte.org/cci/state/c44c2db4-b193-4521-b400-819767c5651a/s:/c44c2db4-b193-4521-b400-819767c5651a/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/c44c2db4-b193-4521-b400-819767c5651a/w:/c44c2db4-b193-4521-b400-819767c5651a/w -w /c44c2db4-b193-4521-b400-819767c5651a/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:bookworm bash /c44c2db4-b193-4521-b400-819767c5651a/s/script.sh
+ cargo --version
info: syncing channel updates for '1.74-x86_64-unknown-linux-gnu'
info: latest update on 2023-12-07, rust version 1.74.1 (a28077b28 2023-12-04)
info: downloading component 'cargo'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: installing component 'cargo'
info: installing component 'rust-std'
info: installing component 'rustc'
cargo 1.74.1 (ecb9851af 2023-10-18)
+ rustc --version
rustc 1.74.1 (a28077b28 2023-12-04)
+ cargo fmt --check
error: 'cargo-fmt' is not installed for the toolchain '1.74-x86_64-unknown-linux-gnu'.
To install, run `rustup component add --toolchain 1.74-x86_64-unknown-linux-gnu rustfmt`
Exit code: 1
{
"response": "finished",
"result": "failure"
}