基于 Github Actions 自动部署 Hexo 博客

前言前不久使用了Hexo搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要hexodeploy然后打包、上传、解压和刷新CDN,非常麻烦。我的服务器配置也不高2C2G无法安装Jenkins

前言

前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy 然后打包、上传、解压和刷新 CDN,非常麻烦。我的服务器配置也不高 2C2G 无法安装 Jenkins,所以采用了比较简单和免费的 Github Actions 来进行打包、上传。然后我自己写了一个 Agent 来做解压和刷新 CDN 的工作,整套流程完全自动化。

如果 Hexo 博客是放在 OSS 存储里的,比如腾讯云 COS,可以不使用 Agent,直接通过 Github Actions 上传。

基于 Github Actions 自动部署 Hexo 博客

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.0wget https://github.com/stulzq/hexo-deploy-agent/releases/download/$hexo_version/hexo_deploy_agent_$(agent_version)_linux_amd64.tar.gztar -xzvf hexo_deploy_agent_$(agent_version)_linux_amd64.tar.gzcd hexo_deploy_agent_$(agent_version)_linux_amd64# 修改配置 conf/config.ymlchmod +x hexo_deploy_agent./hexo_deploy_agent

Docker

mkdir -p /data/hexo-deploy-agent/confcurl https://raw.githubusercontent.com/stulzq/hexo-deploy-agent/main/conf/config.yml -o /data/hexo-deploy-agent/config.yml# 修改配置 /data/hexo-deploy-agent/config.ymldocker 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/workflowscd .github/workflows

新建配置文件

touch deploy.yml

添加配置

name: Deployon:  push:    branches:      - masterjobs:  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

基于 Github Actions 自动部署 Hexo 博客

进入项目仓库的 Settings -> Secrets -> Actions 新建一个 Secret:

  • 名称: UPLOAD_URL
  • 值:http://<agentIp>:<agentPort>/deploy/upload 示例:http://127.0.0.1:9190/deploy/upload

可以直接使用国内云服务器,POST 部署包速度也是很快的

配置完成!

其他项目

  • hexo-statistics Hexo 博客统计
本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
开发者

CRM汇客 牛刀小试 5个BUG修复

2025-5-28 7:09:08

开发者

学编程前后端该怎么选?

2025-5-28 7:11:42

搜索