Skip to content

cnb-coll-faq

云原生构建-cnb.cool

image-20250401123605204

官网

https://cnb.cool/

.cnb.yml配置版本迭代

二丫代码

具体代码:
yaml
main:
  push:
    - stageOne:
      runner:
        cpus: 8
      services:
        - docker
        - git-clone-yyds
      stages:
        - name: sync to github
          image: tencentcom/git-sync
          imports: https://cnb.cool/eryajf/build-env/-/blob/main/env.yaml
          settings:
            branch: main
            auth_type: https
            username: ${GIT_USERNAME}
            password: ${GIT_ACCESS_TOKEN}
            target_url: https://github.com/opsre/JenkinsGuide.git
            git_email: 'github-actions[bot]@users.noreply.github.com'
    - stageTwo:
      runner:
        cpus: 16
      services:
        - docker
        - git-clone-yyds
      docker:
        image: docker.cnb.cool/znb/images/node:18
        volumes:
          - /data/.cache:copy-on-write
      stages:
        - name: 🖨️ 打印环境
          script: |
            node -v && npm -v && yarn -v && pnpm -v
        - name: 📦️ 安装依赖
          script: |
            pnpm install
        - name: ⚗️ 编译项目
          script: |
            pnpm build
        - name: 🚚 发布制品
          image: tencentcom/rsync
          imports: https://cnb.cool/eryajf/build-env/-/blob/main/env.yaml
          settings:
            user: ${SSH_USER}
            key: ${SSH_KEY}
            port: 2023
            hosts:
              - prod.eryajf.net
            source: docs/.vitepress/dist/
            target: /data/www/JenkinsGuide/
            delete: true
            script: |
              docker run --rm docker.cnb.cool/znb/images/lenye-pmsg \
              workweixin bot -k ${WECOM_BOT} \
              -m markdown "🎉 JenkinsGuide 又一次发布啦!\n发布时间: `date "+%Y-%m-%d %H:%M"`"

        - name: 🧘‍♂️ 刷新缓存
          imports: https://cnb.cool/eryajf/build-env/-/blob/main/env.yaml
          script: |
            docker login -u ${CNB_TOKEN_USER_NAME} -p "${CNB_TOKEN}" ${CNB_DOCKER_REGISTRY}
            docker run --rm -e DOGE_AK=${DOGE_AK} -e DOGE_SK=${DOGE_SK} \
            docker.cnb.cool/eryajf/eryactl \
            eryactl doge flushcdnpath -p "https://jenkinsguide.opsre.top/"

$:
  vscode:
    - docker:
        image: docker.cnb.cool/znb/images/node:18
      runner:
        cpus: 8
      services:
        - vscode
        - docker
      stages:
        - name: 默认安装依赖
          script:
            - pnpm install

v1-2025.4.1-第一次成功版(成功测试)

yaml
master:
  push:
    - runner:
        cpus: 16
      services:
        - docker
        - git-clone-yyds
      docker:
        image: docker.cnb.cool/znb/images/node:18
        volumes:
          - /data/.cache:copy-on-write #声明式的构建缓存
      stages:
        - name: 🖨️ 打印环境
          script: |
            node -v && npm -v && yarn -v && pnpm -v
        - name: 📦️ 安装依赖         
          script: |
            pnpm install
            
        - name: ⚗️ 编译项目       
          script: |
            pnpm docs:build   # VitePress 专用命令
        - name: 🚚 发布制品        
          image: tencentcom/rsync
          imports: https://cnb.cool/onedayxyy/vitepress-theme-teek-one-private/-/blob/master/env.yaml
          settings:
            user: ${SSH_USER}
            key: ${SSH_KEY}
            port: 22
            hosts:
              - ${ECS_IP}
            source: docs/.vitepress/dist/
            target: /root/rsync/rsync-vitepress/dist/
            delete: true

v2-2025.4.2-第2次改进版(成功测试)

增加条件触发。

