基于腾讯CNB的前端代码自动构建及发布流程

基于腾讯CNB的前端代码自动构建及发布流程

自己有一个小网站,一个纯前端的小站点,主要是为了给自己接一点小私活,由于服务器一直用的是腾讯云(便宜啊,299,3年),所以代码自动化部署也用的是腾讯云的Coding,最近需要更新一下数据,提交代码发现Coding已经在6月份就进行了淘汰,迁移到腾讯新推出了腾讯云原生构建(CNB),好名字啊!超牛B还是吹牛B我们先不说,要是我是付费用户肯定不开心,但是咱不是免费用户吗?有一个大一点的正规平台,免费提供自动化构建发布流水线我们还有什么不开心?要什么自行车!话不多说直接开干!

  • 登录CNB https://cnb.cool/,创建新的代码库, 并将自己的代码推送到腾讯云仓库.

流程架构

在这里插入图片描述
在这里插入图片描述
  • 创建容器镜像服务,
    由于以前的服务器一直在阿里云,所以沿用了阿里云的容器镜像服务,主打一个用免费的! 阿里云容器镜像服务地址, https://www.aliyun.com/product/acr/,腾讯也有自己的容器镜像服务,需要的评论留言,我在更新。这一步主要是提供远程docker容器镜像服务的,让我们可以把自己的代码镜像上传到一个公共的地方,方便部署时拉。
在这里插入图片描述
  • 创建自动化构建脚本

由于现在免费的https 证书3个月一到期,并且我经常修改nginx的一些转发端口等信息,所以在启动镜像时,将该部分内容挂载到本地目录:
docker run --restart=always -di -v /home/llpdocker/llphome/nginx.conf:/etc/nginx/nginx.conf -v /home/llpdocker/llphome/etc/nginx/lloll.top.key:/etc/nginx/lloll.top.key -v /home/llpdocker/llphome/etc/nginx/lloll.top_bundle.crt:/etc/nginx/lloll.top_bundle.crt --name=c_llphome -p 80:80 -p 443:443 i_llphome
该步骤会使用SSH远程登录你的服务器,请自行搜索SSH如何远程登录服务器,并且保护好你自己的私钥!

master: push: - services: - docker imports: - 你的安全密钥私有代码仓库 stages: - name: echo your build data script: echo ${CNB_BUILD_USER} 通过 ${CNB_BRANCH} 分支触发了 ${CNB_EVENT} 事件 - name: 查看目录 script: | ls -a cat Dockerfile - name: docker login script: docker login -u ${Docker_UserName} -p "${Docker_Password}" ${Docker_Hosts} - name: docker build script: docker build -t ${Docker_Hosts}/xhgycf/llphome:${CNB_BUILD_ID} . - name: "docker push" script: docker push ${Docker_Hosts}/xhgycf/llphome:${CNB_BUILD_ID} #def dockerImage = docker.build(${Docker_Hosts}/xhgycf/llphome:${CNB_BUILD_ID}, "-f ./Dockerfile .") #dockerImage.tag("${Docker_Hosts}/xhgycf/llphome:${CNB_BUILD_ID}") #dockerImage.push("${Docker_Hosts}/xhgycf/llphome:${CNB_BUILD_ID}") - name: deploy to vm image: cnbcool/ssh imports: 你的安全密钥私有代码仓库 settings: host: $REMOTE_HOST port: $REMOTE_PORT username: $REMOTE_USERNAME key: $PRIVATE_KEY script: | echo -e "\033[32m docker login \033[0m" docker login -u ${Docker_UserName} -p "${Docker_Password}" ${Docker_Hosts} echo -e "\033[32m load docker images \033[0m" docker pull ${Docker_Hosts}/xhgycf/llphome:${CNB_BUILD_ID} docker rmi i_llpcmlapi echo -e "\033[32m docker tag \033[0m" docker tag ${Docker_Hosts}/xhgycf/llphome:${CNB_BUILD_ID} i_llphome docker stop c_llphome || true docker rm c_llphome || true docker run --restart=always -di -v /home/llpdocker/llphome/nginx.conf:/etc/nginx/nginx.conf -v /home/llpdocker/llphome/etc/nginx/lloll.top.key:/etc/nginx/lloll.top.key -v /home/llpdocker/llphome/etc/nginx/lloll.top_bundle.crt:/etc/nginx/lloll.top_bundle.crt --name=c_llphome -p 80:80 -p 443:443 i_llphome docker ps 

构建流水线效果图

在这里插入图片描述
  • 创建密钥仓库

参考文档 https://docs.cnb.cool/zh/repo/secret.html,虽然我不是很喜欢这种密钥仓库的形式存放用户名、密码、私钥等安全信息,但是腾讯云说了它提供了一系列方式保障安全,免费的,没办法先相信吧!希望以后有可以修改一个这种对敏感信息的存储方式!
一定要记得选密钥仓库啊!!!不要可能会造成敏感信息泄露喔!!!

在这里插入图片描述


密钥yml参考内容:如果报错格式不对,可以用yml check检测一下你的yml 格式https://yamlchecker.com/

