使用Github的Pages来记录类博客内容,最开始是直接存手工敲命令部署到指定仓库,过程繁琐。后来用了Travis CI,发现挺好用,当时Github的Actions功能刚刚出来,稍微看了下,觉得比较复杂,就没有继续下去。这次因为把Github重新整理了下,发现Travis的org域名停用了系统,原来的配置都没有了,索性重新从Github的Action开始研究,把自动化做起来。
下面就记录下,我本次操作的步骤,如何调用Github 的Actions来完成持续集成服务。
GitHub Actions介绍
GitHub Actions 的工作原理:当我们提前设置好需要自动化执行的任务脚本(.github/workflows 下的·.yml
文件)后,GitHub Actions 监控当前仓库的某一个操作(如:push),一旦有此操作,就会分配一个虚拟主机来自动化执行这些任务。
我们设置的任务即为 Action
,它存放在项目根目录的 .github/workflows 文件下,后缀为 .yml
。一个 Action
相当于是一个工作流 workflow
,一个工作流则可以有多个任务 job
,而每个任务又能分成几个步骤step
。任务、步骤会依次执行。
Github的相关资料可参考:
GitHub Actions 官网:https://github.com/features/actions
Github 博客仓库
首先,新建一个Hexo的源码仓库blog
,一个Pages
发布的仓库。Pages的仓库名规定形式:.github.io
。我们将实现,blog
仓库的内容修改提交后,自动发布hexo g
生成的发布文件部署到Pages
仓库。
Github配置
1. 创建 Github Personal Access Token
Personal Access Token用于Actions调用GitHub仓库操作的Hook各种行为需要的会话授权,教程可参考:https://docs.github.com/cn/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
2. 创建仓库的Secrets
Actions在工作流程中使用加密密码,采用Github Personal Access Token来做相关关联,我命名为ACTION_DEPLOY_KEY
,后面编写脚本的时候会用到。文档可参考:https://docs.github.com/cn/actions/reference/encrypted-secrets
创建workflow脚本
在Github的项目中选择Action,系统提供了很多工作流的模板,可以根据模板来做修改。在这里,我直接在项目的代码中创建,不使用系统提供的功能。我们需要在项目根目录下创建一个文件夹.github/workflows
,并在文件夹下创建一个YAML脚本文件,用于编写任务,文件名由自定义即可,Action是根据扩展名来识别的。我这里命名为main.yml
。
脚本内容:
1 | name: Deploy my blog |
workflow的文档可参考:https://docs.github.com/cn/actions/reference/workflow-syntax-for-github-actions
部署
最后,我们将源码推送到blog
仓库,Github Actions会自动部署Pages项目了。