基于 llms-full.txt 中 .cnb.yml / CNB 流水线规则实现的一个 Go 本地执行器原型。
.cnb.ymlinclude:支持字符串 / 对象 / config 内联形式!reference:支持跨文件引用,最多递归 10 层<<$ fallbackstages 串行jobs:
retryallowFailurelock(本进程内锁)failStages / endStagesexit 78 中断流水线env / importsimports 支持 YAML / JSON / key=value / 证书文件$VAR / ${VAR} 变量替换exports 导出后续 Job 可见的环境变量##[set-output key=value]pipeline.docker.imagepipeline.docker.build
versionBy + buildArgs 计算本地缓存 tagby 控制 build context 可见文件stage.image / job.imagesettings 转为 PLUGIN_*docker.volumes 的基础映射与 copy-on-write 模式cnb:awaitcnb:resolvecnb:read-filecnb:destroy-token(本地近似实现)cnb:apply(同仓本地递归触发)cnb:trigger(仅支持当前仓本地近似实现)docker:cache(noop 占位)CNB_TOKEN、可信/不可信事件隔离、密钥仓库 allow 校验service:docker / service:vscode 的完整平台注入行为await/resolve 的死锁检测仅做了基础等待,未实现完整拓扑检测breakIfModify / skipIfModify 还没有接真实 SCM 源分支更新检测docker run 近似,不是平台内同一长生命周期容器devcontainer 仅保留配置位,未完整展开go run ./cmd/cnbexec \ --config .cnb.yml \ --workspace . \ --branch main \ --event push \ --changed package.json \ --changed src/main.go \ -e FOO=bar
如果你希望没有 pipeline.docker.image 时也默认放进某个容器中执行:
CNB_EXEC_DEFAULT_IMAGE=alpine:3.20 go run ./cmd/cnbexec --config .cnb.yml
执行结果会输出一份 JSON 摘要。
仓库内已经提供一套模板基线,位于 templates/:
templates/minimal:最小可运行示例templates/builtin:内置任务回归模板templates/control-flow:流程控制模板templates/full-supported:当前执行器综合能力展示模板模板总览见:templates/README.md。
这些模板已经加入自动化回归测试,适合在后续重构执行器时用来防回归。
go test ./...