🌱 介绍
许多平台都提供了免费的静态页面托管的服务,如 Github Pages
,Vercel
,Netlify
等。但在国内由于一些“原因”,这些国外的服务在国内的访问并不稳定。
国内的免费托管平台如 Gitee
限制很多,不可以自定义域名而且之前出现了防盗链问题,访问也不是很快,不太推荐作为托管平台。
腾讯云推出的云开发 CloudBase
也有静态页面托管服务。其实它相比这些静态托管平台,有更多强大的功能,甚至能够搭一整套系统。虽然是付费服务,但是在按量付费的情况下资费不是很高,在博客访问量不是很高的情况下十分合适。
目前在腾讯云中暂时还没有 Hugo
的模板。目前有两种方式可以达到自动部署的功能:
🏖 使用 CloudBase
使用 CloudBse 时,使用按量计费环境会有一些免费用量。
☁️ 腾讯云
创建环境
在 云开发 CloudBase
新建一个应用,选择 空模板,根据自身需求填写信息。
创建成功后,获得 环境ID
。
获取 API 密钥
为部署新建一个密钥对。在 访问管理 -> 用户列表 -> 新建用户 -> 自定义创建 -> 可访问资源并接收消息
。🔗 传送门
根据自己的需要,新建用户名后选择 编程访问
,点击下一步。
在自定义策略中勾选:
QcloudAccessForTCBRole
:授予云开发(TCB)对云资源的访问权限;QcloudAccessForTCBRoleInAccessCloudBaseRun
:供云开发(TCB)服务角色(TCB_QcsRole)进行关联,用于 TCB 访问其他云服务资源。包含私有网络 VPC、云服务器 CVM 相关操作权限。
点一下一步后,新建用户成功。可以获得 SecretId
和 SecretKey
。
⚙️ Github Actions
设置 Github Secrets
在项目的 Settings -> Secrets -> Actions
中添加上述得到的 ENV_ID
,SECRET_ID
,SECRET_KEY
(名称可以自定义)。
添加 workflows
可以在仓库的 Actions
中 new workflow
,或者在项目中 .github/workflows
添加。
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
| name: Tencent CloudBase
on:
push:
branches:
- main
jobs:
hugo-publish:
name: publish content to static website
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: latest
extended: true
- name: Build
run: hugo --minify --gc
# 使用云开发 Github Action 部署
- name: Deploy to Tencent CloudBase
uses: TencentCloudBase/cloudbase-action@v2
with:
secretId: ${{ secrets.QCLOUD_SECRET_ID }}
secretKey: ${{ secrets.QCLOUD_SECRET_KEY }}
envId: ${{ secrets.QCLOUD_ENV_ID }}
|
🚧 提示:
这里使用了 TencentCloudBase/cloudbase-action@v2
,需要在项目根目录添加 cloudbaserc.json
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| {
"envId": "{{env.ENV_ID}}", // 这里需要更改为你的 环境ID,或者在 .env 文件中配置
"$schema": "https://framework-1258016615.tcloudbaseapp.com/schema/latest.json",
"version": "2.0",
"framework": {
"name": "hugo-blog",
"plugins": {
"client": {
"use": "@cloudbase/framework-plugin-website",
"inputs": {
"outputPath": "public",
"ignore": [
".git",
".github",
"cloudbaserc.js"
]
}
}
}
}
}
|
🚧 提示:
这里也可以选择 Tencent CloudBase Github Action V1
。🙋♂️ (推荐)
V2 比 V1 有更多功能,比如拉取代码在腾讯云端编译,但目前没有 Hugo 模板。我们已经在 Github Actions 产出了静态文件,直接推送即可。所以目前对于 hugo 来说,没什么区别,使用甚至 V1 更快更简洁。
1
2
3
4
5
6
7
8
| # 将上述 jobs 内替换为
- name: Deploy to Tencent CloudBase
uses: TencentCloudBase/cloudbase-action@v1.1.1
with:
secretId: ${{ secrets.QCLOUD_SECRET_ID }}
secretKey: ${{ secrets.QCLOUD_SECRET_KEY }}
envId: ${{ secrets.QCLOUD_ENV_ID }}
staticSrcPath: public
|
🏝 使用 webify
使用 Web 应用托管(webify)主要是利用 Github Actions
生成 静态页面到另一个分支,再托管这个分支的内容。
☁️ 创建服务
在 Web 应用托管 -> 新建应用
新建一个简易静态页面模板。根据需求填写信息。选择纯静态页面。
在 应用列表 -> 应用设置
中配置仓库信息,并根据自身情况选择静态文件的部署分支。(如果当前没有生成静态页面的分支,可完成后面操作后再进行此步骤)。
⚙️ Github Actions
设置 Github Token
在用户的 Settings -> Developer settings -> Personal access tokens -> Generate new token
获取一个 Repo Token
。🔗 传送门
在项目的 Settings -> Secrets -> Actions
中添加上述得到的 Token
。
添加 workflows
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
| name: Tencent CloudBase
on:
push:
branches:
- main
jobs:
hugo-publish:
name: publish content to static website
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: latest
extended: true
- name: Build
run: hugo --minify --gc
- name: Deploy to Branch
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.ACCESS_TOKEN }}
keep_files: false
publish_branch: gh-pages # 更改为你想要生成的分支
publich_dir: ./public
commit_message: ${{ github.event.head_commit.message }}
|
⛓ 参考