yaml
master:
  push:
    - runner:
        cpus: 16
      services:
        - docker
        - git-clone-yyds
      docker:
        image: docker.cnb.cool/znb/images/node:18
        volumes:
          - /data/.cache:copy-on-write #声明式的构建缓存
      stages:
        - name: 🖨️ 打印环境
          if: |
            [ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
          script: |
            node -v && npm -v && yarn -v && pnpm -v
        - name: 📦️ 安装依赖 
          if: |
            [ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]          
          script: |
            pnpm install
            
        - name: ⚗️ 编译项目
          if: |
            [ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]        
          script: |
            pnpm docs:build   # VitePress 专用命令
        - name: 🚚 发布制品
          if: |
            [ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]            
          image: tencentcom/rsync
          imports: https://cnb.cool/onedayxyy/vitepress-theme-teek-one-private/-/blob/master/env.yaml
          settings:
            user: ${SSH_USER}
            key: ${SSH_KEY}
            port: 22
            hosts:
              - ${ECS_IP}
            source: docs/.vitepress/dist/
            target: /root/rsync/rsync-vitepress/dist/
            delete: true

案例

JenkinsGuide公开仓库

@One|onedayxyy.cn

https://cnb.cool/opsre/JenkinsGuide/-/blob/main/.cnb.yml

image-20250401121223997

image-20250401121254004

image-20250401121326731

cnb.cool 需求

  1. 能同时推送到gitee库吗?
  2. 如何推送后同时刷新cdn?
  3. 自动构建成功后,发生消息通知?
  4. 如何只推送仓库,且不构建?或者 如何推送时 加上某个参数后 才会进行构建?(已解决)
  5. 还有其他平台可以实现类似cnb.cool 效果吗?(已解决)

cnb.cool其它特性

使用

公共仓库,不要用env命令打印环境变量

image-20250402222240401

打印变量的方法

image-20250402065348519

image-20250402065357854

可以打印全部内容变量的哦

image-20250402070659309

image-20250402070742189

::: datils 全部内置变量为:

yaml
打印所有变量:=======================================
[🖨️ 打印环境] CNB_TAG_IS_RELEASE=false
[🖨️ 打印环境] CNB_PULL_REQUEST_IID=
[🖨️ 打印环境] CNB_COMMENT_ID=
[🖨️ 打印环境] CNB_PULL_REQUEST_LIKE=false
[🖨️ 打印环境] CNB_PULL_REQUEST_MERGE_SHA=
[🖨️ 打印环境] CNB_GROUP_SLUG=onedayxyy
[🖨️ 打印环境] CNB_COMMIT=998925b7ecda930bc8930e4b3e432b406f9bde89
[🖨️ 打印环境] LANGUAGE=C.UTF-8
[🖨️ 打印环境] CNB_COMMITTER=hg_it_nuc
[🖨️ 打印环境] CNB_WEB_ENDPOINT=https://cnb.cool
[🖨️ 打印环境] CNB_COMMIT_MESSAGE_TITLE=commit data
[🖨️ 打印环境] CNB_PULL_REQUEST=false
[🖨️ 打印环境] CI=true
[🖨️ 打印环境] CNB_PIPELINE_KEY=pipeline-1
[🖨️ 打印环境] NODE_VERSION=18.20.8
[🖨️ 打印环境] HOSTNAME=6da14f19b39f
[🖨️ 打印环境] YARN_VERSION=1.22.22
[🖨️ 打印环境] CNB_PULL_REQUEST_ID=
[🖨️ 打印环境] CNB_REPO_NAME=vitepress-theme-teek-one-private
[🖨️ 打印环境] CNB_COMMENT_BODY=
[🖨️ 打印环境] CNB_PULL_REQUEST_SHA=
[🖨️ 打印环境] HOME=/root
[🖨️ 打印环境] CNB_IS_RETRY=false
[🖨️ 打印环境] CNB_TOKEN=****
[🖨️ 打印环境] CNB_EVENT=push
[🖨️ 打印环境] CNB_IS_NEW_BRANCH=false
[🖨️ 打印环境] CNB_BUILD_JOB_KEY=job-0
[🖨️ 打印环境] CNB_PULL_REQUEST_TARGET_SHA=
[🖨️ 打印环境] CNB_DOCKER_REGISTRY=docker.cnb.cool
[🖨️ 打印环境] CNB_ISSUE_DESCRIPTION=
[🖨️ 打印环境] CNB_ISSUE_IID=
[🖨️ 打印环境] CNB_REPO_ID=1907030244123078656
[🖨️ 打印环境] CNB_BRANCH=master
[🖨️ 打印环境] CNB_TAG_IS_PRE_RELEASE=false
[🖨️ 打印环境] CNB_TAG_RELEASE_DESC=
[🖨️ 打印环境] CNB_BUILD_USER=cnb.aYHw4hqhwFA
[🖨️ 打印环境] CNB_CPUS=16
[🖨️ 打印环境] CNB_IS_TAG=false
[🖨️ 打印环境] CNB_PULL_REQUEST_TITLE=
[🖨️ 打印环境] CNB_BUILD_USER_ID=1906923116693975040
[🖨️ 打印环境] CNB_BRANCH_SHA=998925b7ecda930bc8930e4b3e432b406f9bde89
[🖨️ 打印环境] CNB_PULL_REQUEST_REVIEWERS=
[🖨️ 打印环境] HUSKY_SKIP_INSTALL=1
[🖨️ 打印环境] CNB_ISSUE_ID=
[🖨️ 打印环境] CNB_IS_CRONEVENT=false
[🖨️ 打印环境] CNB_PIPELINE_NAME=pipeline-1
[🖨️ 打印环境] CNB_WEB_PROTOCOL=https
[🖨️ 打印环境] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[🖨️ 打印环境] CNB_HELM_REGISTRY=helm.cnb.cool
[🖨️ 打印环境] CNB_PULL_REQUEST_BRANCH=
[🖨️ 打印环境] CNB_BEFORE_SHA=fe56e4731e85128cfc808b245f10fbb38739f2f6
[🖨️ 打印环境] CNB_BUILD_WEB_URL=https://cnb.cool/onedayxyy/vitepress-theme-teek-one-private/-/build/logs/cnb-0lo-1inppcdrb
[🖨️ 打印环境] CNB_REPO_SLUG_LOWERCASE=onedayxyy/vitepress-theme-teek-one-private
[🖨️ 打印环境] CNB_PULL_REQUEST_SLUG=
[🖨️ 打印环境] CNB_REVIEW_REVIEWED_BY=
[🖨️ 打印环境] CNB_BUILD_STAGE_NAME=🖨️ 打印环境
[🖨️ 打印环境] CNB_WEB_HOST=cnb.cool
[🖨️ 打印环境] CNB_BUILD_START_TIME=Tue, 01 Apr 2025 23:01:02 GMT
[🖨️ 打印环境] LANG=C.UTF-8
[🖨️ 打印环境] CNB_TAG_MESSAGE=
[🖨️ 打印环境] CNB_TOKEN_USER_NAME=cnb
[🖨️ 打印环境] CNB_BUILD_JOB_NAME=🖨️ 打印环境
[🖨️ 打印环境] CNB_REPO_URL_HTTPS=https://cnb.cool/onedayxyy/vitepress-theme-teek-one-private.git
[🖨️ 打印环境] CNB_ISSUE_STATE=
[🖨️ 打印环境] CNB_PIPELINE_ID=cnb-0lo-1inppcdrb-001
[🖨️ 打印环境] CNB_ISSUE_TITLE=
[🖨️ 打印环境] CNB_COMMIT_MESSAGE=commit data
[🖨️ 打印环境] 
[🖨️ 打印环境] CNB_COMMITTER_EMAIL=2675263825@qq.com
[🖨️ 打印环境] CNB_COMMIT_SHORT=998925b7
[🖨️ 打印环境] CNB_PULL_REQUEST_PROPOSER=
[🖨️ 打印环境] CNB_IS_NEW_BRANCH_WITH_UPDATE=false
[🖨️ 打印环境] CNB_PULL_REQUEST_REVIEW_STATE=
[🖨️ 打印环境] CNB_REPO_SLUG=onedayxyy/vitepress-theme-teek-one-private
[🖨️ 打印环境] CNB_BUILD_WORKSPACE=/workspace/
[🖨️ 打印环境] CNB_GROUP_SLUG_LOWERCASE=onedayxyy
[🖨️ 打印环境] CNB_BUILD_ID=cnb-0lo-1inppcdrb
[🖨️ 打印环境] CNB_RUNNER_IP=10.235.16.13
[🖨️ 打印环境] PWD=/workspace
[🖨️ 打印环境] CNB_TAG_RELEASE_TITLE=
[🖨️ 打印环境] CNB_EVENT_URL=https://cnb.cool/onedayxyy/vitepress-theme-teek-one-private/-/commit/998925b7ecda930bc8930e4b3e432b406f9bde89
[🖨️ 打印环境] CNB=true
[🖨️ 打印环境] CNB_REVIEW_LAST_REVIEWED_BY=
[🖨️ 打印环境] CNB_PIPELINE_DOCKER_IMAGE=docker.cnb.cool/znb/images/node:18
[🖨️ 打印环境] TZ=Asia/Shanghai
[🖨️ 打印环境] CNB_REPO_NAME_LOWERCASE=vitepress-theme-teek-one-private
[🖨️ 打印环境] CNB_PULL_REQUEST_ACTION=
[🖨️ 打印环境] CNB_API_ENDPOINT=https://api.cnb.cool
[🖨️ 打印环境] CNB_ISSUE_IS_RESOLVED=
[🖨️ 打印环境] CNB_ISSUE_OWNER=
[🖨️ 打印环境] 使用 commit 998925b7ecda930bc8930e4b3e432b406f9bde89
[🖨️ 打印环境] Author: hg_it_nuc <2675263825@qq.com>
[🖨️ 打印环境] Date:   Wed Apr 2 07:01:01 2025 +0800
[🖨️ 打印环境] 
[🖨️ 打印环境]     commit data
[🖨️ 打印环境] 
[🖨️ 打印环境] commit fe56e4731e85128cfc808b245f10fbb38739f2f6
[🖨️ 打印环境] Author: hg_it_nuc <2675263825@qq.com>
[🖨️ 打印环境] Date:   Wed Apr 2 06:55:46 2025 +0800
[🖨️ 打印环境] 
[🖨️ 打印环境]     commit data
[🖨️ 打印环境] 
[🖨️ 打印环境] commit eb8a04bd26f203463d9d19ab902aedaee19b3098
[🖨️ 打印环境] Author: hg_it_nuc <2675263825@qq.com>
[🖨️ 打印环境] Date:   Wed Apr 2 06:54:58 2025 +0800

:::

最佳实践

https://cnb.cool/examples/showcase

image-20250403122958024

  1. react 构建将静态资源 SSH 部署到目标服务器
  2. hexo + rsync 将静态资源部署到目标服务器
  3. 从 CNB 同步代码到其他 Git 托管平台
  4. 提供CNB基础开发构建环境镜像,通过构建按钮指定构建,优雅且舒服

定价

https://docs.cnb.cool/zh/saas/pricing.html

概述

当前正在使用的为 云原生构建-社区版,每个 顶级组织 独立计费,月初基于上个自然月的使用规模,按量计费

#计费模式

#资源使用费

计费项免费额度公测限免额度超额计费标准使用场景
仓库存储100 GiB100 GiB1 元/GiB/月Git 对象
对象存储100 GiB100 GiB1 元/GiB/月制品、LFS 对象、图片及附件
云原生构建160 核时/月1600 核时/月0.125 元/核时云原生构建
云原生开发1600 核时/月16000 核时/月0.125 元/核时云原生开发

注:公测限免额度,公测期间限时提供,公测结束后自动失效。

#统计方式

  1. 云原生构建、云原生开发采用 核时 作为计量单位。

    例如:8核 构建机使用 1小时,用量为 8核 x 1小时8核时

  2. 仓库存储、对象存储,统计自然月内存储的平均用量。

    当前统计方式:月底 24 点,免费配额外的资源用量。

  3. 云原生构建、云原生开发,统计自然月的累计用量

    一个自然月周期,免费额度外,累计消耗的资源用量。

免费额度说明

仓库存储,Git 对象占用的存储空间,免费配额 100GiB

对象存储,制品、LFS 对象、图片及附件占用的存储空间,免费配额 100GiB

云原生构建 免费额度 160核时/月,月底清零,不叠加至次月。

CPU(核)内存(GiB)免费额度可用时长
12160小时
2480小时
4840小时
81620小时
163210小时
32645小时
641282.5小时

云原生开发 免费额度 1600核时/月,月底清零,不叠加至次月。

CPU(核)内存(GiB)免费额度可用时长适用场景
121600小时可支持10人,每天使用8小时,持续20天
24800小时可支持5人,每天使用8小时,持续20天
48400小时可支持3人,每天使用8小时,持续16天
816200小时可支持1人,每天使用8小时,持续25天
1632100小时可支持1人,每天使用8小时,持续12天
326450小时可支持1人,每天使用8小时,持续6天
6412825小时可支持1人,每天使用8小时,持续3天

非盈利组织特权

符合条件的非盈利组织,可申请永久免费使用特权,特权内容包含:

仓库存储,Git 对象占用的存储空间,特权配额 6TiB

对象存储,制品、LFS 对象、图片及附件占用的存储空间,特权配额 60TiB

云原生构建 特权额度 6400核时/月,月底清零,不叠加至次月。

云原生开发 特权额度 64000核时/月,月底清零,不叠加至次月。

#申领方式

请公益慈善机构前往 腾讯技术公益数字工具箱 (opens new window)完成申领。

其它devop平台推荐

cnb.cool 功能类似的 DevOps 平台有很多,以下是国内外一些主流的 DevOps 平台和工具,它们提供了类似的持续集成(CI)、持续交付(CD)、代码管理、自动化测试等功能:


国内 DevOps 平台

  1. 阿里云效(Alibaba Cloud DevOps)

    • 功能:代码托管、CI/CD、流水线、自动化测试、容器镜像服务等。
    • 特点:与阿里云生态深度集成,适合阿里云用户。
    • 官网https://www.aliyun.com/product/devops
  2. 腾讯云 CODING

    • 功能:代码托管、CI/CD、项目管理、自动化测试、制品管理等。
    • 特点:支持多种编程语言和框架,适合中小型团队。
    • 官网https://coding.net
  3. 华为云 DevCloud

  4. 百度效率云

    • 功能:代码托管、CI/CD、流水线、自动化测试、项目管理等。
    • 特点:支持多种编程语言和框架,适合中小型团队。
    • 官网https://xiaolvyun.baidu.com

国外 DevOps 平台

  1. GitLab CI/CD

    • 功能:代码托管、CI/CD、流水线、自动化测试、容器镜像服务等。
    • 特点:开源且功能强大,适合中小型团队和企业。
    • 官网https://about.gitlab.com
  2. GitHub Actions

    • 功能:代码托管、CI/CD、自动化测试、容器镜像服务等。
    • 特点:与 GitHub 深度集成,适合开源项目和个人开发者。
    • 官网https://github.com/features/actions
  3. Jenkins

    • 功能:CI/CD、流水线、自动化测试、插件扩展等。
    • 特点:开源且高度可定制,适合技术能力较强的团队。
    • 官网https://www.jenkins.io
  4. CircleCI

    • 功能:CI/CD、流水线、自动化测试、容器镜像服务等。
    • 特点:支持多种编程语言和框架,适合中小型团队。
    • 官网https://circleci.com
  5. Travis CI

    • 功能:CI/CD、流水线、自动化测试、容器镜像服务等。
    • 特点:适合开源项目和个人开发者。
    • 官网https://travis-ci.com
  6. Azure DevOps


选择建议

平台适合场景特点
阿里云效阿里云用户与阿里云深度集成,功能全面
腾讯云 CODING中小型团队支持多种语言和框架,易用性高
GitLab CI/CD开源项目/企业开源且功能强大,适合技术团队
GitHub Actions开源项目/个人开发者与 GitHub 深度集成,适合开源社区
Jenkins技术能力较强的团队开源且高度可定制,适合复杂场景

总结

  • 如果需要与国内云服务深度集成,可以选择 阿里云效腾讯云 CODING华为云 DevCloud
  • 如果需要开源或国际化支持,可以选择 GitLab CI/CDGitHub ActionsJenkins
  • 根据团队规模、技术栈和预算选择最适合的平台即可!

如果有其他问题,欢迎随时提问! 🚀


哪种适合个人使用,免费的?

对于个人用户来说,选择免费且功能丰富的 DevOps 平台非常重要。以下是几款适合个人使用的免费 DevOps 平台,它们提供了基础的 CI/CD、代码托管、自动化测试等功能:


1. GitHub Actions

  • 特点
    • 与 GitHub 深度集成,适合开源项目和个人开发者。
    • 提供免费的 CI/CD 功能,每月有一定额度的免费构建时间。
    • 支持多种编程语言和框架。
  • 免费额度
    • 公开仓库:无限免费构建时间。
    • 私有仓库:每月 2,000 分钟免费构建时间。
  • 官网https://github.com/features/actions

2. GitLab CI/CD

  • 特点
    • 提供免费的 CI/CD 功能,适合个人和开源项目。
    • 支持代码托管、流水线、自动化测试等功能。
    • 开源且功能强大,适合技术能力较强的用户。
  • 免费额度
    • 公开仓库:无限免费构建时间。
    • 私有仓库:每月 400 分钟免费构建时间。
  • 官网https://about.gitlab.com

3. Travis CI

  • 特点
    • 适合开源项目和个人开发者。
    • 提供免费的 CI/CD 功能,支持多种编程语言和框架。
    • 与 GitHub 深度集成。
  • 免费额度
    • 公开仓库:无限免费构建时间。
    • 私有仓库:每月 100 分钟免费构建时间。
  • 官网https://travis-ci.com

4. CircleCI

  • 特点
    • 提供免费的 CI/CD 功能,适合个人和开源项目。
    • 支持多种编程语言和框架,易用性高。
    • 与 GitHub 和 Bitbucket 深度集成。
  • 免费额度
    • 每月 6,000 分钟免费构建时间。
  • 官网https://circleci.com

5. Jenkins

  • 特点
    • 开源且高度可定制,适合技术能力较强的用户。
    • 可以免费使用,但需要自己搭建和维护。
    • 支持插件扩展,功能非常强大。
  • 免费额度
    • 完全免费,无构建时间限制。
  • 官网https://www.jenkins.io

6. 腾讯云 CODING(免费版)

  • 特点
    • 提供免费的代码托管、CI/CD 功能,适合个人开发者。
    • 支持多种编程语言和框架,易用性高。
    • 与腾讯云生态集成。
  • 免费额度
    • 每月 1,000 分钟免费构建时间。
  • 官网https://coding.net

选择建议

平台适合场景免费额度特点
GitHub Actions开源项目/个人开发者公开仓库无限,私有仓库 2,000 分钟与 GitHub 深度集成
GitLab CI/CD开源项目/个人开发者公开仓库无限,私有仓库 400 分钟功能强大,开源
Travis CI开源项目/个人开发者公开仓库无限,私有仓库 100 分钟简单易用
CircleCI个人开发者每月 6,000 分钟支持多种语言和框架
Jenkins技术能力较强的用户完全免费开源且高度可定制
腾讯云 CODING个人开发者每月 1,000 分钟与腾讯云生态集成

总结

  • 如果你是 GitHub 用户,推荐使用 GitHub Actions,功能强大且免费额度较高。
  • 如果你是 GitLab 用户,推荐使用 GitLab CI/CD,适合开源项目和个人开发者。
  • 如果你需要 完全免费 且不介意自己搭建,推荐使用 Jenkins
  • 如果你更喜欢 国内平台,可以选择 腾讯云 CODING,免费额度足够个人使用。

根据你的需求和技术栈选择最适合的平台即可!如果有其他问题,欢迎随时提问! 🚀