惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Vercel News
Vercel News
F
Fortinet All Blogs
B
Blog
Recent Announcements
Recent Announcements
A
About on SuperTechFans
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
月光博客
月光博客

Hyde Blog

Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog
Hyde Blog
Hyde · 2025-10-05 · via Hyde Blog

CNB云端构建 ​

环境准备 ​

  • git 环境
  • 云服务器
  • teek 网站环境

创建组织 ​

前往CNB网站,点击右上角登录,登录后点击右上角头像,选择“创建组织”。

1755972905032.png

或者加入 W3C 组织,也是本人加入的组织。欢迎加入联盟:https://cnb.cool/invitations/3QQ0173bdBHzyn5bZQv5iyyAtDB

创建仓库 ​

点击访问,然后点击右上角的+号创建仓库,选择仓库归属仓库名称;公开信息选择私有,然后点击创建

创建令牌 ​

初始化之前先去创建访问令牌,点击前往创建访问令牌,右上角点击添加访问令牌,输入令牌名称,到期时间选择永久,使用范围选择仓库/制品库,然后点击创建

初始仓库 ​

提示

本次按 方式 3:空仓初始化 来初始化自己的本地仓库

bash

git init .
git remote add origin https://cnb.cool/W3C/Hyde/teek-hyde.git
git config --local user.name SeasirHyde
git config --local user.email "2429016980@qq.com" # 请修改为你的邮箱
git config credential.helper store # 保存凭证(凭证会被保存在 ~/.git-credentials 文件中)

推送仓库 ​

由于本地仓库有暂存的更改,需要本地仓库所有的代码推送到 cnb 远程仓库,下面是详细步骤:

  1. 提交暂存的更改到本地仓库

bash

# 提交暂存的更改,-m 后面是提交说明(必填)
git commit -m "描述你的更改内容,例如:修复登录bug,优化首页样式"
  1. 推送本地分支到远程仓库 如果是第一次推送该分支(比如 master 或 main),需要关联远程分支并推送:

bash

# 推送本地当前分支到远程origin仓库,并建立关联
git push -u origin main
  • 如果你用的是 master 分支:git push -u origin master

  • 如果你用的是 main 分支:git push -u origin main

警告

  • 首次推送需输入用户名/密码,用户名(Username)和密码(Token)就是您创建的令牌,后续会自动保存在 ~/.git-credentials。

-仅推荐在 安全环境 下使用(若为公共电脑,建议用 cache 临时存储)。

令牌示例:

bash

令牌名:teek
Git Username:cnb
Token:xxxxxxxxx
  1. 后续推送(已关联分支)

当分支已经和远程关联后,后续推送只需执行:

配置文件 ​

以上代码推送到仓库后,在本地仓库根目录下,创建并编辑如下 2 个文件:

.cnb.yml(可选)env.yaml

yml

# .cnb.yml
$:
  # vscode 事件:专供页面中启动远程开发用
  vscode:
    - runner:
        # 自定义CPU核心数,最大支持64核
        cpus: 64
      docker:
        # 自定义开发环境
        build:
          # 指定构建镜像的 Dockerfile 文件
          dockerfile: .ide/Dockerfile
      services:
        # 声明使用 vscode 服务
        - vscode
        # 声明在容器中支持 docker 命令
        - docker
      stages:
        - name: 环境启动时执行以下命令
          script:
        # 安装pnpm并使用pnpm安装依赖
            - npm install -g pnpm
            - pnpm i
            - pnpm docs:dev

