这是真正意义上,在github上编写md文章。提交后啥也不用管,自动发布。
以上文字是我在github网页上创建了新的md文章,提交后,啥也不用管,自动就更新到我的网站!也就是真正意义上的,只要有网络,我就可以写文章,而之前要更新hexo博客网站,就必须携带电脑敲代码。
甚至,就算是在电脑上本地写文章,也不需要再执行hexo clean&&hexo deploy,等待hexo编译网站源代码,命令行打出一长串的生成信息。只需要将所有的代码push到github仓库,网站自动就会更新。
强烈推荐该种方法。
看以下教程时,注意有的步骤与我的博客网站写作工作流(一)区分。
我在github上建好了两个仓库: 私有的 website 仓库 和 公开的 github pages 仓库
我的网站是通过本地hexo加载自己做的博客网站主题hexo-theme-A4(已开源),生成静态页面,发布代码到 github pages仓库 ,再用vercel容器拉取 github pages代码 进行部署,使得允许互联网的访问。所以当 github pages仓库 任何的改动,vercel都会拉取最新的代码进行自动网站部署更新。
以上是我的博客网站写作工作流(一)的描述。现在是直接将本地hexo网站项目(举例我的文件夹名website)目录下所有数据,推送到github上的website仓库。
私有的 website仓库 : 网站真正意义上的源代码
公有的 github pages仓库 : 只存储源代码生成后的静态页面
举例说今天我想写篇文章:
打开浏览器,点击保存的书签,跳转到我github上的website仓库(虽然是私有仓库,但是我自己能访问)
在website仓库里的/source/_post文件夹下创建一个markdown文件,直接在github页面进行该markdown文件写作
注意:hexo对markdown文件的front-matter
有一些必须的参数(title、date必须),在写文章正文前添加如下信息
1 |
|
注意:检查github上新建的文章,文件后缀是否为.md
写作完毕,提交commit保存
以上步骤即完成了网站文章的更新。且自己在写作过程中,只需要专注于写作这件事,不会涉及到其他东西(诸如本地数据存储,上传,部署到网站等等)。
明白了新增一篇文章,那么去修改网站任意页面的内容相信你也一通百通了。
当我们在github网页完成文章的新增或者修改后,提交commit。github会自动帮我们运行一些本来我们在本地执行的命令(如hexo generate、hexo deploy),将website仓库,即网站的源码,自动生成网站所有的最新静态页面,推送到 github pages仓库。vercel再自动拉取 github pages仓库的代码数据,完成部署网站。
以上是整个流程。最关键的一步,是“github识别到website仓库有更新,会去自动生成静态页面,推送到github pages仓库” 这一操作。实际上用到的就是Github Action服务。
以下为配置步骤:
私有的 website 仓库 :网站真正意义上的源代码,存放hexo项目
公开的 github pages 仓库 :将只会存储源代码生成后的静态页面
这对密钥将使得 website仓库,能够访问到 github pages 仓库。
在本地电脑任意路径执行命令(你需要git环境):
1 | ssh-keygen -f github-deploy-key |
当前目录下会有 github-deploy-key
和 github-deploy-key.pub
两个文件。
配置website仓库
复制 本地刚生成的其中一个密钥github-deploy-key
文件的内容,在 website 仓库 Settings -> Secrets -> Add a new secret 页面上添加。
Name
输入框填写 HEXO_DEPLOY_PRI
。Value
输入框填写 github-deploy-key
文件内容。配置github pages仓库
复制 本地刚生成的其中一个密钥 github-deploy-key.pub
文件内容,在 github pages 仓库 Settings -> Deploy keys -> Add deploy key 页面上添加。
Title
输入框填写 HEXO_DEPLOY_PUB
。Key
输入框填写 github-deploy-key.pub
文件内容。来到 website 仓库,点击Action标签,点击页面上的 New workflow
-> set up a workflow yourself
,复制以下内容
1 | # 文件路径 .github/workflows/autoDeploy.yml |
注意根据其中的注释,有的参数改为你的相关参数。
其实这个配置文件就是告诉Github,我监测当前仓库的哪个分支变动,然后将会推送给哪个仓库的哪个分支,这个过程中我要用什么样的机器,在这个机器上执行哪些指令。
完成以上过后保存即可。
建议此时,本地在 website目录下 执行 git pull,拉取下最新代码。以后只要你在本地,push代码到website仓库,那么Github Action都会执行配置文件里的命令自动帮你部署至 github pages仓库。
自然,你在Github网页上直接新增/修改 website仓库的任何内容,只要一commit,也都会自动执行 Github Action。
ps:该配置文件,我找了好久,自己调试了很多次,做了一些修改,才运行成功,如果你遇到了什么问题,可在下方评论区留言。
因为hexo更新到了v1.9.6,新增了最近更新功能,但是CI场景下,hexo的最近更新时间发生错误,所以需要调整你的Github Action文件,上面的文件内容已做更改,下面摘录出来,主要是新增了以下内容解决文章更新时间问题:
1 | # 第一部份 |
ps:如果无法解决,请尝试google/百度搜索:“CI hexo 更新时间错误”,有很多案例可供你参考