之前博客一直是放在 CloudBase 云开发上的。主要用了云开发的静态网站托管和云函数功能。自从评论系统维护之后,云函数也不再使用了。

前几天收到了腾讯云的通知,云开发计费方式调整,将于 8 月后使用“基础套餐 + 按量付费”模式,需先购买带有一定配额的基础套餐,超出配额部分再按使用量付费。

20220724135514

虽然仍然有免费版本,但静态网站托管必须使用按量计费套餐才能使用,换言之,免费用户就不能再使用云开发做静态网站托管了。

在我理解下,CloudBase 是一个能力集合服务,静态网站托管依赖于 COS 和 CDN,云函数依赖于 Serverless,云托管依赖于容器服务。其它服务都可以非常灵活的按量计费的,为什么到云开发这打包之后就有了门槛了。。。

最后决定还是迁移吧。迁到 COS 去。

本次调整

  • 原站迁移到腾讯云 COS 成都节点
  • 全站支持 IPv6 访问
  • 调整了打包流程,增加了对静态网站的制品管理

CODING Jenkinsfile

还是放一个 CODING 的 Jenkinsfile,如果有一样想迁移的小伙伴,可以简单改改就能用了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
pipeline {
agent any
stages {
stage('Checkout') {
steps {
// 企业微信通知
sh '''curl \'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=\'"${WEWORK_BOT}"\'\' \\
-H \'Content-Type: application/json\' \\
-d \'{
"msgtype": "markdown",
"markdown": {
"content":
"# \'$JOB_ID\' 开始构建
>项目名称:\'$PROJECT_NAME\'
>Git Commit:\'$GIT_COMMIT_SHORT\'
>Git 提交人:\'$GIT_COMMITTER_NAME\'"
}
}\''''
checkout([
$class: 'GitSCM',
branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[
url: env.GIT_REPO_URL,
credentialsId: env.CREDENTIALS_ID
]]])
}
}
stage('Node.js') {
steps {
// CODING自己带的 nodejs 版本太低了,换成12.x版本
dir('/root/.cache/downloads') {
sh 'wget -nc "https://coding-public-generic.pkg.coding.net/public/downloads/node-linux-x64.tar.xz?version=v12.22.7" -O node-v12.22.7-linux-x64.tar.xz | true'
sh 'tar -xf node-v12.22.7-linux-x64.tar.xz -C /usr --strip-components 1'
}
sh 'node -v'
}
}
stage('Build') {
steps {
// 博客前台的 GIT 提交标记
sh 'sed -i \'s/Preview/\'"$GIT_COMMIT_SHORT"\'/g\' _config.butterfly.yml'
sh '''npm install -g hexo-cli@4.3.0
npm install -g
hexo version'''
sh 'hexo g'
}
}
stage('COS Deploy') {
steps {
// 上传到 COS
sh "coscmd config -a ${COS_SECRET_ID} -s ${COS_SECRET_KEY} -b ${COS_BUCKET_NAME} -r ${COS_BUCKET_REGION}"
sh 'coscmd upload -r ./public/ /'
}
}
stage('CODING Upload') {
steps {
// 将最新版本的打包文件发布到 CODING 的一个 GIT 仓库中
sh 'hexo d'
script {
// 定义了一个制品版本号,GIT-提交标记
ARTIFACT_VERSION = "GIT-${env.GIT_COMMIT_SHORT}"
}
// 调用 CODING 插件上传制品到制品库
codingArtifactsGeneric(files: 'public/*', repoName: 'static_html', version: ARTIFACT_VERSION, zip: 'web_static.zip')
}
}
}
post {
// 构建成功的企业微信通知
success {
sh '''curl \'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=\'"${WEWORK_BOT}"\'\' \\
-H \'Content-Type: application/json\' \\
-d \'{
"msgtype": "markdown",
"markdown": {
"content":
"# \'$JOB_ID\' 构建成功
>项目名称:\'$PROJECT_NAME\'
>Git Commit:\'$GIT_COMMIT_SHORT\'
>Git 提交人:\'$GIT_COMMITTER_NAME\'"
}
}\''''
}
}
}

需要关联的环境变量

COS_BUCKET_NAME:COS 桶名称
COS_BUCKET_REGION:COS 桶所在地域
COS_SECRET_KEY:有 COS 操作权限的腾讯云访问密钥 KEY
COS_SECRET_ID:有 COS 操作权限的腾讯云访问密钥 ID
WEWORK_BOT:企业微信 BOT 的 KEY

制品库的效果

之前使用hexo d的方式推送打包的静态文件,我们没法看到提交历史。所以打算使用制品库来管理一下打包的文件。

20220724143840

这样可以清晰的 Get 到每次提交打包出来的静态文件了。