利用github-action自动部署blog/gitbook

#运用背景

这段时间有写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系统,规避了这个问题。

# 表明这个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麻烦多了,二期换了电脑还得安装一系列环境和插件。采用这种方式就简单了啊,平时自己只需要写文章,反正这个库也肯定需要版本管理,那个给它加一个持续集成的任务不就不需要管后续的问题了吗。

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 的账户和密码了。

updatedupdated2021-07-012021-07-01