利用Github Action自动生成博客
最近终于把基于Github Action的博客自动生成功能搭建好了,之前也搜过一些资料,但是发现里面用到的action都是第三方自己写的,不是Github官方的action,因此我自己琢磨了下如何利用官方的action来实现博客生成。
由于之前都是自己本地用jekyll生成好网站传到github上,但是github老是抽风,因此已经很久没有更新博客了。最近打算把这一年写的博客,都好好整理一下,然后重新传上来。
仓库托管
目前我把自己的博客相关的仓库分为了两个部分,一个是公有的博客样式仓库jekyll-theme,另一个是私有的博客文章仓库blog。博客样式仓库里面通过不同分支对应不同的样式,而且可以公开给其他人使用,博客文章仓库里面因为有一些草稿以及私人的笔记,不便于公开。那么这里就会有一个问题了,就是Github Action是如何拉取私有仓库的代码呢?
Personal Aceess Token
PAT是一种可以自定义权限访问的令牌,我们需要在开发者设置中去生成,生成的时候要注意开启Contents的读写权限,光是读取权限是不行的,还有写入权限。这个我也不是太理解,我的blog仓库只是用来读取的呀,用于生成仓库而已。
Repository Secrets
拿到这个PAT后,我们需要在GitHub Pages对应的仓库(xxx.github.io)中,设置secrets。比如我设置了一个在actions中使用的secrets叫做TOKEN_GITHUB_PAGES,这样我们在创建Github Workflow的时候,就不用把我们的token写在里面暴露出去了,因为所有人都能看到公有仓库的workflow,这样就实现了xxx.github.io仓库既能够拉取私有仓库代码,又不会把PAT暴露出去了。
Github Workflow
在创建完你的xxx.github.io仓库后,需要创建一个action,创建的时候选择官方的jekyll模版。我在这个模板上进行修改了,增加了一些简单的step,可以参考我写的workflow文件,这里面没有用到任何第三方的workflow,主要依赖于官方的actions/checkout@v4
,这个是用来拉取代码的。然后自己通过多行命令行的方式安装了jekyll和github-pages的ruby gem。
因此我的svandex.github.io仓库里面什么也没有,主要是通过jekyll-theme和私有的blog仓库来实现博客样式和内容的托管。