Skip to content
【腾讯云】WorkBuddy 全场景 AI 办公工作台,团队旗舰版低至198元/月
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中
【腾讯云】智能体开发平台ADP,新客首月专属价,最高直降 880 元,构建、分发、治理企业级 Agent,一站式开启智能体生产力。
广告位招租
在此投放您的广告内容
联系我

拉取gitee仓库部署 ​

1. 创建腾讯 COS 存储桶 ​

COS 桶:公有读私有写 + 开静态网站托管

腾讯云子账号密钥:SecretId / SecretKey

COS 存储桶名称和区域:Bucket / Region

记住 SecretId / SecretKey/Bucket / Region 这4个值,后续步骤要用

2. 创建【密钥仓库】 ​

首先在腾讯 CNB 上创建一个【密钥仓库】 创建密钥仓库

【密钥仓库】包含以下基本文件

  • .cnb.yml 文件,作用是“授权”,标记本仓库里的文件允许哪些其它仓库可以引用
  • TencentCos.xxxxx.yml 文件是针对其它仓库构建是的 COS 配置文件,一般是每个仓库有一个对应的文件,xxxxx 可以是对应仓库的名称,方便在对应仓库的 .cnb.yml 文件中引用
  • gitee.yml 的作用是拉取gitee仓库的项目部署到腾讯 COS 上,参考项目 abcdefghijklmn/mywebsite-vitepress-deploy中.cnb.yml 的配置

.cnb.yml 文件内容,主要用于授权

yaml
# KeyStore 仓库里的 .cnb.yml 不会被“引用”,它是“授权文件”,不是“配置数据源”。​
# 真正被 imports 引用的是 KeyStore 里的 TencentCos.xxx.yml 这类配置文件。​
# .cnb.yml 只在 KeyStore 仓库自身被 CNB 加载时生效,用来告诉 CNB:“允许谁来 imports 我”。
allow_slugs:
  # 你的组织名称/部署仓名称,allow_slugs 限制只有你的部署仓能引用这个文件,别的仓引不到,没有这行,部署仓的流水线没有权限读取密钥仓,就会报「资源解析服务请求失败」
  # vitepress博客站,源代码在gitee上,这个业务库是通过定时拉取gitee上的库来构建网站
  - "abcdefghijklmn/mywebsite-vitepress-deploy"
  # mywebsite-vitepress,源代码在CNB上,直接检测有新的推送时自动构建
  - "abcdefghijklmn/mywebsite-vitepress"

TencentCos.xxxxx.yml 文件内容,主要用于配置 COS

yaml
# 组织名称/KeyStor仓库/-/blob/main/TencentCos.xxxxx.yml
# 以下4个值分别是:你的腾讯云SecretId(建议使用子账号的),你的腾讯云SecretKey(建议使用子账号的),腾讯COS桶名,腾讯COS存储桶所属区域
COS_SECRET_ID: 你的腾讯云SecretId
COS_SECRET_KEY: 你的腾讯云SecretKey
COS_BUCKET: 腾讯COS桶名
COS_REGION: 腾讯COS存储桶所属区域,比如ap-beijing

gitee.yml(必选),本节是讨论如何从 gitee 拉取项目,这个文件是必须的

yaml
# gitee的用户名和新建的个人令牌,用于将gitee上的代码同步过来,并构建到腾讯Cos上,作为静态网站,比如将vitepress构建成静态网站放在腾讯Cos上
# 组织名称/密钥仓库名称/-/blob/main/gitee.yml
# 以下两个值分别是gitee用户名,第一步新创建的私人令牌
# 用户名其实是点击你gitee头像-个人主页-然后看地址栏里https://gitee.com/这一串字符做为你gitee的用户名
GITEE_USER: 用户名
GITEE_TOKEN: gitee令牌

3. 创建【项目仓库】 ​

与【密钥仓库】不同,【项目仓库】是用于拉取【gitee仓库】,比如 vitepress 博客站,与其它代码托管网站用法一样(比如 gitee)。

创建时 项目类型 选择【私有】或【公开】即可。

本节是讨论如何从【gitee仓库】拉取代码,构建网站,并部署到腾讯COS上

所以本项目只需要创建 .cnb.yml 文件,不需要有其它真实的项目文件,内容如下:

