Github Action实现HEXO自动部署
前言
自动化部署是什么意思?即把HEXO博客的源代码上传到GitHub仓库,当该仓库中的代码发生变动时,自动通过安装一系列环境和依赖,生成HTML文件与GitHub pages仓库。即无需在本地使用指令hexo clean,hexo g,hexo d;这种项目持续集成的方式有很多种,本文选择GitHub action,如选择其他方式可自行百度;
优点:
- 随时随地增加或者修改博文,我只需登录GitHub存放源代码的仓库,在里面新建博客,编写播客即可,无需由于电脑上没有安装node.js,git等环境而发愁;
- 如果万一本地文件丢失,我也可以通过博客源代码仓库,git clone一份到本地
创建HEXO源代码仓库
在GitHub上新建一个仓库,仓库名任意,类型选择private,防止上篇文章中获取的GitHub令牌暴露;
本地仓库添加远程库
在根目录下即BLOG文件夹下,右键打开Git Bash Here,输入以下指令:
1 | git init |
将私有仓库地址换成上文创建的HEXO源代码仓库地址即可,在提交的过程中,会要求输入GitHub用户名与密码,输入即可。上述步骤完成后,刷新私有仓库,即可看见本地仓库的一些文件被上传至私有仓库,并不是全部文件都上传,在根目录下有一个.gitignore文件,里面防止了无需上传到私有仓库的文件,保持该文件默认即可,无需修改
配置GitHub Action实现自动化部署
新建workflow
在新建的HEXO源代码私有仓库中,点击Action按钮,在提示的一行信息中有这样一行字set up a workflow yourself,点击这行文字;
配置Action
将自动生成的main.yml中的文件替换成如下代码:
1 | name: Deploy # 部署 |
部署至GitHub-page
在git clone处换成自己在上篇文章中,新建的仓库(用户名.github.io)这个仓库的地址
git config —global user.name “GitHub用户名”与git config —global user.email “GitHub邮箱”,也替换成自己的
部署至服务器
在保存源码的仓库,settings-Secrets-Actions中New repository secret添加四个字段与对应的值;首先是字段ACCESS_TOKEN,值为:首先去你服务器的
~/.ssh
目录,此时目录下应该有4个文件,分别是authorized_keys
、id_rsa
、id_rsa.pub
、known_hosts
。如果没有id_rsa
和id_rsa.pub
的,可以使用ssh-keygen
来生成,这两个文件就是安装Git时需要生成的私钥和公钥。这个时候你看看authorized_keys
里面有没有内容,如果有内容说明你之前设置过,ACCESS_TOKEN
的值就是authorized_keys
所对应的私钥。如果没有内容的话,你可以直接设置为公钥id_rsa.pub
的内容,如执行命令cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
,此时就会把id_rsa.pub
的内容写入authorized_keys
中,然后把ACCESS_TOKEN
的值设置为私钥id_rsa
中的内容;其次是设置字段REMOTE_HOST,REMOTE_USER,TARGET,值分别是服务器IP地址,用户名(我这里直接使用的root),目标路径(我这里是/www/wwwroot/blog.zhouenpei0523.top)
部署至服务器报错,使用命令查看要同步的文件或文件夹的所属,使用chown命令修改所属用户以及所属组,修改同步的文件夹权限
1
2chown root:root blog.zhouenpei0523.top/
sudo chmod -R 777 blog.zhouenpei0523.top/
设置完成后,点击右上角的start commit
查看状态
点击Action按钮,即可查看部署状态,成功后,打开用户名.github.io这个网址即可发现网站部署成功
HOW TO USE
日后如何使用,打开根目录即BLOG目录,右键Git Bash Here,输入如下指令即可:
1 | git add . |