pub struct Runner {
pub id: u64,
pub name: String,
pub os: String,
pub status: RunnerStatus,
pub busy: bool,
pub ephemeral: Option<bool>,
pub labels: Vec<String>,
}Expand description
One self-hosted runner GitHub knows about, local or not.
07-security.md and g2 both require that runners this product did not
create still appear — a legacy persistent runner is part of the operator’s
real inventory, and hiding it would make the dashboard a worse answer than
GitHub’s own page. Nothing here filters by ownership; deciding what is
locally owned is e1’s, from the routing label.
§Labels arrive lower-cased
The D18 spike registered Windows and X64 and read back windows and
x64 (docs/spikes/d18-org-jit-verification.md, point 3). It also
established that no label is added implicitly — a runner carries exactly
what was requested, with no self-hosted, no OS and no architecture unless
they were asked for. So Runner::labels is what GitHub stores, verbatim,
and Runner::has_label compares case-insensitively rather than pretending
the case survived.
Fields§
§id: u64§name: String§os: StringGitHub’s own OS string, unparsed. Runner::parsed_os is the lenient
reading; this is the fact.
status: RunnerStatus§busy: bool§ephemeral: Option<bool>None when GitHub did not send the field.
Absent is not false. A runner whose ephemerality is unknown is exactly
the runner an operator most wants flagged, and defaulting it to “not
ephemeral” would render that as a settled fact.
labels: Vec<String>Implementations§
Trait Implementations§
impl Eq for Runner
impl StructuralPartialEq for Runner
Auto Trait Implementations§
impl Freeze for Runner
impl RefUnwindSafe for Runner
impl Send for Runner
impl Sync for Runner
impl Unpin for Runner
impl UnsafeUnpin for Runner
impl UnwindSafe for Runner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.