chore: bump version to 1.8.0, update CHANGELOG
This commit is contained in:
25
CHANGELOG.md
25
CHANGELOG.md
@@ -2,6 +2,31 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
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
|
## [1.7.0] - 2026-04-05
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
22
Cargo.toml
22
Cargo.toml
@@ -3,7 +3,7 @@ members = ["wfe-core", "wfe-sqlite", "wfe-postgres", "wfe-opensearch", "wfe-valk
|
|||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "1.7.0"
|
version = "1.8.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://src.sunbeam.pt/studio/wfe"
|
repository = "https://src.sunbeam.pt/studio/wfe"
|
||||||
@@ -38,16 +38,16 @@ redis = { version = "0.27", features = ["tokio-comp", "connection-manager"] }
|
|||||||
opensearch = "2"
|
opensearch = "2"
|
||||||
|
|
||||||
# Internal crates
|
# Internal crates
|
||||||
wfe-core = { version = "1.7.0", path = "wfe-core", registry = "sunbeam" }
|
wfe-core = { version = "1.8.0", path = "wfe-core", registry = "sunbeam" }
|
||||||
wfe-sqlite = { version = "1.7.0", path = "wfe-sqlite", registry = "sunbeam" }
|
wfe-sqlite = { version = "1.8.0", path = "wfe-sqlite", registry = "sunbeam" }
|
||||||
wfe-postgres = { version = "1.7.0", path = "wfe-postgres", registry = "sunbeam" }
|
wfe-postgres = { version = "1.8.0", path = "wfe-postgres", registry = "sunbeam" }
|
||||||
wfe-opensearch = { version = "1.7.0", path = "wfe-opensearch", registry = "sunbeam" }
|
wfe-opensearch = { version = "1.8.0", path = "wfe-opensearch", registry = "sunbeam" }
|
||||||
wfe-valkey = { version = "1.7.0", path = "wfe-valkey", registry = "sunbeam" }
|
wfe-valkey = { version = "1.8.0", path = "wfe-valkey", registry = "sunbeam" }
|
||||||
wfe-yaml = { version = "1.7.0", path = "wfe-yaml", registry = "sunbeam" }
|
wfe-yaml = { version = "1.8.0", path = "wfe-yaml", registry = "sunbeam" }
|
||||||
wfe-buildkit = { version = "1.7.0", path = "wfe-buildkit", registry = "sunbeam" }
|
wfe-buildkit = { version = "1.8.0", path = "wfe-buildkit", registry = "sunbeam" }
|
||||||
wfe-containerd = { version = "1.7.0", path = "wfe-containerd", registry = "sunbeam" }
|
wfe-containerd = { version = "1.8.0", path = "wfe-containerd", registry = "sunbeam" }
|
||||||
wfe-rustlang = { version = "1.7.0", path = "wfe-rustlang", registry = "sunbeam" }
|
wfe-rustlang = { version = "1.8.0", path = "wfe-rustlang", registry = "sunbeam" }
|
||||||
wfe-kubernetes = { version = "1.7.0", path = "wfe-kubernetes", registry = "sunbeam" }
|
wfe-kubernetes = { version = "1.8.0", path = "wfe-kubernetes", registry = "sunbeam" }
|
||||||
|
|
||||||
# YAML
|
# YAML
|
||||||
serde_yaml = "0.9"
|
serde_yaml = "0.9"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ async-trait = { workspace = true }
|
|||||||
tracing = { workspace = true }
|
tracing = { workspace = true }
|
||||||
thiserror = { workspace = true }
|
thiserror = { workspace = true }
|
||||||
regex = { 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"
|
tonic = "0.14"
|
||||||
tower = { version = "0.4", features = ["util"] }
|
tower = { version = "0.4", features = ["util"] }
|
||||||
hyper-util = { version = "0.1", features = ["tokio"] }
|
hyper-util = { version = "0.1", features = ["tokio"] }
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ description = "containerd container runner executor for WFE"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wfe-core = { workspace = true }
|
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 }
|
tokio = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ description = "Deno bindings for the WFE workflow engine"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wfe-core = { workspace = true, features = ["test-support"] }
|
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_core = { workspace = true }
|
||||||
deno_error = { workspace = true }
|
deno_error = { workspace = true }
|
||||||
tokio = { workspace = true }
|
tokio = { workspace = true }
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ path = "src/main.rs"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
# Internal
|
# Internal
|
||||||
wfe-core = { workspace = true, features = ["test-support"] }
|
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" }
|
||||||
wfe-yaml = { version = "1.7.0", path = "../wfe-yaml", registry = "sunbeam", features = ["rustlang", "buildkit", "containerd"] }
|
wfe-yaml = { version = "1.8.0", path = "../wfe-yaml", registry = "sunbeam", features = ["rustlang", "buildkit", "containerd"] }
|
||||||
wfe-server-protos = { version = "1.7.0", path = "../wfe-server-protos", registry = "sunbeam" }
|
wfe-server-protos = { version = "1.8.0", path = "../wfe-server-protos", registry = "sunbeam" }
|
||||||
wfe-sqlite = { workspace = true }
|
wfe-sqlite = { workspace = true }
|
||||||
wfe-postgres = { workspace = true }
|
wfe-postgres = { workspace = true }
|
||||||
wfe-valkey = { workspace = true }
|
wfe-valkey = { workspace = true }
|
||||||
|
|||||||
Reference in New Issue
Block a user