Blogdown+Hugo+Github+Github Actions建立自动推送Blog
使用 Blogdown+Hugo+Github+Github Actions博客
之前使用Hexo建了个人主页,但是速度越来越慢,而且部署比较繁琐,最近学习R相关知识,发现Rmarkdown、Bookdown和Blogdown全家桶超级好用,所以与时俱进也升级了方案。
- Blogdown可以非常方便的使用Hugo进行操作,尤其是Rstudio高度集成,非常方便。
- Hugo就不多说了,神器。
- Github也不解释,之前Hexo也是利用的Github pages作为个人主页,现在加上可以实现自动部署的Github Actions则更加方便。
整体流程建立后非常方便进行更新,速度也很快,所以非常推荐,下面简单记录下关键步骤。
一、建立Github Pages
本流程一共需要在Github账号里建立两个Repository,第一个是用于发布页面的仓库名必须为 [你的用户名].github.io,使用 master 分支,也是用于Github Pages的Repository,可以自定义域名,为了这个自定义域名可以用于Github系列网站,也就没有采用Blogdown的推荐流程。
二、建立Hugo文章仓库
为了实现自动部署,我们还需要建立一个命名随便(如MyBlog)的Repository用于储存Blog的原始文档,之后利用Github Actions自动部署推送到XXX.github.io中进行发布。
三、部署Github Actions 脚本
基本知识随便google就有了,利用别人的轮子,编辑yml文件,编写自己的workflow。
name: CI #自动化的名称
on:
push: # push的时候触发
branches: # 那些分支需要触发
- master
jobs:
build:
runs-on: ubuntu-latest # 镜像市场
steps:
- name: checkout # 步骤的名称
uses: actions/checkout@v1 #软件市场的名称
with: # 参数
submodules: true
- name: Setup Hugo
uses: peaceiris/[email protected]
with:
hugo-version: '0.65.3'
extended: true
- name: Build
run: hugo --minify
- name: Deploy
uses: peaceiris/[email protected]
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
EXTERNAL_REPOSITORY: 你的用户名/你的用户名.github.io
PUBLISH_BRANCH: master
PUBLISH_DIR: ./public
注意替换你的用户名以及hugo的版本号。
四、部署工作
在VScode中的Powershell中输入密钥生成指令,提交到Github,实现两个仓库的关联,页面填写时注意修改名称为ACTIONS_DEPLOY_KEY
。
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
# 你会得到以下这两个文件:
# gh-pages.pub (public key) for .github.io 发布仓库
# gh-pages (private key) for myBlog 储存仓库
五、提交代码自动部署
之后只需要push本地的Blog文件至储存仓库,Actions就会自动利用Hugo进行public文件编译,之后推送至github.io仓库,利用Github pages进行发布,实现全自动操作,只需要将本地文件push到储存仓库即可。
push可以写一个脚本deploy.sh
#!/bin/sh
# 哈哈,我把文件放置OneDrive里面的,算是备份吧,主要是换电脑可以非常方便的同步。
cd D:\OneDrive\git\MyBlog\
# 建立本地仓库
git init
# 关联到Github仓库
git remote add origin [email protected]:你的用户名/Blog.git
# 把目录下所有文件更改状况提交到暂存区
git add .
# 提交更改的说明
git commit -m "Blog update"
# 开始推送到Github
git push -u origin master
exit 0
Tips:在Hugo文件content目录下新建一个CNAME文件(无任何后缀),内容为自定义域名,这样编译时会自动将CNAME文件生成至github.io根目录,不用每次部署后重新设置自定义域名。
六、Blogdown和Hugo建立本地文件
其实应该先写这块的,貌似这个才是重要的,不过Blogdown有一本书供参考,Hugo也是全网推荐,写多了也没有意义了,官网文档超级实用。看下面这篇用 R 语言的 blogdown+hugo+netlify+github 建博客就足够了,不过略有区别,托管网站的选择上,netlify可以替换为Github pages + Actions,更加方便,不需要第三方的程序实现自动部署。
下面是关键代码:(Git、Rstudio、R、VScode的安装 略)
setwd("D:\\OneDrive\\git\\MyBlog\\")
options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")))
# 超级简单的代码-----------------------------------------
install.packages('blogdown')
blogdown::install_hugo()
# 下载太慢就自己下载再安装
#blogdown:::install_hugo_bin("d:/hugo.exe")
# 选择主题、查看hugo版本、建立新文档、本地发布文件、本地网页预览
blogdown::new_site(theme = 'gcushen/hugo-academic')
blogdown::hugo_version()
blogdown::new_post()
blogdown::hugo_build()
blogdown::serve_site()
其实使用Rstudio的话,上面代码都不用了,addins里面超级方便的按钮操作New Post
、Serve site
,同时shiny界面直接输入内容即可,非常赞的可视化操作界面。不过,我还是选择VScode + R执行blogdown代码,大爱VScode。
设置gitignore,点击.gitignore文件,修改如下(copy Yihui大神):
.Rproj.user
.Rhistory
.RData
.Ruserdata
public
static/figures
blogdown
然后就可以改改改,写写写了~~
至于模板的修改,个性化的改动就看个人的能力了~~