chore: bump version to 1.8.0, update CHANGELOG

This commit is contained in:
2026-04-06 18:14:03 +01:00
parent ae049cf2d3
commit 2f6dba296f
6 changed files with 42 additions and 17 deletions

View File

@@ -2,6 +2,31 @@
All notable changes to this project will be documented in this file.
## [1.8.0] - 2026-04-06
### Added
- **wfe-kubernetes**: New crate -- Kubernetes executor for running workflow steps as K8s Jobs
- Namespace-per-workflow isolation with automatic cleanup
- Job manifest builder with env, resources, pull policy, node selector support
- Pod log streaming to LogSink with real-time output capture
- `##wfe[output key=value]` parsing from Job stdout
- Timeout handling with Job cleanup on expiry
- `KubernetesServiceProvider`: provisions infrastructure services as K8s Pods + Services with DNS resolution and readiness polling
- 100% test coverage on service provider, 91% overall crate coverage
- **wfe-core**: `ServiceDefinition`, `ServicePort`, `ReadinessProbe`, `ServiceEndpoint` types for declaring infrastructure services
- **wfe-core**: `ServiceProvider` trait for pluggable service provisioning
- **wfe-core**: `services` field on `WorkflowDefinition` for declaring required services
- **wfe**: Capability-based workflow routing -- hosts check `can_execute()` before accepting workflows
- Verifies all step types are registered in the StepRegistry
- Verifies ServiceProvider is configured and can provision required services
- Re-queues workflows that can't be handled by this host
- **wfe**: Service lifecycle in dequeue loop -- provision before execution, teardown after completion/failure
- **wfe**: `use_service_provider()` on `WorkflowHostBuilder`
- **wfe-containerd**: `ContainerdServiceProvider` for running services via containerd gRPC API on host network
- **wfe-yaml**: `services:` block in workflow YAML definitions with readiness probes (exec, tcp, http)
- **wfe-yaml**: `kubernetes`/`k8s` step type with lazy client creation
## [1.7.0] - 2026-04-05
### Added

View File

@@ -3,7 +3,7 @@ members = ["wfe-core", "wfe-sqlite", "wfe-postgres", "wfe-opensearch", "wfe-valk
resolver = "2"
[workspace.package]
version = "1.7.0"
version = "1.8.0"
edition = "2024"
license = "MIT"
repository = "https://src.sunbeam.pt/studio/wfe"
@@ -38,16 +38,16 @@ redis = { version = "0.27", features = ["tokio-comp", "connection-manager"] }
opensearch = "2"
# Internal crates
wfe-core = { version = "1.7.0", path = "wfe-core", registry = "sunbeam" }
wfe-sqlite = { version = "1.7.0", path = "wfe-sqlite", registry = "sunbeam" }
wfe-postgres = { version = "1.7.0", path = "wfe-postgres", registry = "sunbeam" }
wfe-opensearch = { version = "1.7.0", path = "wfe-opensearch", registry = "sunbeam" }
wfe-valkey = { version = "1.7.0", path = "wfe-valkey", registry = "sunbeam" }
wfe-yaml = { version = "1.7.0", path = "wfe-yaml", registry = "sunbeam" }
wfe-buildkit = { version = "1.7.0", path = "wfe-buildkit", registry = "sunbeam" }
wfe-containerd = { version = "1.7.0", path = "wfe-containerd", registry = "sunbeam" }
wfe-rustlang = { version = "1.7.0", path = "wfe-rustlang", registry = "sunbeam" }
wfe-kubernetes = { version = "1.7.0", path = "wfe-kubernetes", registry = "sunbeam" }
wfe-core = { version = "1.8.0", path = "wfe-core", registry = "sunbeam" }
wfe-sqlite = { version = "1.8.0", path = "wfe-sqlite", registry = "sunbeam" }
wfe-postgres = { version = "1.8.0", path = "wfe-postgres", registry = "sunbeam" }
wfe-opensearch = { version = "1.8.0", path = "wfe-opensearch", registry = "sunbeam" }
wfe-valkey = { version = "1.8.0", path = "wfe-valkey", registry = "sunbeam" }
wfe-yaml = { version = "1.8.0", path = "wfe-yaml", registry = "sunbeam" }
wfe-buildkit = { version = "1.8.0", path = "wfe-buildkit", registry = "sunbeam" }
wfe-containerd = { version = "1.8.0", path = "wfe-containerd", registry = "sunbeam" }
wfe-rustlang = { version = "1.8.0", path = "wfe-rustlang", registry = "sunbeam" }
wfe-kubernetes = { version = "1.8.0", path = "wfe-kubernetes", registry = "sunbeam" }
# YAML
serde_yaml = "0.9"

View File

@@ -16,7 +16,7 @@ async-trait = { workspace = true }
tracing = { workspace = true }
thiserror = { workspace = true }
regex = { workspace = true }
wfe-buildkit-protos = { version = "1.7.0", path = "../wfe-buildkit-protos", registry = "sunbeam" }
wfe-buildkit-protos = { version = "1.8.0", path = "../wfe-buildkit-protos", registry = "sunbeam" }
tonic = "0.14"
tower = { version = "0.4", features = ["util"] }
hyper-util = { version = "0.1", features = ["tokio"] }

View File

@@ -9,7 +9,7 @@ description = "containerd container runner executor for WFE"
[dependencies]
wfe-core = { workspace = true }
wfe-containerd-protos = { version = "1.7.0", path = "../wfe-containerd-protos", registry = "sunbeam" }
wfe-containerd-protos = { version = "1.8.0", path = "../wfe-containerd-protos", registry = "sunbeam" }
tokio = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }

View File

@@ -9,7 +9,7 @@ description = "Deno bindings for the WFE workflow engine"
[dependencies]
wfe-core = { workspace = true, features = ["test-support"] }
wfe = { version = "1.7.0", path = "../wfe", registry = "sunbeam" }
wfe = { version = "1.8.0", path = "../wfe", registry = "sunbeam" }
deno_core = { workspace = true }
deno_error = { workspace = true }
tokio = { workspace = true }

View File

@@ -14,9 +14,9 @@ path = "src/main.rs"
[dependencies]
# Internal
wfe-core = { workspace = true, features = ["test-support"] }
wfe = { version = "1.7.0", path = "../wfe", registry = "sunbeam" }
wfe-yaml = { version = "1.7.0", path = "../wfe-yaml", registry = "sunbeam", features = ["rustlang", "buildkit", "containerd"] }
wfe-server-protos = { version = "1.7.0", path = "../wfe-server-protos", registry = "sunbeam" }
wfe = { version = "1.8.0", path = "../wfe", registry = "sunbeam" }
wfe-yaml = { version = "1.8.0", path = "../wfe-yaml", registry = "sunbeam", features = ["rustlang", "buildkit", "containerd"] }
wfe-server-protos = { version = "1.8.0", path = "../wfe-server-protos", registry = "sunbeam" }
wfe-sqlite = { workspace = true }
wfe-postgres = { workspace = true }
wfe-valkey = { workspace = true }