GitHub_Actions部署Hexo博客

其实

原理同《coding持续集成部署hexo博客》相似,只是换了个平台而已,仅此而已。但是可以配合使用Github的话可以使用jsdelivr CDN(中国由网宿cdn提供)

使用

GitHub Actions同Travis CI差不多都是持续集成服务,感兴趣可以到官网了解 Features • GitHub Actions

由于是自家的服务,所以每个项目都是内置自带Actions的,需要使用只需在项目页面的Actions子页面,选择你要的脚本或是使用自己的脚本,这里选择set up a workflow yourself

Actions

之后只要复制以下代码即可(代码来自@JerryC)

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

on:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x]

steps:
- name: 开始运行
uses: actions/checkout@v1

- name: 设置 Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}

- name: 安装 Hexo CI
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g

- name: 缓存
uses: actions/cache@v1
id: cache-dependencies
with:
path: node_modules
key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}

- name: 安装插件
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
npm install

- name: 部署博客
run: |
hexo clean && hexo g
cd ./public
git init
git config user.name "${{secrets.GIT_NAME}}"
git config user.email "${{secrets.GIT_EMAIL}}"
git add .
git commit -m "Update"
git push --force --quiet "https://${{secrets.GH_TOKEN}}@${{secrets.GH_REF}}" master:master

需要关注的就是4个变量和1个执行命令

变量:GIT_NAME,GIT_EMAIL,GH_TOKEN,GH_REF,分别是git的姓名,邮箱和token及仓库地址

token获取地址,Settings——Developer settings——Personal access tokens——Generate new token创建一个只有public_repo(公共仓库)权限的token即可,得到一个类似d6ce252bf70f925f32c36850a14e276b915b005f

create token

token

仓库地址为:github.com/JackCh3n/n0bige.git

这一句完整的命令就是使用Token强制提交

1
git push --force --quiet https://d6ce252bf70f925f32c36850a14e276b915b005f@github.com/JackCh3n/n0bige.git master:master

变量则是在项目,settings,Secrets,创建并添加即可,之后脚本就可以通过${{secrets.GIT_NAME}}的方式获取变量的值了,为了保护隐私/安全?

Secrets

执行命令:原来是hexo clean && hexo g && hexo douban && gulp,就是hexo缓存清理,hexo生成静态文件,hexo 豆瓣页面和html,css,js压缩,这里可以根据自己的需求做修改,如我就将最后的两个都删了,最终得到hexo clean && hexo g

最后可以在项目页—— Actions——All workflows查看脚本运行的日志和情况

脚本日志

jsdelivr

一个开放的CDN,提供npm,GitHub,WordPress等项目的镜像功能(国内用的是网宿CDN)

使用方法copy官方的介绍,支持版本号、分支、列表或是获取精简版的js和css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//加载任何GitHub版本、提交或分支
//注意:我们建议对支持npm的项目使用npm
https://cdn.jsdeliver.net/gh/user/repo@version/file

//加载jQuery v3.2.1
https://cdn.jsdeliver.net/gh/jquery/jquery@3.2.1/dist/jquery.min.js

//使用版本范围而不是特定版本
https://cdn.jsdeliver.net/gh/jquery/jquery@3.2/dist/jquery.min.js
https://cdn.jsdeliver.net/gh/jquery/jquery@3/dist/jquery.min.js

//完全省略版本以获得最新版本
//你不应该在生产中使用这个
https://cdn.jsdeliver.net/gh/jquery/jquery/dist/jquery.min.js

//将“.min”添加到任何JS/CSS文件以获取精简版本
//如果不存在,我们会为您生成
https://cdn.jsdeliver.net/gh/jquery/jquery@3.2.1/src/core.min.js

//在末尾添加/以获取目录列表
https://cdn.jsdeliver.net/gh/jquery/jquery/

注意:jsdelivr 仅支持20M以下的文件加速,20M以上会出现无法下载的现象。

仓库超过50M也无法显示列表:Package size exceeded the configured limit of 50 MB. Try https://github.com/JackCh3n/pantest/tree/master/ instead.

单文件大小超过20M:File size exceeded the configured limit of 20 MB.

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
jsdelivr CDN文件上限测下载链接
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/1m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/10m.zip

https://cdn.jsdelivr.net/gh/JackCh3n/pantest/20m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/21m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/22m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/23m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/24m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/25m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/26m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/27m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/28m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/29m.zip

https://cdn.jsdelivr.net/gh/JackCh3n/pantest/30m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/40m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/50m.zip
https://cdn.jsdelivr.net/gh/JackCh3n/pantest/55m.zip
window生成指定大小文件
fsutil file createnew c:\1 1024
# 1024 = 1k
# 10240 = 10k
# 1024000 = 1mb
# 10240000 = 10mb
# 20480000 = 20mb
# 25600000 = 25mb
# 30720000 = 30mb
# 40960000 = 40mb
# 51200000 = 50mb
# 56320000 = 55mb

linux生成指定大小文件
# /dev/zero 是 Linux 提供的一个特殊的字符设备(伪文件,Pseudo-devices)
# 它的特点是可以永远读该文件,每次读取的结果都是二进制 0
#生成一个文件名为10M.zip的10M测试文件
dd if=/dev/zero of=/root/test/10M.zip bs=1M count=10

参考