Skip to content

cnb一键发布

一条cnb流水线,解放双手

实战-cnb一键发布版内容到teek网站-2025.4.1(测试成功)

目录

[toc]

版权

二丫讲梵指导,自己测试。

前言

全网最美博客-teek(知识库&博客二合一),你已经拥有了。最丝滑的markdown编辑器-typora你也在用。

此时,如果你只需要在本地仓库维护数据,一键提交后,就能触发流水线,自动构建,生成dist内容,然后自动传到你服务器nginx站点目录。

这个工作流是不是很丝滑,那么以下讲的cnb.cool将能完全满足你的需求。😜

前提

2025年4月3日测试成功。

前提条件:

  • 具备git环境;
  • 具有自己的云服务器;
  • 具有teek网站环境;

官网

https:push:- runner:cpus:16services:- docker- git-clone-yydsdocker:image:docker.cnb.cool/znb/images/node:18volumes:- /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/rsyncimports:https:settings:user:${SSH_USER}key:${SSH_KEY}port:22hosts:- ${ECS_IP}source:docs/.vitepress/dist/target:/root/rsync/rsync-vitepress/dist/delete:trueprescript:- echo "prescript"- ls -l /root/rsync/rsync-vitepress/dist/script:- echo "after script"- ls -l /root/rsync/rsync-vitepress/dist/- date- aliyun cdn RefreshObjectCaches --ObjectType File --ObjectPath "onedayxyy.cn/"#刷新阿里云cdn缓存#同步仓库到gitee - name:sync to giteeimage:tencentcom/git-syncimports:https:settings:branch:masterauth_type:httpsusername:${GIT_USERNAME}password:${GIT_ACCESS_TOKEN}target_url:https:# git_email:'github-actions[bot]@users.noreply.github.com'

(2)env.yaml文件

详细代码:

1、创建组织

自己先生成一个token:

image-20250401200602211

image-20250401193421045

image-20250401201544336

3、配置文件

以上代码推送到仓库后,在本地仓库里,编辑如下2个文件:

  • (1)创建.cnb.yml
具体代码:
yaml
master:push:- runner:cpus:16services:- docker- git-clone-yydsdocker:image:docker.cnb.cool/znb/images/node:18volumes:- /data/.cache:copy-on-writestages:- name:🖨️ 打印环境script:|node -v &&npm -v &&yarn -v &&pnpm -v- name:📦️ 安装依赖script:|pnpm install- name:⚗️ 编译项目script:|pnpm docs:build # VitePress 专用命令- name:🚚 发布制品image:tencentcom/rsyncimports:https:settings:user:${SSH_USER}key:${SSH_KEY}port:22hosts:- 106.75.214.199source:docs/.vitepress/dist/target:/root/rsync/rsync-vitepress/dist/delete:true
  • (2)创建env.yaml
具体代码:

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

bash
ssh-keygencat/root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys#还需要把公钥放到认证目录

编辑内容:

yaml
SSH_USER:rootSSH_KEY:|-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEAwWunMrptJsXbxx0M17w3qaHyJb9B/CN9PgeNE9KoyN26
……2Sf90wKBgQDPVD6ii2OWiXhSZbFHYOoRh7AyQYhQS+caF1BVU6H32GhCuVs2+vX4KCGx47oLS2Gn2gZFWgB+sngFqQZkB1NtkbuyCK4DUD5jTgZUsPkYjk2VXb2zjEQYEqbXIgV6SEJtBLQlzkOS0BR2hGZl5Y99aA15vcub+AafBAzOeAL8ig==-----END RSA PRIVATE KEY-----

image-20250401201911376

4、运行验证

  • 以上编辑完成后,提交代码,第一次提交后,就可以看到已经触达流水线了:
bash
gitadd-Agitcommit-m"更新cnb-cool配置,第一次构建测试"gitpush

image-20250401202316796

观察构建过程:

image-20250401202333013

