跳到主要内容

第一条流水线:不写 YAML 也能跑通

理论说再多不如先跑通一次。这篇给两条路:让 NPC 帮你写,或者自己手写。

路线 A:@CodeBuddy 帮你写(推荐新手)​

在仓库里新建一个 Issue,勾选 「替我上班」,然后:

@CodeBuddy 帮我在 main 分支配置一条流水线:当代码 push 时输出 "hello world"

它会替你做三件事:在根目录生成 .cnb.yml、提交推送、把执行结果回报到评论里。

然后去 云原生构建 标签页看这一条 push 触发的构建,点开看日志。

路线 B:手写,其实只有 7 行​

.cnb.yml
main:
push:
- stages:
- name: hello
script: echo "hello world"

逐层拆:

行层级含义
main:触发分支只在 main 分支生效
push:触发事件有代码推上来就触发
- stages:流水线这里的 - 表示一条 pipeline,可有多条,多条并发执行
- name/script:任务在容器里跑一条命令

提交推送:

git add .cnb.yml
git commit -m "ci: add hello pipeline"
git push origin main

两个立刻会遇到的问题​

一、为什么用了 node 的包却找不到 node?

流水线默认跑在一个 Docker 容器里,容器里有什么取决于你指定的镜像。不指定就是平台的缺省镜像,不一定有 node、python、mvn。

.cnb.yml
main:
push:
- docker:
image: node:22
stages:
- name: node version
script: node -v

二、失败之后想通知别人怎么办

.cnb.yml
main:
pull_request:
- stages:
- name: lint
script: echo "lint..."
- name: test
script: echo "test..."
failStages:
- name: notify
script: echo "PR 检查失败,通知群里!"

failStages 只在前面任一 stage 失败时执行,这是最省事的告警写法。

语法提示一定要配​

.cnb.yml 是目前唯一需要手写的东西,别用记事本硬写。用云原生开发环境打开,原生支持补全和校验;本地 VS Code 装 redhat.vscode-yaml 插件,并在 settings.json 里挂 schema:

{
"yaml.schemas": {
"https://docs.cnb.cool/conf-schema-zh.json": ".cnb.yml"
}
}

跑通之后​

你已经完成了 CI/CD 的最小闭环:代码变更 → 自动执行 → 看到结果。

后面的篇章,基本上都是在这 7 行上做加法:换镜像、加事件、加环境变量、加缓存、加速。