# 云原生构建流程和自动部署
# main改成您实际的分支名称
main:
  push:
    - runner:
        cpus: 16
      services:
        - docker
        - git-clone-yyds
    - imports: https://cnb.cool/W3C/Hyde/secret/-/blob/main/env.yml
      settings:
        user: ${SSH_USER} # SSH用户名(从环境变量获取,避免硬编码敏感信息)
        key: ${SSH_KEY} # SSH私钥(用于免密登录目标服务器,从环境变量获取)
        port: 22 # SSH端口(默认22)
        hosts:
          - 666.666.666.666 # (可选)目标服务器IP(要部署到的服务器地址,实际替换自己的服务器IP)
        source: docs/.vitepress/dist/ # 待同步的本地文件目录(阶段3构建出的静态文件
        target: /root/rsync/teek.seasir.top/dist/ # 目标服务器上的存放路径
        delete: true # 同步时删除目标路径中不存在的文件(确保目标与本地完全一致,避免冗余文件)
      docker:
        image: docker.cnb.cool/znb/images/node:18
        volumes:
          - /data/.cache:copy-on-write #声明式的构建缓存
      stages:
        - name: 构建当前项目
          script: echo -n $(date "+%Y-%m-%d %H:%M")
          exports:
            info: CUSTOM_ENV_DATE_INFO
        - name: 🏠 设置淘宝源
          script: |
            npm config set registry https://registry.npmmirror.com
        - name: 🖨️ 打印环境
          if: |
            [ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
          script: |
            npm install -g pnpm && 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: 🚚 部署到Pages
          if: |
            [ "$CNB_COMMIT_MESSAGE_TITLE" = "BUILD" ]
          image: node:22
          script: npx edgeone pages deploy ./docs/.vitepress/dist --name teek-hyde --token $EDGEONE_PAGES_API_TOKEN
        #./docs/.vitepress/dist---静态打包路径,实际替换为自己的
        #teek-hyde为edgeone的pages名称,实际替换为自己的

        #同步仓库到gitee                  
        - name: sync to gitee
          image: tencentcom/git-sync
          settings:
            branch: master
            auth_type: https
            username: ${GIT_USERNAME}
            password: ${GIT_ACCESS_TOKEN}
            target_url: https://gitee.com/SeasirHyde/teek-hyde.git
            # git_email: 'github-actions[bot]@users.noreply.github.com'


        # 发布通知到钉钉
        - name: 📢 发布通知到钉钉
          image: tencentcom/dingtalk-bot-msg:latest
          settings:
            secret: $SECRET  # 添加钉钉机器人的签名密钥
            webhook: $WEBHOOK  # 填写钉钉机器人的Webhook地址变量
            at: "199********" # 多个用分号(;)分隔
            isAtAll: true
            debug: true # 新增: 是否启用调试模式
            c_type: "markdown" # 支持: text, markdown, link, actionCard, multiActionCard, feedCard
            content: |
              > **🎉 Hyde Blog 又一次发布成功啦!**   
              > **构建时间:** $CUSTOM_ENV_DATE_INFO          
              > **构建id:** $CNB_BUILD_ID  
              > **提交id:** $CNB_COMMIT_SHORT            
              > **构建分支:** $CNB_BRANCH            
              > **提交信息:** $CNB_COMMIT_MESSAGE_TITLE            
              > **提交者:** $CNB_COMMITTER            
              > **仓库地址:** [$CNB_REPO_URL_HTTPS]($CNB_REPO_URL_HTTPS)            
              > **我的网站:** [teek.seasir.top](https://teek.seasir.top/)

yml

#在自己云服务器上生成ssh密钥,将私钥拷贝到env.yaml的SSH_KEY里。

#输入命令:
ssh-keygen

#运行后会出现一系列提示:
#密钥保存路径:默认是 /root/.ssh/id_rsa(私钥)和 /root/.ssh/id_rsa.pub(公钥),直接按回车使用默认路径即可。
#密码短语(passphrase):可选设置(推荐),相当于给私钥再加一层密码保护。如果直接回车则为空(无需额外密码)。

#输入命令:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #将本地生成的公钥添加到服务器的 "授权列表" 中,允许持有对应私钥的客户端免密码登录。

#查看是否添加成功:
cat /root/.ssh/authorized_keys

# 查看SSH_KEY私钥内容:
cat /root/.ssh/id_rsa

#编辑env.yaml文件内容:
SSH_USER: root     
SSH_KEY: |
    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEA1P55C7Hzn15bJlBeIkGuMkMSS2/JBQqe5iCuTGpPdvMSXMr+
    # 省略,这里需要注意SSH密钥格式缩进问题,否则发布制品这个步骤会报错
    2iRkQn/05IoX+MiDcmr1OjwSBXVD7+xR6hLjyiy7SmmEMkFPApw+
    -----END RSA PRIVATE KEY-----

运行验证 ​

  • 以上编辑完成后,提交代码,第一次提交后,就可以看到已经触达流水线了:

bash

git add -A
git commit -m"更新cnb-cool配置,第一次构建测试"
git push