xbp-deploy 10.57.0

Service-centric declarative deploy engine for XBP.
Documentation
//! Declarative, service-centric deploy engine for XBP.
//!
//! **Purity rule:** the engine depends only on:
//! - project config (view types)
//! - OCI resolver/promoter traits
//! - Kubernetes adapter traits
//! - optional Cloudflare deploy adapter trait (CLI-injected)
//!
//! No CLI I/O, no Athena product islands, no implicit runtime state.
//!
//! Kubernetes apply/rollout behaviour is unchanged for
//! `kubernetes` / `kubernetes-operator` services. Cloudflare providers are
//! additive and never populate `k8s_plan.services`.

mod bootstrap;
mod expose;
mod cloudflare;
mod compose;
mod context;
mod error;
mod failure;
mod graph;
mod history;
mod lock;
mod oci_build;
mod plan_filter;
mod planner;
mod promotion;
mod providers;
mod runner;
mod target_resolver;
mod types;
mod validator;
mod verifier;

pub use bootstrap::{
    bootstrap_manifest_yaml, bootstrap_manifest_yaml_with_pull_policy, workload_name,
};
pub use expose::{
    effective_expose, ensure_hosts_entries, expose_service, expose_service_with_auto, should_expose,
    ExposeResult,
};
pub use compose::{
    compose_service_runtime, compose_service_runtime_with_opts, env_key_looks_secret,
    parse_dotenv_file, parse_dotenv_str,
    ComposedRuntime,
};
pub use cloudflare::{CloudflareDeployAdapter, CloudflareServiceDeployRequest};
pub use context::{DeployContext, DeployFlags, DeployMode};
pub use oci_build::{OciBuildAdapter, OciBuildRequest, OciBuildResult};
pub use error::{DeployError, Result};
pub use graph::{order_services, ServiceGraph, ServiceNode};
pub use failure::{
    classify_deploy_error, ClassifiedDeployOutcome, DeployFailureClass, DeployPhase,
};
pub use history::{
    deploy_secret_placeholder, parse_deploy_secret_placeholder, parse_index_raw, record_from_plan,
    record_from_plan_with_classification, record_from_plan_with_version,
    redact_plan_runtime_env, revitalize_record_runtime_env, runtime_env_value_should_redact,
    secret_value_hash, DeployHistoryIndex, DeployHistoryRecord, DeployHistorySecret,
    DeployHistoryStats, DeployHistoryStore, HistoryEntry, SanitizedHistoryRecord,
    DEPLOY_SECRET_PLACEHOLDER_PREFIX,
};
pub use lock::{
    compute_plan_hash, load_lock, lock_from_plan, write_lock, DeployLockFile, DeployLockImage,
};
pub use plan_filter::{
    filter_deploy_plan, logical_service_name, retain_services_in_plan, service_plan_labels,
    unique_service_names,
};
pub use planner::{DefaultDeployPlanner, DeployPlanner};
pub use promotion::DefaultPromoter;
pub use providers::{
    destination_to_provider, is_all_destinations, is_cloudflare_provider, is_kubernetes_provider,
    is_local_provider, is_oci_provider, is_railway_provider, known_destinations,
    normalize_destination, parse_destinations, provider_priority, provider_to_destination,
    DESTINATION_ALL,
};
pub use runner::{DefaultDeployRunner, DeployRunner, DeployResult};
pub use target_resolver::{resolve_target, TargetResolution};
pub use types::*;
pub use validator::{validate_project_config, validate_project_config_for_target};
pub use verifier::{
    k8s_verify_line_is_failure, DefaultDeployVerifier, DeployVerifier, VerifyResult,
};