Documentation
¶
Index ¶
Constants ¶
View Source
const ( ExecutorStatusPrepared = "PREPARED" ExecutorStatusRunning = "RUNNING" ExecutorStatusDestroyed = "DESTROYED" )
ExecutorStatus 定义executor状态常量
Variables ¶
This section is empty.
Functions ¶
func EnvExportPrefix ¶ added in v0.3.1
EnvExportPrefix 生成 export 行命令前缀,供不支持进程级环境变量注入的 执行器(如 kubernetes exec)兜底使用。键排序保证输出稳定。
func ShellQuote ¶ added in v0.3.1
ShellQuote 用单引号转义字符串,使其成为安全的 shell 字面量 (值在调用前已完成模板渲染,转义后即可安全拼入命令文本)。
Types ¶
type Bridge ¶
type Bridge interface {
// Conn 连接到环境中
Conn(ctx context.Context, adapter Adapter) (Executor, error)
}
Bridge 桥接器接口
type CommandWrapper ¶
type CommandWrapper struct {
StepName string // 步骤名称
Command string // 要执行的命令
Env map[string]string // 命令级环境变量(已渲染终值):执行器尽量以真实进程
// 环境变量注入;不支持时在命令前拼接单引号转义的 export 行
// CaptureOutput 标记"输出必须完整送达"的步骤(节点声明了 extract):
// 输出块是下游节点的数据来源,一旦丢失会让下游报"缺参"而掩盖真因。
// 仅 docker 执行器使用:它在容器内加 tee 兜底(落盘 + 断流后补齐尾部)。
CaptureOutput bool
}
CommandWrapper 包装命令,携带步骤元信息用于精确映射
type Executor ¶
type Executor interface {
// Prepare 准备环境
Prepare(ctx context.Context) error
// Destruction 销毁环境
Destruction(ctx context.Context) error
// Transfer 从 commandChan 接收命令执行,并将结果发送到 resultChan
// inputChan 用于接收交互式输入数据,可为 nil(不需要输入时)
Transfer(ctx context.Context, resultChan chan<- any, commandChan <-chan any, inputChan <-chan []byte)
}
Executor 执行器接口
type ExecutorInfoProvider ¶
type ExecutorInfoProvider interface {
// GetRuntimeInfo 获取executor特定的运行时信息
GetRuntimeInfo() map[string]any
// GetInstanceId 获取executor实例ID (容器ID/Pod名称等)
GetInstanceId() string
// GetType 获取executor类型
GetType() string
}
ExecutorInfoProvider 用于获取 executor 运行时信息
type ExecutorProvider ¶
type ExecutorProvider interface {
// GetExecutor 根据执行器名称返回对应的Executor实例
GetExecutor(ctx context.Context, name string) (Executor, error)
}
ExecutorProvider Executor提供者接口,用于根据类型创建Executor
type InputReadyEvent ¶
type InputReadyEvent struct {
StepName string // 步骤名称
}
InputReadyEvent 输入就绪事件 通知流水线 InputChan 已准备好,可以开始发送输入
type InputRequest ¶
type InputRequest struct {
Prompt string `json:"prompt"` // 显示给用户的提示信息
Type string `json:"type"` // 输入类型: text/password/confirm
Timeout int `json:"timeout"` // 等待超时(秒),0表示使用默认值
}
InputRequest 输入请求信息 程序通过输出 {"flowx":"wait-input",...} 来请求用户输入
type InputRequestEvent ¶
type InputRequestEvent struct {
StepName string // 步骤名称
Request *InputRequest // 输入请求详情
}
InputRequestEvent 输入请求事件 执行器检测到程序等待输入时发送此事件
type StepResult ¶
type StepResult struct {
StepName string
Command string
Output string
Error error
StartTime time.Time
FinishTime time.Time
// StreamTruncated 标记输出流曾被中断(已尽力重挂续读)。
// docker 执行器专用:cpolar 等隧道下的 docker exec 流会被中途掐断,
// 命令仍能跑完(ExitCode=0)但尾部输出丢失——节点输出块往往就在尾部,
// 丢失会让下游报“缺参”(exec 364 事故)。宿主可据此提示“输出可能不完整”。
StreamTruncated bool
}
StepResult 步骤执行结果
Click to show internal directories.
Click to hide internal directories.