基于 Github Actions 自动部署 Hexo 博客
2022/7/7 23:21:52
本文主要是介绍基于 Github Actions 自动部署 Hexo 博客,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy
然后打包、上传、解压和刷新 CDN,非常麻烦。我的服务器配置也不高 2C2G 无法安装 Jenkins,所以采用了比较简单和免费的 Github Actions 来进行打包、上传。然后我自己写了一个 Agent 来做解压和刷新 CDN 的工作,整套流程完全自动化。
如果 Hexo 博客是放在 OSS 存储里的,比如腾讯云 COS,可以不使用 Agent,直接通过 Github Actions 上传。
Hexo Deploy Agent
Hexo 部署 Agent,基于 Github Actions 可实现完全自动化部署 Hexo 博客,每次提交都会自动打包、部署、更新和刷新 CDN 缓存。
特性:
-
Golang 编写,资源占用低,能适应低配服务器
-
支持 Github Action 或者 Jenkins 等自动化工具
-
通过 CURL 上传部署包
-
解压、动态更新网站文件
-
目录级别刷新 CDN(目前仅支持腾讯云)
-
支持部署消息推送(目前仅支持钉钉)
Demo: https://xcmaster.com/
开源地址:https://github.com/stulzq/hexo-deploy-agent
刷新 CDN 的目的:因为 hexo 是以生成静态文件部署的,CDN 默认是全部缓存了的,如果有变更需要主动刷新,一般采用目录刷新的方式。
快速开始
部署 Agent
部署 Agent 需要虚拟机或者轻量应用服务器,支持二进制和 Docker 方式运行
二进制
export agent_version=v0.2.0 wget https://github.com/stulzq/hexo-deploy-agent/releases/download/$hexo_version/hexo_deploy_agent_$(agent_version)_linux_amd64.tar.gz tar -xzvf hexo_deploy_agent_$(agent_version)_linux_amd64.tar.gz cd hexo_deploy_agent_$(agent_version)_linux_amd64 # 修改配置 conf/config.yml chmod +x hexo_deploy_agent ./hexo_deploy_agent
Docker
mkdir -p /data/hexo-deploy-agent/conf curl https://raw.githubusercontent.com/stulzq/hexo-deploy-agent/main/conf/config.yml -o /data/hexo-deploy-agent/config.yml # 修改配置 /data/hexo-deploy-agent/config.yml docker run --name hexo-deploy-agent \ -v /data/hexo-deploy-agent/conf:/app/conf \ -v /data/hexo-deploy-agent/logs:/app/logs \ -d stulzq/hexo-deploy-agent:v0.2.0
修改配置
log: level: Debug # 日志级别 deploy: blog_dir: /wwwroot/blog # 网站根目录 cdn: enable: false # 是否启用腾讯云 cdn 目录刷新 https://console.cloud.tencent.com/cdn/refresh accessKey: # 腾讯云 ak & sk https://console.cloud.tencent.com/cam/capi secretKey: flushType: flush refreshPaths: - https://xcmaster.com/ # 刷新路径 dingtalk: enable: false # 是否发送钉钉机器人消息 url: # 钉钉机器人 url
Github Actions 配置
在你的博客根目录下新建文件夹
mkdir -p .github/workflows cd .github/workflows
新建配置文件
touch deploy.yml
添加配置
name: Deploy on: push: branches: - master jobs: build: name: build and package runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: 16 registry-url: https://registry.npmjs.org/ cache: 'npm' - name: Install dependencies run: npm ci - name: Deploy run: npm run deploy - name: Package run: | mkdir /home/runner/work/release cd public zip -r /home/runner/work/release/site.zip ./* cd ../ - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: site path: /home/runner/work/release - name: Clean run: | rm -rf public rm -rf /home/runner/work/release publish: name: publish blog needs: build runs-on: ubuntu-latest steps: - name: Download build artifacts uses: actions/download-artifact@v1 with: name: site - name: upload env: UPLOAD_URL: ${{ secrets.UPLOAD_URL }} run: curl -X POST -F "f=@site/site.zip" $UPLOAD_URL
该配置依赖 Github Action Secret
进入项目仓库的 Settings -> Secrets -> Actions
新建一个 Secret:
- 名称:
UPLOAD_URL
- 值:
http://<agentIp>:<agentPort>/deploy/upload
示例:http://127.0.0.1:9190/deploy/upload
可以直接使用国内云服务器,POST 部署包速度也是很快的
配置完成!
其他项目
- hexo-statistics Hexo 博客统计
这篇关于基于 Github Actions 自动部署 Hexo 博客的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!