hexo博客工作流CI(一键部署的快乐)

在日常写博客的过程中我常常使用CI部署,一开始我是使用Jenkins,后来觉得很丑且经常拉库失败(设置的cron是半小时拉取一次,然而常常4-5小时才能更新)
就转向了阿里的工作流,好看很多且界面操作也简单了许多,缺点就是个人使用实在是没必要,企业的话用起来还是很爽的。
再后来看到店长的文章以后就开始使用Github Action,具体可以去看这篇文章
Github Action 优点
- 可以多域名多站点部署
- 不会出现从服务器去连接github连接不上的情况
- 可以一键多处全部部署完成✅
- 不再需要使用繁杂的前置命令
hexo clean
hexo bangumi -u #bilibili番剧更新
hexo generate
hexo algolia
gulp
比如我自己是在vercel, netlify, 服务器多吉云加速,三处部署。
大大提高可用性与速度。
工作流
在这里分享一下我的工作流,平时写完文章以后,配合vscode左侧的叉子,填写提交信息后,点击提交,立即就可以提交至源码仓库
通过源码仓库的github action推送至服务器与github page的仓库,vercel
与netlify
会自行拉取github page的仓库的更新,进而实现所有线路更新。
并且使用了店长分享的全站提交至npm,并排除提交html文件
大大减小npm包体积大小,具体可以去看这篇文章npm图床使用。
这使我可以随时使用静态资源文件(如js,css,img等),我只需修改package.json
的版本即可实现资源更新,而丰富的npm镜像又让我的站点速度大大提升,极大的便利性使我得到了极其舒适的体验。
以下是该工作流部分代码,注意该工作流已解决使用CI更新时,hexo更新时间不一致的问题。
autodeploy.yml
name: 自动部署
# 当有改动推送到master分支时,启动Action
on:
push:
branches:
- master
#2020年10月后github新建仓库默认分支改为main,注意更改
release:
types:
- published
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 检查分支
uses: actions/checkout@v2
with:
ref: master
fetch-depth: 0
- name: Sync local file timestamps
run: |
git ls-files -z | while read -d '' path; do touch -d $(git log -1 --format="@%ct" "$path") "$path"; done
- name: 安装 Node
uses: actions/setup-node@v1
with:
node-version: "16.x"
- name: 安装 Hexo
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g
- name: 缓存 Hexo
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: 安装依赖
if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
run: |
npm install gulp-cli -g #全局安装gulp
npm install --save
- name: 生成静态文件
run: |
hexo clean
hexo bangumi -u #bilibili番剧更新
hexo generate
hexo algolia
gulp
- name: Deploy to Server
uses: easingthemes/ssh-deploy@v2
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-rltgoDzvO --delete"
EXCLUDE: ".well-known"
SOURCE: "./public/*"
REMOTE_HOST: ${{ secrets.SERVER_IP }}
REMOTE_PORT: ${{ secrets.REMOTE_PORT }}
REMOTE_USER: "你的用户名"
TARGET: "你的服务器绝对路径"
- name: 推送百度必应url
run: |
hexo deploy
- name: 部署到Github
run: |
cd ./public
git init
git config --global user.name "anzhiyu-c"
git config --global user.email "userEmail@gmail.com"
git add .
git commit -m '${{ github.event.head_commit.message }}'
git push --force --all https://xxxxxxToken@github.com/anzhiyu-c/anzhiyu-c.github.io
npmignore.js
hexo.extend.generator.register("npmignore", function (locals) {
// Object
return {
path: "/.npmignore",
data: `**/*.html
.github/
download/
ads.txt
CNAME
robots.txt
`,
};
});
npmpublish.js
/*
* @Description: npm
* @Author: 安知鱼
* @Email: 2268025923@qq.com
* @Date: 2022-02-22 12:13:18
* @LastEditTime: 2022-08-27 12:29:41
* @LastEditors: 安知鱼
*/
hexo.extend.generator.register('npmpush', function (locals) {
// Object
return {
path: '/.github/workflows/autopublish.yml',
data:
`name: Node.js Package
# 监测分支,2020年10月后github新建仓库默认分支改为main,记得更改
on:
push:
branches:
- master
jobs:
publish-npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: "12.x"
registry-url: https://registry.npmjs.org/
- run: npm publish
env:
NODE_AUTH_TOKEN: ` + '${{secrets.npm_token}}',
}
})
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 安知鱼!
评论
匿名评论
你无需删除空行,直接评论以获取最佳展示效果