00:00:00
CNB云端构建
环境准备
- git 环境
- 云服务器
- teek 网站环境
创建组织
前往CNB网站,点击右上角登录,登录后点击右上角头像,选择“创建组织”。
或者加入 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 远程仓库,下面是详细步骤:
- 提交暂存的更改到本地仓库
bash
# 提交暂存的更改,-m 后面是提交说明(必填)
git commit -m "描述你的更改内容,例如:修复登录bug,优化首页样式"
- 推送本地分支到远程仓库 如果是第一次推送该分支(比如 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
- 后续推送(已关联分支)
当分支已经和远程关联后,后续推送只需执行:
bash
git push
配置文件
以上代码推送到仓库后,在本地仓库根目录下,创建并编辑如下 2 个文件:
yml
# main改成您实际的分支名称
main:
push:
- runner:
cpus: 64 #自定义CPU核心数
services:
- docker ## 启用Docker服务(用于构建镜像或容器化操作)
- git-clone-yyds # 自定义的Git克隆服务(确保代码能正确拉取到运行环境)
docker:
image: docker.cnb.cool/znb/images/node:18 # 使用Node.js 18版本的镜像(前端项目常用环境)
volumes: # 数据卷挂载
- /data/.cache:copy-on-write # 将宿主机的/data/.cache目录挂载到容器,采用"写时复制"模式(高效缓存依赖,加速构建)
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 # 使用包含rsync工具的镜像(rsync用于高效文件同步)
imports: https://cnb.cool/W3C/Hyde/teek-hyde/-/blob/main/env.yaml # 导入外部环境变量配置文件,实际替换自己的
settings:
user: ${SSH_USER} # SSH用户名(从环境变量获取,避免硬编码敏感信息)
key: ${SSH_KEY} # SSH私钥(用于免密登录目标服务器,从环境变量获取)
port: 22 # SSH端口(默认22)
hosts:
- 111.229.208.160 # 目标服务器IP(要部署到的服务器地址,实际替换自己的服务器IP)
source: docs/.vitepress/dist/ # 待同步的本地文件目录(阶段3构建出的静态文件
target: /root/rsync/teek.seasir.top/dist/ # 目标服务器上的存放路径
delete: true # 同步时删除目标路径中不存在的文件(确保目标与本地完全一致,避免冗余文件)
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