你不会还在本地部署hexo吧?

众所周知,用hexo+gitpage能搭建很不错的博客,但是有个比较致命的缺点,不方便跨平台部署,当然你也可以选择将其部署至服务器,或者压缩拷贝

就连backup插件也还是得需要在本地安装nodejs等服务,可谓是让人觉得头疼

这些问题遇到CI都可以迎刃而解,除了人尽皆知的Travis-CI,另一个不错的方案是使用GithHub提供的Action,相信我,用过它的人都说好

虽说过程有些麻烦,但是可以一劳永逸的解决多端设备都能快速部署hexo

创建私有库

xB5FSA

密钥对

上篇文章讲过啦创建秘钥对

初始化仓库

在本地博客路径执行hexo clean,然后复制这些文件到一个新目录,除了node_modules

新目录中初始化git仓库git init,然后连接至远程仓库git remote add origin 仓库地址

PXx9nO

然后git push -u origin master上传到远程仓库

添加Secrets

在仓库–>setting–>Secrets里添加一个DEPLOY_KEY内容是你本地私钥,用cat ~/.ssh/rsa查看,并整段复制

04-10-21-52

Action

点击私有库中的Action

AzgMeG

然后点击Set up a workflow yourself

04-10-21-44

然后复制粘贴到输入框,注意修改user_name: 你的github用户名 user_email: 你的github邮箱 SOURCE_REPO: "原仓库(gitpage)" SOURCE_BRANCH: "分支" DESTINATION_REPO: "目标仓库" DESTINATION_BRANCH: "分支"这些变量为你自己的信息

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
name: Deploy

on: [push]

jobs:
build:
runs-on: ubuntu-latest
name: deploy hexo
steps:
- name: Checkout
uses: actions/checkout@v1
with:
submodules: true

# 使用缓存加速nodejs的安装,如果超过七天没有访问,就会删除缓存
# npm插件会读取package.json来安装
- name: Cache node modules
uses: actions/cache@v1
id: cache
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm install

# 部署hexo
- name: Deploy
id: deploy
uses: sma11black/hexo-action@v1.0.0
with:
deploy_key: ${{ secrets.DEPLOY_KEY }}
user_name: 你的github用户名
user_email: 你的github邮箱

# 同步至coding,不需要可以删除这段
- name: Sync
uses: wei/git-sync@v1.1.2
env:
SOURCE_REPO: "原仓库(gitpage)"
SOURCE_BRANCH: "分支"
DESTINATION_REPO: "目标仓库"
DESTINATION_BRANCH: "分支"
SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_KEY }}
with:
args: $SOURCE_REPO $SOURCE_BRANCH $DESTINATION_REPO $DESTINATION_BRANCH

Kw70vQ

过一会就能看到Action通过了(我忘记把_config里coding去掉了)

H7VH8H

当写完workflow后别忘记在本地git pull(,或你在本地写完再git push也是一样)

配置

一定要规范_config!!!

e.g

1
2
3
4
deploy:
type: git
repo: git@github.com:zhboat/zhboat.github.io
branch: master

CNAME和README的处理

CNAME和README直接丢到source文件夹内就行,如果你的README是md格式,请在_config.yml里添加一行skip_render: README.md

后续

换设备的话只需要从github克隆仓库后就行,无需再安装nodejs

在source/_posts里新建xx.md,写完文章后push到仓库就能自动部署


其实这样部署有个弊端就是gitpage的commit会清空

但是懒癌患者也不会去看commit的^ ^


比懒可没人赶得上我

说起懒,咱就觉得git add . git commit -m git push这三条命令敲下来比hexo g -d来的更麻烦了,这可太不妙了

脚本可是万能的😉

04-10-22-18

新建个sh

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
CURTIME=$(date +"%Y-%m-%d")-$(stat $BLOG_DIR |awk {'print $11'})
BLOG_DIR=($HOME/Desktop/blog)

cd $BLOG_DIR
git add .
git commit -m "✏️Last updated at: $CURTIME"
git push

osascript ~/Jio本/tips.scpt

修改fish的函数

1
2
3
function push
sh ~/Jio本/push.sh
end

用脚本编辑器添加个AppleScript

1
display dialog "上传成功" buttons {"OK"} default button 1

巴适得很~ ؏؏☝ᖗ乛◡乛ᖘ☝؏؏


参考https://www.cnblogs.com/deppwang/p/12326906.html

git-sync:https://github.com/marketplace/actions/git-sync-action

hexo-action:https://github.com/marketplace/actions/hexo-action

评论