使用GithubAction自动编译部署博客
最近准备考试,更新有点慢哈
起因
我管理3个博客站,三种风格,太累了,而且用的是虚拟机编译并且push,效率确实很低,就想了下,要不利用GithubAction来进行远程编译,并且自动部署到网站服务器。
于是就有了这期。
实现过程
前置要求
- Github可以使用Action的账号(基本你不作死就不会被BAN)
- HEXO程序(默认你已经完成了配置,并且在本地已经可以运行)
Github配置
创建仓库
首先,你需要前往Github,新建一个仓库,如下面两图
这里注意,最好选择私人仓库
创建完毕后,继续步骤
将本地代码PUSH到github
刚才步骤完成后,你应该能看到这个
我们找到我们的的程序根目录,在目录处打开终端
按照Github上面的要求,初始化仓库并且push
倒数第二步请务必填写你自己的
最后一步可能会弹出登录授权,授权即可。
# 初始化仓库
git init
# 添加所有文件到等待上传区
git add
# 提交一次信息(-m是提交信息)
git commit -m "upload"
# 设置分支为main
git branch -M main
# 添加远程
git remote add origin <填写你自己的>
# 推送到远程
git push -u origin main
push成功后,回到github,应该能看到你的代码了
到这里,就说明配置成功了
配置GithubAction
现在就是我们的重头戏了,配置Action
配置采用yaml格式编写,默认你需要将它存放在.github/workflows
目录下
这里我们在刚才上传仓库的目录下,新建文件夹.github/workflows
,并且在目录中新建文件``buildBlog.yml`
创建完毕后我们编写文件
第一个代码块中是带有注释的,请勿直接复制使用
name: Hexo deploy #任务总名次
on: #触发器
push: #push时触发
branches:
- main #push 到main分支时触发
jobs: #工作流
install:
name: initEnv #任务名
runs-on: ubuntu-20.04 #默认使用环境,请照抄,除非你有特殊需求
steps:
- name: install hexo #步骤名
uses: actions/setup-node@v3 #这里是Action提供的插件,可以帮我们快速拥有一个nodejs环境,省的我们慢慢安装
with:
node-version: '16.14' # node版本号
- name: install hexo and them
run: | #执行命令,下面一串都是
git clone https://${{ secrets.GIT_TOKEN }}@github.com/<你的用户名>/<你自己刚才上传仓库的位置> #克隆你刚才的程序
cd <你自己刚才上传仓库的位置> #进入程序目录
npm install hexo-cli -g #安装HEXO
npm install #安装你主题带的各类依赖
hexo generate #生成HTML
pwd #测试用
- name: Deploy #步骤名2
uses: easingthemes/[email protected] #使用ssh远程部署插件
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_ACCESS_TOKEN }} #你的服务器的ssh私钥
ARGS: "-rltgoDzvO" #照抄就行,rsync的
SOURCE: "blog.70m.cc-blogbuild/public/" #上传本地目录
REMOTE_HOST: ${{ secrets.REMOTE_HOST }} #远程主机地址
REMOTE_USER: ${{ secrets.REMOTE_USER }} #登录远程主机的用户名
TARGET: ${{ secrets.TARGET }} #将文件拷贝在哪里
这个action的步骤大概如下
- 准备一个ubuntu20的环境
- 使用node插件安装nodejs环境
- 执行命令克隆你的HEXO程序(包括文章等)
- 执行命令安装HEXO主程序
- 编译你的HEXO博客
- 将内容上传到指定服务器
这里有几个细节,记得替换自己个github仓库地址,这点很重要,同时有的hexo主题需要额外安装插件记得在执行命令处安装了。
配置完毕后,请保存,但是不要上传,还需要补充一个步骤
获取GithubToken
GithubToken是github的一个机制,他是一种凭证,我们需要他来获取仓库内数据,获取方式具体如下
点击头像,选择setting
滑到最下面,选择Developer setting
点击后选择呢personal access tokens
选择new token
这里可能需要要求你输入密码或者两步验证或者密码器,授权即可
授权后,我们按照需要添加权限(看不懂就全部添加)设置有效期看个人,一直用就选不过期(不安全)
关键的就是repo权限和workflow权限,记得勾上,要是报错就加满权限。
保存好秘钥,准备后续使用。
添加机密
github的仓库大多数是开源的,但是有的配置文件需要加密,这些配置文件不希望被别人看到,因此需要你添加机密,机密是一次性的,只能在Action内被读取,一旦写入,没有任何方式可以查看了,因此安全可靠
我们现在就需要把我们的服务器密码和github Token(用于拉取私人仓库)写入到机密中,之后我们系统会自动识别${{ secrets.<变量名> }}
这类变量,自动去机密中寻找并填入
PS:这样获取到的变量,你用echo查看都看不到,都是**
我们刚才的yaml共有五个变量,分别如下
- GIT_TOKEN:刚才我们拿到的Github Token,用于拉取私人仓库
- REMOTE_HOST:远程服务器的地址(IP/域名)
- REMOTE_USER:远程服务器用户名
- SERVER_ACCESS_TOKEN:服务器ssh私钥,用于rsync上传文件到服务器
- TARGET:服务器存放文件位置,用来确定你要把文件存放到哪里
添加机密的位置如下
点击后,选中右上角新建机密,上面Name填写变量名,下面填写信息(务必变量名和我一致)
服务器秘钥/ip/用户名/部署位置,GithubToken这些信息请自行收集并填写。
上传并启用工作流
完成上面机密的填写后,就可以将我们直接的配置文件上传到Github了,上传后,Github会自动编译并且部署到你的服务器,接下来,就到使用自动化部署的快乐了
git add .
git commit -m "power on Action"
git push origin main
执行代码后,在网页端点击Action选项,就能看到你执行的工作流了
点击可以进去查看具体执行的过程
到这里,就完成全套流程的部署了,之后,你只需要写好文章,然后push上去,剩下的事情就交给Action吧。