Docker_UserName: "容器镜像用户名" Docker_Hosts: "容器镜像地址" Docker_Password: "容器镜像密码" REMOTE_HOST: "远程主机地址" REMOTE_USERNAME: "用户名" REMOTE_PORT: "SSH端口" PRIVATE_KEY: | -----BEGIN RSA PRIVATE KEY----- 这只是一个示例KCAQEAlSazxyWTBgZ4hmpFEwLp512dzQgx4Jwsh1EnHC63klsOWvH6 PUOdmiq4QYi45W7tMikPBAaMptSB6OUOz0xR1P6VneOA7lAAAA这只是一个示例 -----END RSA PRIVATE KEY----- 
  • 基于dockerfile的自动构建,核心就是基于nginx镜像打包,把所有的前端文件copy到指定目录.
# 基础镜像使用Nginx FROM nginx # 作者 MAINTAINER llp # 添加时区环境变量,亚洲,上海 ENV TimeZone=Asia/Shanghai # 将前端dist文件中的内容复制到nginx目录 COPY ../ /usr/share/nginx/html/ # 用本地的nginx配置文件覆盖镜像的Nginx配置 COPY nginx.conf /etc/nginx/nginx.conf # 暴露端口 EXPOSE 80# 设置环境变量TZ ENV TZ=Asia/Shanghai # 配置时区 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&echo$TZ> /etc/timezone 
  • 现在所以的准备都完成了,前端一但提交代码就会自动触发任务流水线,发布到我们的远程服务器了。就和你在公司使用的自动化发布平台一样分方便喔,大家一起来试试吧!
在这里插入图片描述


成功访问

在这里插入图片描述

Read more

前端 AJAX 详解 + 动态页面爬虫实战思路

目前 80% 的网站都使用了AJAX技术,那么传统的爬虫通过 html 来获取数据就不行了,总结一下 AJAX 相关知识。 1、前端三大核心 前端开发的三大核心基础是 HTML、CSS 和 JavaScript。 * HTML 负责搭建网页的结构与内容(结构) * CSS 负责网页的样式、布局和视觉效果(表现) * JavaScript 负责网页的交互、逻辑和数据处理(行为) HTML(结构层) 本质上是 标记语言(Markup Language),通过标签描述页面元素。 常见标签: <h1>标题</h1><p>段落</p><

语音交互实战:基于WebRTC与AI接口构建实时语音对话系统

语音交互实战:基于WebRTC与AI接口构建实时语音对话系统 随着大模型技术的爆发,人机交互的方式正在经历一场从“指令式”到“对话式”的深刻变革。传统的文本交互虽然成熟,但在移动场景、驾驶辅助或无障碍应用中,语音交互才是刚需。然而,很多开发者在尝试构建语音对话系统时,往往会陷入“能听会说但反应迟钝”的尴尬境地。 传统的语音交互流程通常是:录音 → 上传文件 → 后端识别(STT) → 大模型处理(LLM) → 语音合成(TTS) → 返回播放。这种“一问一答”的串行模式,导致用户说完话后需要等待数秒才能听到回复,这种延迟在实时对话场景下是致命的。 本文将探讨如何利用WebRTC技术与AI接口,构建一个低延迟、全双工的实时语音对话系统,打破交互延迟的壁垒。 核心技术架构:从串行到流式 要解决延迟问题,核心在于将“文件级”处理转变为“流式”处理。我们不再等待用户说完一句话才开始识别,而是边说边识别;不再等大模型生成完整回复才开始合成,而是边生成边合成。 1. WebRTC:

前端八股文面经大全:字节前端一面(2026-2-1)·面经深度解析

前端八股文面经大全:字节前端一面(2026-2-1)·面经深度解析

前言 大家好,我是木斯佳。 在这个春节假期,当大家都在谈论返乡、团圆与休息时,作为一名技术人,我的思考却不由自主地转向了行业的「冬」与「春」。 相信很多人都感受到了,在AI浪潮的席卷之下,前端领域的门槛在变高,纯粹的“增删改查”岗位正在肉眼可见地减少。曾经热闹非凡的面经分享,如今也沉寂了许多。但我们都知道,市场的潮水退去,留下的才是真正在踏实准备、努力沉淀的人。学习的需求,从未消失,只是变得更加务实和深入。 正值春节,也是复盘与规划的好时机。结合ZEEKLOG这次「春节代码贺新年」活动所提倡的“用技术视角记录春节、复盘成长”,我决定在这个假期持续更新专栏,帮助年后参加春招的同学。 这个专栏的初衷很简单:拒绝过时的、流水线式的PDF引流贴,专注于收集和整理当下最新、最真实的前端面试资料。 我会在每一份面经和八股文的基础上,尝试从面试官的角度去拆解问题背后的逻辑,而不仅仅是提供一份静态的背诵答案。无论你是校招还是社招,目标是中大厂还是新兴团队,只要是真实发生、有价值的面试经历,我都会在这个专栏里为你沉淀下来。 温馨提示:市面上的面经鱼龙混杂,