其他分享
首页 > 其他分享> > 基于 Github Actions 自动部署 Hexo 博客

基于 Github Actions 自动部署 Hexo 博客

作者:互联网

前言

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

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

image-20220707130528538

Hexo Deploy Agent

Hexo 部署 Agent,基于 Github Actions 可实现完全自动化部署 Hexo 博客,每次提交都会自动打包、部署、更新和刷新 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:

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

配置完成!

其他项目

标签:Github,Hexo,hexo,deploy,agent,Actions,https,name
来源: https://www.cnblogs.com/stulzq/p/16454312.html