yaml
# ============================================================
# CNB 云原生构建配置文件 (.cnb.yml)
# 功能:定时从 Gitee 私有仓库拉取源码,构建 VitePress 并部署到腾讯云 COS
# 参考:https://docs.cnb.cool/zh/build/trigger-rule.html
# ============================================================

# 第一级键:分支名(对 main 分支生效)
main:

  # 第二级键:触发事件为定时任务(crontab)
  # 以下为可选频率示例(保留注释,按需启用其一):
  # 每 10 分钟拉取构建一次
  # "crontab: */10 * * * *":
  # 每 2 小时拉取构建一次
  # "crontab: 0 */2 * * *":
  # 每天 8 点拉取构建一次(当前启用)
  "crontab: 0 8 * * *":

    # 第三级:pipeline 列表项(- 开头,该流水线任务的配置块)
    # imports / docker / stages 都必须是这个列表项里的子键
    - imports:
        # 从 KeyStore 仓库导入密钥/变量
        # gitee.yml   —— 导出 GITEE_USER、GITEE_TOKEN(用于克隆 Gitee 私有仓库)
        # TencentCos.mywebsite-vitepress-deploy.yml —— 导出 COS 相关凭据
        #   (COS_SECRET_ID、COS_SECRET_KEY、COS_BUCKET、COS_REGION)
        - https://cnb.cool/abcdefghijklmn/KeyStore/-/blob/main/gitee.yml
        - https://cnb.cool/abcdefghijklmn/KeyStore/-/blob/main/TencentCos.修改为你的文件名称.yml

      # 默认执行环境镜像(构建阶段使用的容器)
      docker:
        image: node:20

      # 各阶段按顺序串行执行
      stages:

        # 阶段 1:拉取 Gitee 私有仓库
        - name: 拉取 Gitee 私有仓库(master 分支)
          script:
            # 清空当前工作区(删除除 . 外的所有顶层文件/目录),避免旧文件残留
            - find . -mindepth 1 -maxdepth 1 -exec rm -rf {} +
            # 克隆 Gitee 私有仓库 master 分支到当前目录(.)
            # 使用 KeyStore 注入的 GITEE_USER / GITEE_TOKEN 进行鉴权
            # --depth=1 表示浅克隆(只取最新提交,加快构建)
            - git clone --depth=1 -b master https://${GITEE_USER}:${GITEE_TOKEN}@gitee.com/abcdefghijklmnopqrstuvwxyz/仓库名称.git .

        # 阶段 2:安装依赖
        - name: 安装依赖(pnpm)
          script:
            - corepack enable      # 启用 corepack,使 pnpm 可用(node:20 自带)
            - pnpm install         # 安装依赖

        # 阶段 3:构建 VitePress 静态站点
        - name: 构建 VitePress
          script:
            - pnpm run docs:build  # 产物在 docs/.vitepress/dist/

        # 阶段 4:同步到腾讯云 COS
        - name: 同步到腾讯云 COS
          image: tencentcom/coscli # 该阶段使用 coscli 专用镜像
          script:
            # 拼接 COS 访问域名:
            # 常规地域用 cos.<region>.myqcloud.com;
            # 若 COS_REGION 本身已是完整域名(以 myqcloud.com 结尾),则原样使用。
            - EP="cos.$COS_REGION.myqcloud.com"; [ "${COS_REGION##*.}" = "myqcloud.com" ] && EP="$COS_REGION"; coscli --init-skip sync -r ./docs/.vitepress/dist/ cos://$COS_BUCKET --delete -i "$COS_SECRET_ID" -k "$COS_SECRET_KEY" -e "$EP"
            # 说明:--delete 会删除 COS 中本地已不存在的多余文件,保持两边一致

你的项目在推送到【gitee仓库】时,会触发CNB的流水线,自动拉取【gitee仓库】,自动构建网站并部署到腾讯 COS 上

4. 在腾讯 COS 绑定域名和证书 ​

打开网站所属的存储桶,打开“域名与传输管理 ”,在“自定义源站域名”添加域名并绑定证书( Nginx 证书),需要在域名解析中配置“CNAME”记录。

绑定后需要等待一段时间才会生效,有延迟。

5. 工作流程回顾 ​

你 push 到 Gitee
   ↓(根据需求配置定时间隔)
CNB 定时任务触发
   ↓
git clone Gitee 私有仓
   ↓
pnpm install → pnpm run docs:build
   ↓
coscli sync → 腾讯云 COS
   ↓
浏览器访问网站,内容已更新
最近更新