经过Hexo
搭建的我的博客,虽然很强大、很方便,输入hexo clean&&hexo g -d
就能快速生成静态页面并部署访问。但Hexo
生成的是静态页面,无后端,这些工做都是在本地的电脑上操做的,若是更换电脑了,还须要在 github 上冲下拉取源代码,从新搭建环境再部署。若电脑不在身边想要随时编辑文章,就有点困难了。另外,每次在本机部署完,还要将源代码push
到仓库。node
这样操做显然是有些繁琐的。好在Github Actions
提供了解决方案,能够为仓库添加自动化的操做,将Hexo
博客源代码(不是生成的public
文件夹,是整个项目代码)放在 Github 上,编写Github Actions
的工做流程后,每次只需将本地push
到Github
,Github Actions
会帮咱们自动完成全部的部署工做。git
个人博客是部署到阿里云OSS
,支持 CDN 加速,全站开启HTTPS
访问,关键是费用超级低!github
OSS
中建立Bucket
,并配置为静态页面托管Bucket
的AccessKeyId
和AccessKeySecret
,配置进 Github 仓库里Github Actions
工做流程push
命令时,Github Actions
开始自动部署这个就不用说了吧,在 Github 上建立个私有仓库,将本地的 hexo 博客项目源代码上传上去。npm
另外说一点,我删除了.gitignore
文件,将项目的所有文件都上传到仓库了(包括node_modules
等等),这样每次Github Actions
每次在部署时,不用从新下在所需的依赖包了,可能速度会快一点吧(我也不知道会不会快一点)。可是第一次 Push 时,所需的时间很长,自行考虑要不要这样作。gulp
Bucket
在阿里云OSS
中建立Bucket
,注意建立的时候,读写权限
必定要改成公共读
。ubuntu
建立完成后,在基础设置
中,找到静态页面
,做以下配置:后端
随后能够配置该Bucket
访问的域名,配置 CDN 加速,并上传HTTPS 证书
。点击传输管理
:bash
AccessKey
将鼠标放到阿里云页面右上角的头像,点击AccessKey
管理,获取AccessKeyId
和AccessKeySecret
,推荐使用子用户AccessKey
。markdown
由于AccessKey
权限很高,直接将其暴露在代码中很是危险,因此将其配置到 Github 仓库的Secrets
中,至关于做为常量
使用。hexo
在存储 Hexo 源代码的仓库中点击Settings
,找到Secrets
,添加两项。名称为KEY
和SECRET
,值分别为AccessKeyId
和AccessKeySecret
。
在存储 Hexo 源代码的仓库中点击Actions
,点击set up a workflow yourself
:
将下面全部代码复制到代码区,并根据注释稍做修改:
# workflow name
name: Hexo Blog CI
# 在main分支上有push命令时触发该流程
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository master branch
uses: actions/checkout@master
- name: Setup Node.js 10.x
uses: actions/setup-node@master
with:
node-version: '10.x'
- name: Setup Hexo Dependencies
run: | # npm install # 若没有上传依赖包,则把这行的注释解除 npm install -g hexo-cli hexo clean hexo generate gulp # 我安装了压缩静态文件的插件,若没有安装,将这行删除 - name: setup aliyun oss
uses: manyuanrong/setup-ossutil@master
with:
endpoint: oss-cn-hangzhou.aliyuncs.com
access-key-id: ${{ secrets.KEY }} # 刚刚配置过的AccessKeyId
access-key-secret: ${{ secrets.SECRET }} # 刚刚配置过的AccessKeySecret
- name: cp files to aliyun
run: ossutil cp -rf public oss://xxxxx/ # 将xxxxx改成建立的Bucket名称,-rf表示覆盖
复制代码
完成后点击Start commit
按钮。
随后Github Actions
便开始第一次工做,出现绿色勾勾
则表示部署成功!快打开域名查看吧~
由于刚刚在远程仓库建立了main.yml
,能够先在本地执行git pull
,同步远程最新的文件,再进行push
。
完成部署后,咱们就能够在脱离本地项目,在远程仓库发布、修改文章啦,即便电脑不在身边也不怕!
能够借助[HexoPlusPlus]实现一个相似后台的页面,在这上面发布新文章、修改文章等操做。
☑ 固然了,也能够直接在 Github 仓库中,管理文章。
若是电脑在身边,我仍是习惯在本地管理博客,再push
,虽然不用本身输入hexo clean&&hexo g -d
,可是要本身输入git add .
、git commit -m 'xxx'
、git push
,仍是太麻烦了。
由于实在太懒,写了一个.BAT
脚本文件,放在项目中。
@echo off
git pull
git add .
git commit -m 'WIN10'
git push
复制代码
这样我在本地修改完后,只需双击运行该脚本便可,自动 push 到仓库,仓库又自动完成部署!