我的 Hexo 原始文件是按照
使用hexo,如果换了电脑怎么更新博客? - CrazyMilk的回答 - 知乎 https://www.zhihu.com/question/21193762/answer/79109280
这种方式来进行备份的。因为更换了新的电脑,把仓库 clone 下来的时候因为网络的问题 npm install 总是失败,并且在本地写文章然后 push 然后再执行Hexo 相关的指令相对来说比较复杂。所以就想到把 Hexo 的生成和部署让某些东西自动完成,在本地只需要负责写作就好。
使用 GitHub Actions 在 push 的时候自动生成和部署hexo静态页面
首先要为仓库生成一个 Deploy Key
1 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" |
然后在这一步输入这对 Key 的文件名,如果直接回车会覆盖掉自己的 Key
1 | Generating public/private rsa key pair. |
接下来去仓库的setting里面
![](Screenshot from 2019-12-25 11-55-11.png)
在 Deploy keys 这里把刚刚生成的密钥对中的公钥添加进去
然后在 Secrets 里把刚刚生成的密钥对中的私钥添加进去,名字可以随意取,在 GitHub Actions 中以 $引用
![Screenshot from 2019-12-25 11-55-21.png](Screenshot from 2019-12-25 11-55-21.png)
创建一个 GitHub Actions WorkFlow
在目录下创建 .github/workflow/your-action-name.yml
1 | name: deploy hexo |
具体的用法可以查看官方文档
1 | on: |
表示在 hexo 分支 push 触发。jobs 表示执行任务,一个 jobs 可以包含多个 steps
1 | - name: checkout |
使用 checkout 获取 hexo 分支的源码 ,并设置 node 环境
1 | - name: setup ssh ang git env |
然后就很常规的写入 ssh key 然后安装相应的东西,最后调用 hexo 的命令进行生成和部署.
查看执行情况
可以去项目仓库的 actions, 查看每个 workflow 的执行情况.
---------------------------
使用Github Actions对Hexo博客自动部署
前言
很多同学和我一样也在用Hexo搭建自己的博客,通常最后发布的操作是 hexo g
生成静态网页,然后 hexo d
将public目录推送到github、coding、gitee等平台。
但是很多时候我们都想偷个懒,只管写博客,写完后将git 一 push,后面的生成部署工作让程序自动完成,github actions为我们提供了这个便利。
操作
开启actions功能
在我们博客的github仓库顶部可以找到 Actions 菜单,在里面我们可以搜索、选择各种预备好的actions模板,也可以点击 Set up a workflow yourself
按钮创建自己的工作流。
这里我的部署工作稍微复杂点,所以选择自己编写工作流配置文件。
在手动编写面板的右侧可以搜索别人写好的各种actions,方便我们使用这些actions,配置一些基本的工作.
当然,也可以选择在 hexo 根目录下创建 .github/workflows
目录,并在里面编写github actions配置文件的方法来开启这个功能。
基本部署
首先我们需要将git库的代码检出到github actions提供的容器中,这里使用github提供的checkout步骤
因为hexo需要依赖node.js环境,所以我们还要安装node环境
有了node环境后我们需要安装各种依赖包
依赖装好后就可以执行命令生成静态网站了
最后一步就是将生成的public目录推到github仓库的page分支上,这样github pages就会将最新的网站自动部署了
增加更多功能
在github actions工作流中,还可以完成更多更复杂的操作,里面可以直接执行shell脚本,可以使用docker镜像提供的特殊环境,大家可以根据自己需求进行修改。
完整配置文件
我的配置文件是适合我自己博客用的,里面还包括了网页、js、css、图片的压缩,cdn链接的替换,自动打release方便绕过jsDelivr的缓存。
在github actions将page专用分支更新后,zeit\netlify\github pages三个平台都会自动将最新的内容部署上,这样我就只需要关注博客内容,后续操作都不需要管了.
-----------
利用GitHub Actions实现Blog自动部署与发布
GitHub Actions是GitHub官方推出的持续集成服务。通过GitHub Actions可以为你的项目提供持续构建,测试,程序打包和部署一条龙服务。根据官方资料介绍,GitHub Actions为用户提供虚拟服务器环境,硬件规格为:
- 2-core CPU
- 7GB RAM
- 14GB SSD
支持的操作系统包括:
- Windows Server 2019
- Ubuntu 18.04
- Ubuntu 16.04
- macOS X Catalina 10.15
正好,我基于Hexo的blog仓库也是放在GitHub,这样的虚拟环境配置用来持续构建和自动部署blog再合适不过了,还可以避免每次本地部署重复输入命令和CPU风扇狂转的困扰。
配置过程
环境介绍
我的blog是基于Hexo的,所有的Markdown文件托管在GitHub的私有仓库中,另外,构建生成的静态页面是托管在另外一台阿里云国际版的VPS主机上。
利用GitHub Actions需要达成的目标就是:每次提交或者更改新的blog文章,触发GitHub Actions进行构建,构建出静态页面后,直接发布到VPS上。
生成部署专用SSH密钥对
首先需要生成一对新的SSH密钥,注意这对密钥不能有密码保护,因为整个构建过程应该是自动的,有密码保护的密钥对会中断构建过程。
将这对密钥的public key添加到托管blog的VPS对应账户的~/.ssh/authorized_keys
中。然后在Blog仓库的Settings->Secrets
里添加刚刚生成的私钥,名称为BLOG_DEPLOY_KEY
。这样做的目地是保护私钥不被泄漏,这样在GitHub Actions中不用以明文的方式填入私钥。
创建GitHub Actions
以我的blog为例,在blog仓库的Actions选项卡下点击新建workflow,填入如下配置:
1 | name: HEXO CI |
构建过程中有几个要点:
- 构建环境基于Ubuntu,并使用node 10.x
- 构建中用到了
webfactory/ssh-agent
用来缓存部署blog所用到的私钥 - 每次构建触发的时候,先初始化基于node 10.x的环境
- 扫描目标VPS的公钥,并保存到虚拟环境的
~/.ssh/known_hosts
中,这样可以避免部署时候要求用户输入确认的步骤。 - 构建前先初始化好hexo的环境,并安装所有依赖
- 最后,进行静态页面的构建并直接发布
一切准备就绪,为了测试blog的自动构建和发布,可以尝试新建或者修改一篇blog post,然后在仓库的Actions中,就能看到自动触发的构建流程了。
from http://web.archive.org/web/20210712082002/https://xiaozhou.net/blog-auto-deployment-via-github-actions-2020-06-08.html
-------------------
使用SFTP将hexo静态网页部署到个人服
务器记录一下使用SFTP将hexo生成的静态网页推送到个人服务器
由于WordPress太卡了,我的小服务器带不动了,于是转用hexo,不得不说hexo真的太好用了
于是在此记录一下
使用SFtp将hexo博客部署到个人服务器上
- 首先服务器需要开启SFtp服务,不懂得自行百度
- 在使用
hexo g
生成静态网页 - 使用
hexo d
将静态网页推送到服务器
在使用sftp推送前需要修改配置文件如下:
在_config.yml
文件中添加下面配置:
1 | deploy: |
同时需要安装两个sftp部署插件
1 | npm install hexo-deployer-ftpsync --save |
SFtp:
1 | npm install hexo-deployer-sftp --save |
No comments:
Post a Comment