参考了几个帖子:

Github Actions自动生成Hugo站点并部署到Github Pages

JiahongWu-使用Github(Action)+Hugo搭建自己的博客

其实,学习hugo建站的第一步的时候,已经看到多篇涉及利用Github Actions实现Hugo自动部署的文章。

因为当时只想着要先解决温饱,所以没开展研究。

后面几天,站也建了,网上也推了,域名也绑了。

才有进一步学习的想法。

一、认识现状

几年前折腾hexo的时候就遇到过这个问题,

当时部署完成后,日常要写一篇日志的时候,还要输一大堆代码,太麻烦了。

没过几天,就懒的去更新了。

hugo的发日志现状也是:

1、Typora写日志,生成一篇MD文件,放到POST文件夹下。

2、git端敲代码

1
2
3
4
5
hugo -D
cd public  #进入要推送的静态网页文件夹
git add .  #添加新增的文件
git commit -m "0318update" #提交
git push -f origin master  #推送完成

二、麻烦在哪里

个人感觉是多敲代码

而且移动端更新日志就比较麻烦

未安装Git的电脑上也难更新

三、Github Actions能做什么

由于自己非专业,理解起来有点困难,

想网上找找文章,听听大神们的科普

结果发现大部分的大神就是告诉你

怎么用Github Actions实现Hugo自动部署

然后,1,2,3,4.

而且发现不同的人,方法用的还不一样。@.@


最后,在

阿泉-Github Actions自动生成Hugo站点并部署到Github Pages

这篇文章里找到了答案:

大概意思就是一种思路,但有两种形式:

1、github上建两个仓库,A仓库存放整个hugo源码;B仓库为供于别人浏览用的X.github.io仓库,通过github actions来监测A仓库中任一文件的变化,触发github actions在云端生成更新后的静态站点并完成部署到B仓库,实现自动部署的功能。

2、github上建1个仓库,但生成2个分支,一个用于存放整个hugo源码;一个gh-pages分支存放静态文件,通过github actions来监测A分支中任一文件的变化,触发github actions在云端生成更新后的静态站点并完成部署到gh-pages分支,实现自动部署的功能。

也就是说通过以上部署,以后在PC端的源码文件夹下POST文件夹内写完一篇MD文件的日志后,Git执行

1
2
3
git add .  #添加新增的文件
git commit -m "0318update" #提交
git push -f origin master  #推送完成

即可。其实也就少了两句代码。 另外,还可以在github网面端上传或上线写一篇MD文件保存即可实现自动部署。 同理,手机端也可实现发布新日志。

四、具体操作

1、github上建两个仓库,A仓库名随意,属性可以设为private。B仓库名必须为 “用户名.github.io”

2、设置Deploy keys与Secrets

在git端使用ssh-keygen命令来生成私钥与公钥。

1
$ ssh-keygen.exe -t rsa -b 4096 -C "你的邮箱名@xxx.com"

3、在B仓库的setting里将公钥内容添加至Deploy keys,名称自定义,一定要勾选allow write access

4、在A仓库setting里将私钥内容添加至Secrets,命名为ACTIONS_DEPLOY_KEY,这个名字也可以自定义,但后面的脚本中要对应上。

5、在A仓库的Actions里,选择set up a workflow youself,新建一个main.yml文件。输入以下内容:

 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
name: Auto Build and Deploy  #actions名称,可自定义
on:
  push:
    branches:
      - master
jobs:
  build-deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2  
       # with:
       #   submodules: true

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: 'latest'
          extended: true

      - name: Build Hugo Site
        run: hugo --minify        #生成站点

      - name: Deploy to GitHub pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} # 同上面说到的(Private Key)名
          external_repository: 用户名/用户名.github.io # Github Pages远程地址
          publish_dir: "./public" #推送目录
          keep_files: false # 删除已存在文件
          publish_branch: master  # 推送
          commit_message: ${{ github.event.head_commit.message }}

记得点保存。

6、将A仓库clone到本地

然后在本地A仓库中添加hugo源码,并放入自己要更新的日志、网站ico等。

7、重推到远端

1
2
3
git add -A
git commit -m "0318update"
git push -f origin master

推送完成后,不放心的可以去A仓库点击Actions,查看代码运行情况,一切正常后,应该很会快更新网页,可以去博客页看看更新是否完成。