Github Actions自动化部署 hexo博客

2022-03-09 14:37:41 浏览数 (1)

1.背景

利用 GitHub Actions 实现博客自动发布,将静态博客页面部署到多个服务器上,比如 GitHub Pages、Gitee pages 、云服务器上。本文介绍使用 GitHub Actions 实现将 Hexo 博客自动编译并发布到 GitHub Pages 上。

2.生成 SSH 秘钥

生成秘钥用于仓库间的推送:

代码语言:javascript复制
ssh-keygen -f hexo-deploy-key -t rsa -C "1181012791@qq.com"

一直回车,以上命令会在当前路径下生成公钥和私钥并且命名为 hexo-deploy-key:秘钥 hexo-deploy-key 和公钥 hexo-deploy-key.pub

3.准备 2 个 github 仓库

博客源文件库:https://github.com/Leader755/blog-master.git 页面文件仓库:https://github.com/Leader755/leader755.github.io.git

4.为 github 仓库配置秘钥

目的:源码仓库代码推送到 githubPage 仓库

  • 页面文件仓库(即 leader755.github.io):
    • **Settings > Deploy keys** 中添加 Deploy key,内容为 **hexo-deploy-key.pub** 文件内容,同时勾选 **Allow write access** 选项。
  • 博客源文件库:
    • **Settings > Secrets** 中添加一个 Secret,名称为 **DEPLOY_KEY**,内容为 **hexo-deploy-key** 文件内容。后续在 Workflow 中通过名称 DEPLOY_KEY 使用这个密钥。

5.Workflow 配置

在博客源文件库中新建文件 .github/workflows/deploy.yml,配置内容如下:

代码语言:javascript复制
# workflow name
name: actions single

# 当有 push 到仓库和外部触发的时候就运行
on: [push, repository_dispatch]

# YQ_TOKEN
# YUQUE_GIT_HEXO
jobs:
  deploy:
    name: Deploy Hexo Public To Pages
    runs-on: ubuntu-latest
    env:
      TZ: Asia/Shanghai

    steps:
      # check it to your workflow can access it
      # from: https://github.com/actions/checkout
      - name: Checkout Repository master branch
        uses: actions/checkout@master

      # from: https://github.com/actions/setup-node
      - name: Setup Node.js 10.x
        uses: actions/setup-node@master
        with:
          node-version: "10.x"

      #安装依赖(包含yuque-hexo,此处无需安装) from https://github.com/x-cold/yuque-hexo
      - name: Install dependencies
        run: |
          npm install hexo-cli -g
          npm install yuque-hexo -g
          npm install

      # 此处请勿使用hexo clean&&yuque-hexo(重新构建时无需此命令行)同步语雀文章
      - name: yuque-hexo sync
        env:
          YUQUE_TOKEN: ${{ secrets.YUQUE_TOKEN_HEXO_SYNC_GITHUB_ONLINE}} # from: 这里是YUQUE_TOKEN: $不能随意改
        run: |
          hexo clean
          yuque-hexo sync || yuque-hexo sync || yuque-hexo sync  # 用 || 来重试的次数

      # 生成可访问的文档
      - name: hexo generate
        run: |
          hexo g

      # 生成pages且推送到文件仓库 from https://github.com/peaceiris/actions-gh-pages
      - name: Deploy hexo to Github pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          deploy_key: ${{ secrets.YUQUE_GIT_HEXO }} # 此处为 hexo-deploy-key
          external_repository: Leader755/leader755.github.io
          publish_branch: master
          publish_dir: ./public
          commit_message: deploy githubPage
          # commit_message: ${{ github.event.head_commit.message }}

6.效果

0 人点赞