runnerd-core 0.0.21

Config, domain logic and API types shared by runnerd and its clients
Documentation
[package]
name = "runnerd-core"
description = "Config, domain logic and API types shared by runnerd and its clients"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
readme.workspace = true
keywords = ["github-actions", "ci", "runner"]
categories = ["development-tools"]

[features]
default = ["host"]
# What only the daemon runs: Docker, the GitHub client, the caches and the scheduler. Clients turn it off and get
# `api` and `config` alone.
host = [
  "dep:bollard",
  "dep:futures-util",
  "dep:http-body-util",
  "dep:hyper",
  "dep:hyper-util",
  "dep:reqwest",
  "dep:rusqlite",
  "dep:rustix",
  "dep:rustls",
  "dep:serde_json",
  "dep:tar",
  "dep:tokio",
  "dep:tracing",
  "hyper/server",
  "tokio/fs",
  "tokio/io-util",
  "tokio/net",
]
# The client of the daemon's API over its socket, for `runnerctl` and the dashboard: hyper's HTTP/1 client, no TLS.
client = [
  "dep:http-body-util",
  "dep:hyper",
  "hyper/client",
  "dep:hyper-util",
  "dep:serde_json",
  "dep:serde_urlencoded",
  "dep:tokio",
  "tokio/net",
  "tokio/time",
]

[dependencies]
bollard = { workspace = true, optional = true }
futures-util = { workspace = true, optional = true }
http-body-util = { workspace = true, optional = true }
hyper = { workspace = true, optional = true, features = ["http1"] }
hyper-util = { workspace = true, optional = true, features = ["tokio"] }
reqwest = { workspace = true, optional = true }
rusqlite = { workspace = true, optional = true }
rustix = { workspace = true, optional = true, features = ["fs"] }
rustls = { workspace = true, optional = true }
serde.workspace = true
serde_json = { workspace = true, optional = true }
serde_urlencoded = { workspace = true, optional = true }
tar = { workspace = true, optional = true }
thiserror.workspace = true
tokio = { workspace = true, optional = true, features = ["macros", "rt", "sync", "time"] }
toml.workspace = true
toml_edit.workspace = true
tracing = { workspace = true, optional = true }

[dev-dependencies]
axum.workspace = true
futures-util.workspace = true
log.workspace = true
tokio = { workspace = true, features = ["io-util", "macros", "net", "rt-multi-thread", "test-util", "time"] }

# They start real containers through the host modules.
[[test]]
name = "docker_smoke"
required-features = ["host"]

[[test]]
name = "cache_reseed"
required-features = ["host"]

[[test]]
name = "build_cache_gradle"
required-features = ["host"]

[[test]]
name = "slot_docker_store"
required-features = ["host"]

[lints]
workspace = true