运用背景

这段时间有写GITBOOK的需要,但是自己平时都是在自己的电脑上用Typora写完笔记之后,再用自己写的一个bat脚本执行后生成需要的文件部署到coding pages(github不支持私有项目部署pages,但是又不想占用一个repo在github上,所以放在了腾讯上)。这样执行有一个问题,挺麻烦的,而且执行时间长不说,会有个文件夹一直放在那里,强迫症看着难受啊。后来想到有持续集成的工具,第一次是想用Travis来部署,执行任务,但是它对开源项目永久免费,对私有项目是收费的,so,考虑到最近github开放了action的使用,目的是代替Travis,想着尝试着用一用。

Action-GitBook

gitbook本质就是个nodejs的任务生成的文件。在node的环境下执行后就行了,所以在这个action中我选择了node的运行环境来跑任务,系统选择的是windows,使用mac和ubuntu,npm安装全局命令居然在action里报没有权限!!!!!!!这是不能忍的啊,好在提供了Windows系统,规避了这个问题。

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
# 表明这个workflow的名称
name: 自动部署gitbook
# 指明触发条件
on: [push]
# 可以嵌套多个job
jobs:
build:
# 指定容器环境
runs-on: windows-latest
# 执行策略:运行环境的说明
strategy:
matrix:
node-version: [12]
# 具体的执行步骤 actions/* 都是官方自带的脚本,直接使用uses,也可以使用网友提供的
steps:
- name: 拉取代码
uses: actions/checkout@v1
- name: 配置环境
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node_version }}
- name: 安装gitbook及插件
# bat命令都用call调用防止跨命令执行
run: |
call npm install -g gitbook-cli
call npm install -g gitbook-summary
call gitbook -v
call gitbook install

- name: 生成_book
run: |
call book sm
call gitbook build
- name: push文件
run: |
cd ./_book
git init
git config --local user.name "${{ secrets.U_NAME }}"
git config --local user.email "${{ secrets.U_EMAIL }}"
git add *
git commit -m "update"
git push --force "https://${{ secrets.GH_USER }}:${{ secrets.GH_TOKEN }}@${{ secrets.GH_REF }}" master

env:
CI: true
# 为了保证私密,把敏感变量全部使用secret保存,在这里可以直接调用

运行结果

这样当我每次push我的笔记到github的时候都会触发这个任务,然后生成我的gitbook部署到我另一个repo去。再也不用我去手动的执行生成了,然后换了电脑还得再次配备全局的环境。

Action-Blog

既然gitbook都可以,那hexo的Blog也应该可以的啦。hexo的环境配置可是最麻烦的,比gitbook麻烦多了,二期换了电脑还得安装一系列环境和插件。采用这种方式就简单了啊,平时自己只需要写文章,反正这个库也肯定需要版本管理,那个给它加一个持续集成的任务不就不需要管后续的问题了吗。

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

on: [push]

jobs:
build:

runs-on: windows-latest

strategy:
matrix:
node-version: [12]

steps:
- name: 拉取代码
uses: actions/checkout@v1
- name: 配置环境
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node_version }}
- name: 安装hexo及插件
run: |
call npm install -g hexo
call npm install

- name: 生成文件并部署
run: |
call git config --global user.name "zytomorrow"
call git config --global user.email "z794672847@gmail.com"

call hexo g -d
env:
CI: true

额外需要注意一点就是hexo的部署这里采用的是自动部署,所以需要设计到权限,可以修改博客根目录的_config.yml文件,将里面的部署地址采用token的方式描写,这样就可以直接部署,不再需要git 的账户和密码了。

相关文章
评论
分享
  • sftp自动上传服务器

    插件背景 最近一个小伙伴因为工作上需要一直更新公司内网GITBOOK,但是内网又没有部署GIT。 so,这位同学居然采取的措施是每次连上ssh然后再FTP更新文件。 作为一个懒人,我是觉得容忍不了这种毫无技术含量的重复劳动。 脚本 ...

    sftp自动上传服务器
  • python类反射

    起因 最近一直在写数据构造器,所有的虚假数据均调用的是一个Methor类,需要用到类反射。 采取的做法方法一 为了方便,采取了eval()将组合成的方法名字符串运行成函数,刚开始很正常,但是一看速度,心态炸了啊!!!!!平均需要0....

    python类反射