image-20250401215211746

  • 完美:

image-20250401202640607

image-20250401213044288

可以看到,自己网站也更新成功了,丝滑。😜

5、扩展

扩展1:条件触发自动构建

提示

次步骤是在上面步骤基础上操作的哦!

到此为止,上面流程已经很完美了,但是存在一个问题:

如何只推送仓库,且不构建?或者 如何推送时 加上某个参数后 才会进行构建?(频繁构建很不友好……)

哈哈,我已经准备好手把手文档了:

(1)编辑.cnb.yml

具体代码:
yaml
master:push:- runner:cpus:16services:- docker- git-clone-yydsdocker:image:docker.cnb.cool/znb/images/node:18volumes:- /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/rsyncimports:https:settings:user:${SSH_USER}key:${SSH_KEY}port:22hosts:- 106.75.214.199source:docs/.vitepress/dist/target:/root/rsync/rsync-vitepress/dist/delete:true

执行gg效果:

执行gg2效果:

完美。

扩展2:自动构建后刷新阿里云cdn、自动同步代码到gitee仓库

2025年4月3日测试成功。

本次代码更改,新增自动构建后刷新阿里云cdn、自动同步代码到gitee仓库功能哦,这样,咋们的pipeline流水线更加丝滑了哦。😊

(1)编辑.cnb.yml

增加如下代码:

yaml
prescript:- echo "prescript"- ls -l /root/rsync/rsync-vitepress/dist/script:- echo "after script"- ls -l /root/rsync/rsync-vitepress/dist/- date- aliyun cdn RefreshObjectCaches --ObjectType File --ObjectPath "onedayxyy.cn/"#刷新阿里云cdn缓存#同步仓库到gitee - name:sync to giteeimage:tencentcom/git-syncimports:https:settings:branch:masterauth_type:httpsusername:${GIT_USERNAME}password:${GIT_ACCESS_TOKEN}target_url:https:# git_email:'github-actions[bot]@users.noreply.github.com'

:::deatils 详细代码:

yaml
master:push:- runner:cpus:16services:- docker- git-clone-yydsdocker:image:docker.cnb.cool/znb/images/node:18volumes:- /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/rsyncimports:https:settings:user:${SSH_USER}key:${SSH_KEY}port:22hosts:- ${ECS_IP}source:docs/.vitepress/dist/target:/root/rsync/rsync-vitepress/dist/delete:trueprescript:- echo "prescript"- ls -l /root/rsync/rsync-vitepress/dist/script:- echo "after script"- ls -l /root/rsync/rsync-vitepress/dist/- date- aliyun cdn RefreshObjectCaches --ObjectType File --ObjectPath "onedayxyy.cn/"#刷新阿里云cdn缓存#同步仓库到gitee - name:sync to giteeimage:tencentcom/git-syncimports:https:settings:branch:masterauth_type:httpsusername:${GIT_USERNAME}password:${GIT_ACCESS_TOKEN}target_url:https:# git_email:'github-actions[bot]@users.noreply.github.com'

:::

(2)编辑env.yaml

yaml
#gitee tokenGIT_USERNAME:gitee账户登录名GIT_ACCESS_TOKEN:gitee账户tokenECS_IP:云服务器ipSSH_USER:云服务器登录用户SSH_KEY:|-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEAwWunMrptJsXbxx0M17w3qaHyJb9B/CN9PgeNE9KoyN26
……EqbXIgV6SEJtBLQlzkOS0BR2hGZl5Y99aA15vcub+AafBAzOeAL8ig==-----END RSA PRIVATE KEY-----

(3)修改完成后,提交代码,触发自动构建,观察效果

可以纵向丝滑哦。😍

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 个人网站

image-20250109220325748

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 csdn

https:

版权:此文章版权归 One 所有,如有转载,请注明出处!

链接:可点击右上角分享此页面复制文章链接

上次更新时间:

最近更新