使用Github Action实现自动部署与源码备份
前言
Github Action和Git关系密切,要使用Github Action就得熟练使用Git
hexo项目的源码是保存在电脑某个文件夹上的,在我的电脑上存放位置为G:\hexo内,如果电脑硬盘突然损坏或者想在多台电脑上实现个人博客的同步管理,就很不方便。于是就把hexo项目的源码都托管在github上,既可以当做项目源码备份,又方便在别的PC上随时拉取项目进行内容更新或者新内容发布,还可以使用Github Action实现自动部署,一举多得。
当想在别的电脑上管理hexo项目时,只需要登录github,使用git将存储hexo源码的私有仓库拉取到本地,然后在新电脑上安装git和node.js,就可以进行内容管理了。以前安装过的各种插件、依赖等,都能通过npm install自动从package.json下载,从而恢复两台电脑一样的操作环境,每次更新项目内容时,都先使用git pull来拉取最新的远端仓库,这样就能保证无论在哪台电脑上,操作的都是最新的项目内容,就能实现多设备同步、备份的功能了。
在新电脑上需要做的操作如下:
- 克隆仓库
- 将旧电脑的ssh秘钥复制到新电脑。公钥已经在github上配置好了,可以直接使用,可以通过
ssh -T git@github.com验证能否成功连接github - 安装Node.js环境(会附带安装npm)
- 安装依赖(
npm install),会把以前项目安装过插件或依赖的通过package.json安装到新电脑的node_modules文件夹下 - 配置hexo。主要是
_config.yml和_config.butterfly.yml文件,不过git pull会拉取完整的配置文件到本地,同旧电脑上的配置相同 - 创建新内容,写文章
- 生成和发布
操作
获取github token
为了确保Github Action持续部署时具备足够的权限来进行 hexo deploy 操作,需要先获取 token
打开github首页,点击右上角的头像,然后选择设置 – 开发者设置 – 个人访问令牌 – 令牌(经典) – 生成新令牌
新建仓库&设置token
- 新建仓库时一定要选择
私有仓库,因为在接下来的配置中会用到token,也只有我自己能操作这个仓库,如果token被盗用,别人可以肆意操作我的 github 仓库内容。
- 进入新建的仓库,根据下面的步骤把第一步获取到的
github token设为变量存储,方便在yml文件中直接通过名称引用token值
git操作
- 删除
G:/themes/butterfly/.git,因为主题文件夹下的.git文件夹的存在会导致其被识别成子项目,从而无法被上传到源码仓库 - 打开
G:\hexo\.gitignore,用以下内容替换掉原来的内容
1 | .DS_Store |
配置Github Action
在G:\hexo\.github下新建workflows文件夹(G:\hexo.github\workflows),再在workflows文件夹内新建autodeploy.yml,输入如下内容,所有关于分支的内容都要用main
1 | name: 自动部署hexo |
重新设置远程仓库和分支
- 在
G:\hexo下执行如下命令,git init只需要执行一次,如果之前项目已经有.git文件,要先删掉该文件再执行
1 | git init #初始化项目 |
- 可以通过
git remote -v查看远端仓库,如果忘记远端仓库地址或者名称可以查看
提交更新&发布文章
- git add . —> 将当前目录下的所有更改(新建、修改、删除的文件)添加到暂存区
- git commit -m “备注信息” —> 将暂存区的更改提交到本地仓库,并附上简短的描述
- git push origin main —> 将本地
main分支的更改推送到远端仓库,origin是默认的远端仓库名称,也可以自行更改仓库名称,和地址关联起来就行
1 | git add . |
查看部署情况
总结
后面再研究一下Github Action的工作原理和花样整活
- ssh秘钥、token与服务器的身份验证问题
- workflows工作流配置文件问题
Github Action使用的是Github的服务器(虚拟机、容器),相当于所有部署操作都要在虚拟机上先安装好部署所需要的环境和依赖,然后在虚拟机上进行部署,最后将数据同步到github pages或私有服务器(通过ssh秘钥或者token验证身份)。Github Action还能做许多其他自动化部署和测试工作,只是我目前还没有需求,不知道他还能应用在哪些场景下,当前实现的hexo源码的备份和自动化部署,每次只需要push源码到github私有仓库,就能同步实现文章发布。
Github Action还能与常用的Gitee、Vercel、Netlify结合,实现多平台同步更新,但是我没用过Vercel、Netlify,以后用到再研究,只需要修改autodeploy.yml文件即可。











