背景 最近一直在使用CNB构建一些网站小工具,突然发现CNB中有一个“天才程序员”的身份认证,看任务蛮简单的,就去做了一下,顺便记录了下来。
只要一步一步照着做,你也可以拿到的。
教程 入口
访问身份认证页面
点击天才程序员右侧的去完成任务
点击去完成任务,会跳转到官方的代码仓库 cnb/tutorial/hello-cnb
正式参加
新建组织 — 如果你是 CNB 新手,还没有自己的组织,点击右上角「+」→「新建组织」,按照指引创建一个组织。Fork 仓库需要归属到一个组织或个人空间下
点击右上角 Fork 按钮,将仓库 fork 到你的个人空间
任务1:个人信息
修改默认用户名:
CNB 注册后会分配一个默认用户名(如 cnb.cwH7BL2BwHA),前往 账号设置 修改为一个有辨识度的用户名.
设置个人签名:
个人签名(Bio)会展示在你的主页上,让其他开发者快速了解你。进入 个人设置 填写即可
设置个人仓库墙
在个人主页 上设置你的仓库墙,需要注意的是只有空开的仓库才可以设置哦
关注其他开发者
如果没有关注的开发者,可以关注 我哦
关注指定仓库
如果没有关注仓库,也可以关注我的仓库
任务2:仓库设置
配置保护分支
保护分支可以防止未经 Review 的代码直接 push 到主分支。在仓库「设置 → 分支保护」中配置。如果你是仓库负责人或管理员,可以同时开启「管理员及负责人可以推送到保护分支」选项。
添加开源 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.
仓库 UI 定制
通过 .cnb/settings.yml 配置文件,你可以自定义仓库页面上 Fork 按钮和云原生开发按钮的描述、悬浮图片等,让仓库更有个性。
创建.cnb/settings.yml文件
任务3:流水线配置
开启事件自动触发
Fork 的仓库默认不会自动触发云原生构建。需要在仓库「设置 → 云原生构建」中开启「允许事件自动触发」,这样后续的流水线任务才能正常运行
** 接下来的任务需要修改以下文件 **
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
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
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: | 你以"专家"自称,致力于提供专业、准确的技术解答。帮助我完成闯关任务。
以下操作各做一次,并且确保构建部署成功
push代码
Pull Request
Tag push
通过web界面按钮构建一次
打个release tag,并部署一次
点击云原生开发环境一次
任务4:制品管理 创建以下制品库各一个
Docker 制品
NPM 制品仓库
Maven 制品仓库
任务5:任务集 任务集(Missions)是 CNB 的轻量项目管理功能,支持创建、分配和追踪工作项。你可以在组织中创建任务集来管理团队的开发计划和 Bug 跟踪
遇到问题? 如果遇到问题,就创建issue并且@CodeBuddy , 这个NPC会帮你修改项目并提PR的。
领取奖励
去官方仓库 提交一个PR,等待检查状态通过即可,这个检查状态的流程最后会请求接口帮你获取资格。需要注意的是虽然在fork出来自己的仓库里提PR也会跑这个检查流程,但是最终接口是没有权限的。
回到身份认证页面就能看到天才程序员已认证
最后点击领取权益,可以领取 AI Credits 资源 666 credits/月