带你拿CNB的天才程序员身份认证

背景

最近一直在使用CNB构建一些网站小工具,突然发现CNB中有一个“天才程序员”的身份认证,看任务蛮简单的,就去做了一下,顺便记录了下来。

只要一步一步照着做,你也可以拿到的。

教程

入口

  1. 访问身份认证页面

  1. 点击天才程序员右侧的去完成任务

  1. 点击去完成任务,会跳转到官方的代码仓库 cnb/tutorial/hello-cnb

正式参加

  1. 新建组织 — 如果你是 CNB 新手,还没有自己的组织,点击右上角「+」→「新建组织」,按照指引创建一个组织。Fork 仓库需要归属到一个组织或个人空间下
  2. 点击右上角 Fork 按钮,将仓库 fork 到你的个人空间

任务1:个人信息

  1. 修改默认用户名:

CNB 注册后会分配一个默认用户名(如 cnb.cwH7BL2BwHA),前往 账号设置 修改为一个有辨识度的用户名.

  1. 设置个人签名:

个人签名(Bio)会展示在你的主页上,让其他开发者快速了解你。进入 个人设置 填写即可

  1. 设置个人仓库墙

个人主页上设置你的仓库墙,需要注意的是只有空开的仓库才可以设置哦

  1. 关注其他开发者

如果没有关注的开发者,可以关注我哦

  1. 关注指定仓库

如果没有关注仓库,也可以关注我的仓库

任务2:仓库设置

  1. 配置保护分支

保护分支可以防止未经 Review 的代码直接 push 到主分支。在仓库「设置 → 分支保护」中配置。如果你是仓库负责人或管理员,可以同时开启「管理员及负责人可以推送到保护分支」选项。

  1. 添加开源 LICENSE

开源许可证声明了代码的使用规则。没有 LICENSE 的代码默认是”保留所有权利”的,加一个标准许可证(如 MIT)才能让别人放心使用你的代码

这个只要创建一个LICENSE文件即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MIT License

Copyright (c) 2026 shellingford

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

  1. 仓库 UI 定制

通过 .cnb/settings.yml 配置文件,你可以自定义仓库页面上 Fork 按钮和云原生开发按钮的描述、悬浮图片等,让仓库更有个性。

创建.cnb/settings.yml文件

任务3:流水线配置

  1. 开启事件自动触发

Fork 的仓库默认不会自动触发云原生构建。需要在仓库「设置 → 云原生构建」中开启「允许事件自动触发」,这样后续的流水线任务才能正常运行

  1. ** 接下来的任务需要修改以下文件 **
  • .cnb.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 流水线配置语法:https://docs.cnb.cool/zh/build/grammar.html
include:
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level1.yml
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level2.yml
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level3.yml
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level4.yml
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level5.yml
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level6.yml
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level7.yml
- https://cnb.cool/cnb/tutorial/hello-cnb-ci/-/blob/main/level8.yml

# main 分支 push 事件:构建 Docker 镜像并推送至本仓库制品库
main:
push:
- stages:
- name: build knowledge base
type: knowledge:update
options:
include: "**/**.md"
# exclude: ["node_modules/**", "dist/**"] # 排除无需索引的目录
# issueSyncEnabled: true # 同步 Issue 数据(默认开启)
# chunkSize: 1500 # 分块大小(默认 1500)
web_trigger_one:
- stages:
- name: 输出环境变量
script:
- echo $a
- echo $b
- echo $var1
- echo $var2
- echo $var3

# 兜底匹配(tag_push 属于仓库级事件,只能配置在 $ 兜底分支下)
$:
tag_deploy.development: # 部署 development 环境
- name: dev
stages:
- name: 部署环境名
script: echo $name
- name: tag 名
script: echo $tag_name
pull_request:
- name: pr-ci-check
stages:
- name: echo
script: echo "PR 事件触发成功 ✅"
tag_push:
- stages:
- name: echo
script: echo $CNB_BRANCH
vscode:
- docker:
image: cnbcool/default-dev-env:latest
services:
- name: vscode
options:
onlyPreview: true
launch: node index.js
- name: docker
stages:
- name: ls
script: ls -al

  • .cnb / web_trigger.yml 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# .cnb/web_trigger.yml
branch:
# 如下按钮在分支名以 release 开头的分支详情页面显示
- reg: "^main"
buttons:
- name: 构建部署
# 如存在,则将作为流水线 title,否则流水线使用默认 title
description: 构建部署
event: web_trigger_one # 触发的 CI 事件名
# 权限控制,不配置则有仓库写权限的用户可触发构建
# 如果配置,则需要有仓库写权限,并且满足 roles 或 users 其中之一才有权限触发构建
permissions:
# roles 和 users 配置其中之一或都配置均可,二者满足其一即可
# 角色非向上包含关系。例如如下配置,表示仅 master 或 developer 角色才有权限,owner 即使仓库权限更高,但此处无权限
roles:
- owner
  • .cnb/tag_deploy.yml 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
environments:
- name: development
description: Development environment
env:
name: development
tag_name: $CNB_BRANCH
- name: staging
description: Staging environment
env:
name: staging
tag_name: $CNB_BRANCH
- name: production
description: Production environment
env:
name: production
tag_name: $CNB_BRANCH
  • cnb / settings.yml 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 云原生开发配置(读取启动按钮所在分支的配置)
workspace:
launch:
button:
name: 启动云原生开发
description: 点击此按钮启动云原生开发环境
hoverImage: .cnb/launch-hover.gif
cpus: 4
disabled: false
autoOpenWebIDE: false

# Issue 配置(读取默认分支的配置)
issue:
button:
description: ~bug~ 给你!
hoverImage: https://cnb.cool/my/test/-/git/raw/main/issue-hover.png

# Fork 配置(读取默认分支的配置)
fork:
button:
description: 你的仓库不错,现在是我的了
hoverImage: .cnb/fork-hover.png

# 抄作业按钮配置(读取默认分支的配置)
copyRepo:
button:
description: 你的仓库不错,现在是我的了
hoverImage: .cnb/copy-hover.png

npc:
roles:
- name: 专家
prompt: |
你以"专家"自称,致力于提供专业、准确的技术解答。帮助我完成闯关任务。

  1. 以下操作各做一次,并且确保构建部署成功
  • push代码
  • Pull Request
  • Tag push
  • 通过web界面按钮构建一次
  • 打个release tag,并部署一次
  • 点击云原生开发环境一次

任务4:制品管理

创建以下制品库各一个

  • Docker 制品
  • NPM 制品仓库
  • Maven 制品仓库

任务5:任务集

任务集(Missions)是 CNB 的轻量项目管理功能,支持创建、分配和追踪工作项。你可以在组织中创建任务集来管理团队的开发计划和 Bug 跟踪

遇到问题?

如果遇到问题,就创建issue并且@CodeBuddy , 这个NPC会帮你修改项目并提PR的。

领取奖励

  1. 官方仓库提交一个PR,等待检查状态通过即可,这个检查状态的流程最后会请求接口帮你获取资格。需要注意的是虽然在fork出来自己的仓库里提PR也会跑这个检查流程,但是最终接口是没有权限的。

  1. 回到身份认证页面就能看到天才程序员已认证

  1. 最后点击领取权益,可以领取 AI Credits 资源 666 credits/月