Renames `harmony-fleet-operator-release` to `harmony-fleet-release` and adds a `--component <operator|agent|nats-callout>` flag. The binary's surface is now app-scoped (one binary per app, all fleet components behind a flag) rather than component-scoped (one binary per component), matching ADR-023's "deploy binary statically lists its supported components" guidance. Why: adding the agent and nats-callout release pipelines later would otherwise mean three near-identical binaries with copy-pasted docker/helm orchestration. Folding them under one binary keeps the shared 90% in one place and reduces each new component to: - a new `Component` enum variant - a `Component::spec` arm naming the Dockerfile + image - a `hydrate_chart` arm pointing at the component's `build_chart` `agent` and `nats-callout` variants exist today but bail with an actionable error pointing at the roadmap; this keeps `--help` honest about what's coming without lying about what works. The per-component `release.sh` wrapper pattern stays: each component's script (today `fleet/harmony-fleet-operator/release.sh`, tomorrow agent's and callout's) is a 1-line wrapper that pre-fills `--component`. This lets a tag like `harmony-fleet-operator-v0.1.0` route to the right component via the existing CI workflow without the operator having to remember a flag. File renamed via `git mv` so blame history is preserved. Verified on k3d with `--component operator --no-push`: produces the same image + chart pair as before.
54 lines
2.0 KiB
TOML
54 lines
2.0 KiB
TOML
[package]
|
|
name = "harmony-fleet-deploy"
|
|
edition = "2024"
|
|
version.workspace = true
|
|
readme.workspace = true
|
|
license.workspace = true
|
|
description = "Deploy-side Scores for the fleet stack: operator, agent, NATS, callout. Imports harmony for the Score-Topology-Interpret machinery; consumed by the production CLI, the e2e harness, and future control-plane tooling."
|
|
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
# CLI entry point. `harmony-fleet-deploy <component>` picks a subcommand
|
|
# per fleet component plus an `all` composite. Built on harmony_cli the
|
|
# way the rest of the workspace's *-deploy crates are.
|
|
[[bin]]
|
|
name = "harmony-fleet-deploy"
|
|
path = "src/main.rs"
|
|
|
|
# Release tool: builds and pushes the image + hydrated helm chart for
|
|
# one fleet component (operator today; agent and nats-callout will
|
|
# join as their pipelines land). Driven by the per-component
|
|
# release.sh wrappers and the .gitea CI workflows. App-scoped (not
|
|
# component-scoped) so a single binary covers every fleet component
|
|
# behind a `--component` flag.
|
|
[[bin]]
|
|
name = "harmony-fleet-release"
|
|
path = "src/bin/fleet_release.rs"
|
|
|
|
[dependencies]
|
|
harmony = { path = "../../harmony", features = ["podman"] }
|
|
harmony_cli = { path = "../../harmony_cli" }
|
|
harmony_types = { path = "../../harmony_types" }
|
|
harmony_macros = { path = "../../harmony_macros" }
|
|
harmony-fleet-auth = { path = "../harmony-fleet-auth" }
|
|
harmony-reconciler-contracts = { path = "../../harmony-reconciler-contracts" }
|
|
|
|
anyhow = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
clap = { workspace = true }
|
|
k8s-openapi = { workspace = true }
|
|
kube = { workspace = true, features = ["runtime", "derive"] }
|
|
log = { workspace = true }
|
|
env_logger = { workspace = true }
|
|
non-blank-string-rs = "1"
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
serde_yaml = { workspace = true }
|
|
tempfile = "3"
|
|
thiserror = { workspace = true }
|
|
tokio = { workspace = true, features = ["full"] }
|
|
toml = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|