0%

Hexo Gitee Pages 自动部署站点

此博客站点使用了Github作为主站,又使用了Gitee作为镜像站。但是Gitee免费账户是不支持提交后自动部署的,所以有大佬开发了在Github上使用的动作:gitee-pages-action点击查看)。只要在某个仓库配置好这个动作就能在往这个仓库提交任何内容时自动让Gitee部署Gitee里面指定仓库的内容。

我们按照这个仓库的文档往Hexo站点的source目录添加.github\workflows\sync.yml这个文件,并在这个文件里面配置要使用的Gitee站点仓库和用户名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
name: Sync

on:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Build Gitee Pages
uses: yanglbme/gitee-pages-action@main
with:
# 注意替换为你的 Gitee 用户名
gitee-username: 改成你的Gitee用户名
# 注意在 Settings->Secrets 配置 GITEE_PASSWORD
gitee-password: ${{ secrets.GITEE_PASSWORD }}
# 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错
gitee-repo: 改成你的Gitee仓库(用户名斜杠仓库名)
# 要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在)
branch: master

但是一个比较严重的问题是鄙人要让Github这边部署站点的仓库更新时触发这个动作,鄙人用的是Hexo,如果鄙人在source目录配置了.github目录时使用Hexo的generate命令是不会向Github提交这个动作的配置的。国内也没有一个比较好的解决方案,只好去查Hexo的文档。

经过查阅Hexo文档发现,Hexo默认会忽略隐藏文件和文件夹(包括名称以下划线和 .开头的文件和文件夹,Hexo的_posts_data等目录除外)。因此需要在后台仓库的_config.yml文件添加这样的配置才能把.github的目录也给带进来。可能已经预留了include属性,建议先搜索这个属性,然后直接往这里面添加。

1
2
include: 
- ".github/**/*"

但是这样即使配置了添加这些文件,他默认也会把这个源文件也给渲染,所以我们还需要设置忽略这个文件的渲染。继续在_config.yml文件查找skip_render属性,添加这个文件名。

1
2
skip_render: 
- ".github/**/*"

还有一处也需要修改,往远程仓库部署时要设置不能跳过隐藏的文件,因为Git Bash是按Linux设计的,默认会将.开头的文件和文件夹视为隐藏文件。所以要继续在_config.yml文件查找deploy属性,设置里面ignore_hiddenfalse

1
2
3
4
5
6
7
deploy:
type: git
ignore_hidden: false # 添加这个属性值为false
repo:
gitee: git@gitee.com:你的Gitee仓库.git,要使用的分支名
github: git@github.com:你的Github仓库.git,要使用的分支名
# 可以先提交Gitee然后再提交Github,也就是把这个Gitee的地址放在前面。这样保证Gitee的站点内容能在Github开始动作之前完成提交。

注意Github的部署仓库后台的Settings里面也要按照最上面那个仓库说明中那样配置Secrets(GITEE_RSA_PRIVATE_KEYGITEE_PASSWORD的两个密钥。其中:GITEE_RSA_PRIVATE_KEY存放id_rsa私钥;GITEE_PASSWORD存放Gitee帐号的密码),这一步不要忘记了。

这样设置之后就可以在Github完成部署仓库提交之后通过配置的动作自动使Gitee也部署站点。

Buy me a coffee
No.5972 Alipay

Alipay

推进创文常态化 共建文明襄阳城 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 做文明襄阳人 建文明襄阳城 凝聚文明正能量 筑梦千年古襄阳 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 创建全国文明城市 加快建设汉江流域中心城市 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 讲文明 树新风 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 用微笑融化陌生 用文明美化襄阳 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 争当文明使者 播撒文明新风