自动部署Hexo
每次部署Hexo
都需要运行指令三件套,随着文章越来越多,编译的时间也随之越来越长,通过Github Action
,我们只需要在每次完成博客的编写或修改以后,将改动直接push
到远程仓库,之后的编译部署的工作统统交给CI
来完成即可。
参考
使用Github Action实现全自动部署 | Akilarの糖果屋
说明
- 准备二个仓库
- hexo :私人仓库,用来存放源码
- fulsun.github.io :公开仓库,用于部署 Github page
- 下面所有的操作在 私人仓库中进行配置
获取Token
访问 Github->头像(右上角)->Settings->Developer Settings->Personal access tokens-> generate new token,创建的Token名称随意,但必须勾选repo项和workflows项。 token
只会显示这一次,之后将无法查看,所以务必保证你已经记录下了Token
。之后如果忘记了就只能重新生成重新配置了。
配置Github Action
在hexo博客目录新建.github
文件夹,注意开头是有个.
的。然后在.github
内新建workflows
文件夹,再在workflows
文件夹内新建autodeploy.yml
,在[root]/.github/workflows/autodeploy.yml
里面输入
1 | # 当有改动推送到main分支时,启动Action |
定义变量
变量名 | 常亮含义 |
---|---|
GITHUBUSERNAME | Github用户名 |
GITHUBEMAIL | Github邮箱 |
GITHUBTOKEN | Github申请秘钥 |
- 到仓库的
Settings->Secrets->actions
下添加环境变量,变量名参考脚本中出现的,依次添加。
查看部署情况
此时,打开GIthub存放源码的私有仓库,找到action。
点击自动部署,根据刚刚的Commit记录找到相应的任务,点击Deploy查看部署情况,若全部打钩,恭喜你,你现在可以享受自动部署的快感了。
同步到gitee
同步 github的
fulsun.github.io
到 gitee的fulsun
在
[root]/.github/workflows/autodeploy.yml
里面添加输入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23#git push --force --quiet "https://${{ secrets.GITEEUSERNAME }}:${{ secrets.GITEETOKEN }}@gitee.com/${{ secrets.GITEEUSERNAME }}/${{ secrets.GITEEUSERNAME }}.git" master:master #gitee部署写法,需要的自行取消注释
#同步到gitee这一步,如果上面写了推送到gitee仓库的git push指令了,那同步到 Gitee 这一块就不需要了。
- name: 同步到 Gitee
uses: wearerequired/git-mirror-action@master
env:
# 注意在github私有仓库的Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
with:
# 注意替换为你的 GitHub 源仓库地址
source-repo: "git@github.com:${{ secrets.GITHUBUSERNAME }}/${{ secrets.GITHUBUSERNAME }}.github.io.git"
# 注意替换为你的 Gitee 目标仓库地址
destination-repo: "git@gitee.com:${{ secrets.GITEEUSERNAME }}/${{ secrets.GITEEUSERNAME }}"
# 这里就是模拟了一个点击更新网站按钮的动作。可以实现gitee page 自动更新。
- name: 构建 Gitee Pages
uses: yanglbme/gitee-pages-action@master
with:
# 注意替换为你的 Gitee 用户名
gitee-username: ${{ secrets.GITEEUSERNAME }}
# 注意在在github私有仓库的Settings->Secrets 配置 GITEE_PASSWORD
gitee-password: ${{ secrets.GITEE_PASSWORD }}
# 注意替换为你的 Gitee 仓库
gitee-repo: ${{ secrets.GITEEUSERNAME }}/${{ secrets.GITEEUSERNAME }}
branch: gh-pages添加变量
变量名 常亮含义 GITEE_RSA_PRIVATE_KEY 个人私钥,存放在 C:\Users\userneme\.ssh\id_rsa
GITEEUSERNAME Gitee 用户名 GITEE_PASSWORD Gitee 密码 可能遇到的bug:
- Gitee用github action自动部署更新收到短信,提示异地登录需要验证码。
因为github action使用的是美国的服务器,所以,使用github action来远程更新gitee的站点部署时,会收到异地登陆的短信,提示需要验证码。这个在脚本作者的issues里有相应的解决方案:登陆失败 #6- 在微信上搜索Gitee微信公众号,在微信公众号内绑定自己的Gitee账号,这样虽然还是会有异地登录提示,但是发过来的消息不再需要填写验证码,而且提醒若不是你在操作,请及时修改密码。(某种意义上就是我在操作,所以我选择不改密码2333)
- 使用VPN,通过美国IP登录一次Gitee。(一般第一步就能把问题解决了,用不到第二步。)
- Gitee部署失败
脚本的原理是用程序代替人工去点击Gitee Pages的更新按钮。所以需要你先手动做一次页面部署,确保有那个更新按钮在,脚本才有生效的前提。
- Gitee用github action自动部署更新收到短信,提示异地登录需要验证码。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 凉月の博客!
评论