前言

前几天看到了GitHub action可以自动运行代码,试了一下Python,感觉不错,之后想到博客之前挂掉了,可以用这个来自动部署,于是搜了一下,果然有很多教程,但我还是弄了好久,记一下采坑过程。
一共两个仓库,一个Hexo源文件+action,一个网站HTML等文件,用于访问。

配置私钥公钥

因为换了电脑,之前的环境什么的都没有了,得重新生成。
生成过程一直回车就好了。

  • 私钥的配置:将生成的 private key 作为 Hexo 源文件仓库 Settings > Secrets 的 一个名叫 DEPLOY_KEYSecret。注意:需要复制包括 -----BEGIN OPENSSH PRIVATE KEY----------END OPENSSH PRIVATE KEY----- 的整个内容。Secret 相当于一个变量,可以使私有变量不公开。

  • 公钥的配置:直接在这个链接点击那个new SSH key就可配置

添加Github action

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
name: 自动部署

on:
push:
branches:
- main # default branch
jobs:
build:
runs-on: ubuntu-latest

steps:
# check it to your workflow can access it
# from: https://github.com/actions/checkout
- name: Checkout Repository master branch
uses: actions/checkout@master

# from: https://github.com/actions/setup-node
- name: Setup Node.js 12.x
uses: actions/setup-node@master
with:
node-version: "12.x"

- name: Hexo安装
run: |
npm install hexo-cli -g
npm install
npm install hexo-deployer-git --save

- name: Git设置
env:
GH_ACTION_DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
# set up private key for deploy
mkdir -p ~/.ssh/
echo "$GH_ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name 'Github用户名'
git config --global user.email 'Github邮箱'

- name: Hexo 生成文件
run: |
hexo clean
hexo g
hexo deploy

# - name: push到Github
# run: |
# cd ./public
# git config --global --list
# git init
# git add .
# git commit -m "CI built at `date +"%Y-%m-%d %H:%M:%S"`"
# git branch -M main
# git remote add origin git@github.com:dlytang/dlytang.github.io.git
# git pull origin main
# git push -u origin main

因为之前秘钥生成错了,导致一直不能push到仓库。
之后每次push到这个仓库后,就会自动生成HTML,push到网站文件的仓库

自定义域名 + CDN

最近好像GitHub访问挺快的,记得之前都上不去,换成了国内的Gitee。
不过还是用一下又拍云的CDN吧,毕竟之前都申请好了。
配置的时候先不要勾选GitHub自带的https,最后配置好再弄,不然也会访问不了。

  • 此处有一点要注意,在Hexo源文件的source目录下新建CNAME文件,里面写上自定义的域名(不用带http或https),不然每次GitHub action push之后就没有这个文件,自定义域名也就消失了。

结语

这下应该没什么问题了,以后换电脑之类的只要把Hexo源文件的仓库拉下来就行,也不用担心服务器Nginx挂掉之后,不记得重启什么的命令格式还得百度的问题了。
图片什么的,就再新建一个仓库,用jsdelivr吧,之前的SM访问太慢了,图片还经常打不开。