此博客站点使用了Github作为主站,又使用了Gitee作为镜像站。但是Gitee免费账户是不支持提交后自动部署的,所以有大佬开发了在Github上使用的动作:gitee-pages-action
(点击查看)。只要在某个仓库配置好这个动作就能在往这个仓库提交任何内容时自动让Gitee部署Gitee里面指定仓库的内容。
我们按照这个仓库的文档往Hexo站点的source
目录添加.github\workflows\sync.yml
这个文件,并在这个文件里面配置要使用的Gitee站点仓库和用户名。
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-username: 改成你的Gitee用户名
gitee-password: ${{ secrets.GITEE_PASSWORD }}
gitee-repo: 改成你的Gitee仓库(用户名斜杠仓库名)
branch: master
但是一个比较严重的问题是鄙人要让Github这边部署站点的仓库更新时触发这个动作,鄙人用的是Hexo,如果鄙人在source
目录配置了.github
目录时使用Hexo的generate
命令是不会向Github提交这个动作的配置的。国内也没有一个比较好的解决方案,只好去查Hexo的文档。
经过查阅Hexo文档发现,Hexo默认会忽略隐藏文件和文件夹(包括名称以下划线和 .
开头的文件和文件夹,Hexo的_posts
和_data
等目录除外)。因此需要在后台仓库的_config.yml
文件添加这样的配置才能把.github
的目录也给带进来。可能已经预留了include
属性,建议先搜索这个属性,然后直接往这里面添加。
include:
- ".github/**/*"
但是这样即使配置了添加这些文件,他默认也会把这个源文件也给渲染,所以我们还需要设置忽略这个文件的渲染。继续在_config.yml
文件查找skip_render
属性,添加这个文件名。
skip_render:
- ".github/**/*"
还有一处也需要修改,往远程仓库部署时要设置不能跳过隐藏的文件,因为Git Bash是按Linux设计的,默认会将.
开头的文件和文件夹视为隐藏文件。所以要继续在_config.yml
文件查找deploy
属性,设置里面ignore_hidden
为false
。
deploy:
type: git
ignore_hidden: false
repo:
gitee: git@gitee.com:你的Gitee仓库.git,要使用的分支名
github: git@github.com:你的Github仓库.git,要使用的分支名
注意Github的部署仓库后台的Settings里面也要按照最上面那个仓库说明中那样配置Secrets(GITEE_RSA_PRIVATE_KEY
和GITEE_PASSWORD
的两个密钥。其中:GITEE_RSA_PRIVATE_KEY
存放id_rsa
私钥;GITEE_PASSWORD
存放Gitee帐号的密码),这一步不要忘记了。
这样设置之后就可以在Github完成部署仓库提交之后通过配置的动作自动使Gitee也部署站点。