前言

目前自动部署或者称之为持续集成的博客部署方式有两种,一是 travis-ci 部署,二是 github action 部署,前一种我使用时总是不能自动部署,需要我手动在其网站里 trigger a build,因此使用了第二种方式。

部署前准备

  1. 首先可以在本地运行正常;
  2. 为项目添加公钥与密钥;
  3. actions 里添加运行命令代码;
  4. 推送即可以得到。

遇到的问题

  1. 生成的网站地址过长?
  2. 自动部署失败?
  3. 部署成功,但是生成的网页是空白的?

本地运行

  1. 本地安装 npm install –save hexo-deployer-git,然后配置根目录下的_config.yml:
1
2
3
4
deploy:
type: git
repo: git@github.com:maya1900/maya1900.github.io.git
branch: master
  1. 本地部署到 github:
1
hexo clean && hexo g && hexo d

创建项目

  1. github 里创建一个空项目,名字起与账户名相同的前缀,如账户名是 maya1900,那么项目名称应该是 maya1900.github.io,前缀不能是别的名字,否则就会出现上述的第一个问题;
  2. 先在本地配置公钥与密钥,放到 github 的项目里;
  3. 可以将项目放在分支里,而部署出来的静态页面放在 master 里。即 push 到 github 前先切换分支,如 git checkout -b hexo,提交完代码,此时代码在 hexo 分支里

actions 部署

  1. 首先要把项目切换默认分支为 hexo 分支,在项目里的 setting–branch 里进行切换;
  2. 在 actions 里新建自己的 flow,点击上面的蓝字**==set up a workflow yourself #2196F3==** 即可:
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
name: Deploy Blog

on: [push] # 当有新push时运行

jobs:
build: # 一项叫做build的任务

runs-on: ubuntu-latest # 在最新版的Ubuntu系统下运行

steps:
- name: Checkout # 将仓库内master分支的内容下载到工作目录
uses: actions/checkout@v2 # 脚本来自 https://github.com/actions/checkout

- name: Use Node.js 10.x # 配置Node环境
uses: actions/setup-node@v2 # 配置脚本来自 https://github.com/actions/setup-node
with:
node-version: "14"

- name: Setup Hexo env
env:
ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_PRI }} #这里是项目中设置的私钥,换成你自己的
run: |
# set up private key for deploy
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" | tr -d '\r' > ~/.ssh/id_rsa # 配置秘钥
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
# set git infomation
git config --global user.name 'maya1900' # 换成你自己的邮箱和名字
git config --global user.email 'xxx@qq.com'
# install dependencies
npm i -g hexo-cli # 安装hexo
npm install --save hexo-deployer-git
npm i

- name: Deploy
run: |
# publish
hexo clean && hexo generate && hexo deploy # 执行部署程序
  1. 然后这样就成功了,接下来 push 代码到 hexo 分支,actions 就会自动执行,等 build 成功就可以访问自己的页面了。

解决上面的问题

  1. 上面步骤有提到,不重复了;
  2. 部署失败按步骤走主要是配置密钥是否正确;
  3. 这个问题纠结了很久,结果是下载主题的时候,因为是使用 git clone,在主题目录中生成了.git 目录,和根目录的.git 冲突了,因此出现了网站访问白屏的问题。解决就删掉主题目录里的.git 文件夹,重新 Push 一次代码,网页就可以正常显示出来啦~~