【玩转腾讯云】腾讯云开发 xCODING 实现 Hexo 博客的持续集成
本文同步首发于腾讯云云 + 社区
就在昨天,腾讯云云开发发布了新能力支持——云开发静态网站托管能力正式上线了。通过云开发的静态网站托管能力,可以帮助开发者快速上线 Web 网站。
CODING 是国内首个一站式云端软件服务平台,为开发者提供了 CODING DevOps 整套研发流程管理系统解决方案。目前,CODING 已于 2019 年 8 月进驻腾讯云。
今天我们将使用 CODING 的持续集成功能,将我的 Hexo 静态博客推送到云开发的静态网站托管中去。我将整个流水线绘制了一个 BPMN 图,供大家参考。从图上可以看出来,用户只需要手工推送源码,剩下的工作均由流水线完成。
[图片: 流水线]
https://static.txisfine.cn/upload/20200409105902.png/pkwatermark
开通云开发及静态网站托管服务
{% note info %} 注意 目前云开发静态网页托管能力仅在腾讯云云开发控制台支持。 仅有付费方式为按量付费的环境可开通静态网页托管能力。 云开发的静态网页托管能力,目前在开通环境时,静态网页托管服务不会直接开通,而是需要您在环境中单独开通。 {% endnote %}
开通云开发
登录腾讯云云开发控制台,开通云开发服务,创建云开发环境。在环境设置中记好你的环境 ID。
开通静态网站托管能力
在云开发控制台->基础服务->静态网站托管中开通静态网站托管服务。
腾讯云 - 云 API 密钥授权
目前,TCB CLI 支持扫码、使用 key 两种方式登录,因为后期需要在 CI 中登录 TCB,要尽量避免控制台交互,所以我们选择使用使用 key 的方式登录 TCB。
登录腾讯云访问密钥控制台,进入访问管理->访问密钥->API密钥管理,新建一个 API 密钥,记好你的 SecretId 和 SecretKey。
{% note info%} 注意 建议使用子账号的方式创建 API 密钥,以保障主账号内资产的安全。 请妥善保管好 SecretId 和 SecretKey。 {% endnote %}
从 0 构建 CODING 持续集成流水线
创建一个 DevOps 项目
首先我们需要在 CODING 中创建一个 DevOps 项目,进入项目->代码仓库->克隆,获取仓库的 Git 地址。这个地址在于,你需要将你 hexo 的源码直接推送到这个仓库中,即前面流程图中提到的源码库。
构建持续集成流水线
CODING 的 CI 是基于 Jenkins 的,所以我们直接编写 Jenkinsfile 就可以了。
在项目->构建与部署->构建中,新建一个构建计划,代码源选择 CODING,代码仓库就是刚刚的存放源码的仓库,配置来源选择使用静态配置的 Jenkinsfile,确认创建之后,开始流程配置,目前 CODING 提供了两种流程配置编辑器——图形化编辑器和文本编辑器。这里我们选择文本编辑器。
{% note info%}
为什么要选择文本编辑器?
逼格高 逼格高 逼格高
实际原因:就自定义操作范围而言,文本编辑器所支持的范围比图形化编辑器更大。图形化编辑器
{% endnote %}
pipeline {
agent any
stages {
stage('检出') {
steps {
echo '[检出]正在从目标代码库检出最新源码...'
checkout([
$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[
url: env.GIT_REPO_URL,
credentialsId: env.CREDENTIALS_ID
]]
])
echo '[检出]检出源码成功.'
}
}
stage('构建') {
steps {
echo '[构建]正在构建Hexo环境并渲染网站静态文件...'
sh '''npm --version
npm install -g hexo-cli
npm install -g
hexo g
'''
echo '[构建]构建完成.'
}
}
stage('推送') {
steps {
echo '[推送]准备将静态文件推送到TCB云开发...'
sh 'npm i -g @cloudbase/cli'
sh 'tcb login --apiKeyId "${SecretId}" --apiKey "${SecretKey}"'
sh 'tcb hosting:deploy public -e "${envId}"'
echo '[推送]推送完成.'
}
}
stage('事件消息') {
steps {
echo '[事件消息]持续集成完成.'
}
}
}
environment {
envId = ''
SecretId = ''
SecretKey = ''
}
}
```
这样,你只需要填写 environment 中的 envId(环境 ID)、SecretId 和 SecretKey(腾讯云 API 密钥)就可以了。 这时候,切换到图形化界面看一下,你的流水线是不是就构建好了呢?
[图片: 20200409112158]
https://static.txisfine.cn/upload/20200409112158.png/pkwatermark
加快构建速度
- 使用 cnpm 加速 hexo 环境构建
- 使用缓存,缓存 npm 目录、和 nodemodules 目录(/root/workspace/nodemodules)
[图片: 20200409112448]
https://static.txisfine.cn/upload/20200409112448.png/pkwatermark
验证
将 hexo 代码推送到该项目中的源码库中,将自动触发构建。
[图片: 20200409112641]
https://static.txisfine.cn/upload/20200409112641.png/pkwatermark
[图片: 20200409112837]
https://static.txisfine.cn/upload/20200409112837.png/pkwatermark
[图片: 20200409113005]
https://static.txisfine.cn/upload/20200409113005.png/pkwatermark