let w = import "../../../schemas/lib/workflow.ncl" in { deploy_services | w.WorkflowDef = { id = "deploy-services", description = "Deploy L3 management services after k0s is operational", steps = [ { id = "deploy-postgresql", targets = [{ component = "postgresql", operation = "install" }], condition = "k0s-status = operational; nfs-shared storage class exists", on_error = 'Stop, }, { id = "deploy-forgejo", targets = [{ component = "forgejo", operation = "install" }], depends_on = ["deploy-postgresql"], condition = "postgresql-status = operational", on_error = 'Stop, }, { id = "deploy-woodpecker", targets = [{ component = "woodpecker", operation = "install" }], depends_on = ["deploy-postgresql", "deploy-forgejo"], condition = "postgresql-status = operational; forgejo-status = operational", on_error = 'Stop, }, { id = "deploy-zot", targets = [{ component = "zot", operation = "install" }], condition = "k0s-status = operational", on_error = 'Stop, }, { id = "validate-all", targets = [ { component = "postgresql", operation = "health" }, { component = "forgejo", operation = "health" }, { component = "woodpecker", operation = "health" }, { component = "zot", operation = "health" }, ], depends_on = ["deploy-forgejo", "deploy-woodpecker", "deploy-zot"], on_error = 'Continue, }, ], }, metadata | w.WorkflowMetadata = { id = "deploy-services", name = "Deploy Management Services", description = "PostgreSQL + Forgejo + Woodpecker + Zot on k0s cluster mode", tags = ["deploy", "services", "L3"], actors = ['Developer, 'Agent], fsm_dimension = "services-status", notifications = { subject_prefix = "workflow.deploy-services", on_start = true, on_step = true, on_complete = true, on_error = true, }, backlog_refs = ["bl-001"], triggers = { manual = true }, }, }