最近有开发一个Hexo的博客主题,所以就去研究了一下如何用Github Actions进行持续集成来简化开发的流程

首先使用hexo init生成一个博客,安装一下 hexo-deployer-git 的插件

yarn add hexo-deployer-git

接下来,创建 ./.github/workflows/deploy.yml

name: CI
run-name: '🚀 部署 ${{ github.actor }} 的 Commit '
on:
  push:
    branches:
      - main

env:
  GIT_USER: <你的Github用户名>
  GIT_EMAIL: <你的Github邮箱>

jobs:
  build:
    name: ℹ️ 在 Node.js ${{ matrix.node_version }} 和 ${{ matrix.os }} 上进行构建
    runs-on: ubuntu-latest
    strategy:
      matrix:
        os: [ubuntu-latest]
        node_version: [16.x]

    steps:
      - name: 📝 设定分支
        uses: actions/checkout@v3
      # 当然你也可以把主题直接放在themes文件夹里,但是这样就得手动更新主题了
      - name: 📝 设定主题的分支
        uses: actions/checkout@v3
        with:
          repository: EduarteXD/hexo-theme-squirrelhole
          ref: main
          path: themes/hexo-theme-squirrelhole

      - name: ℹ️ 使用 Node.js ${{ matrix.node_version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node_version }}

      - name: ⚙️ 初始化构建环境
        env:
          HEXO_DEPLOY_PRI: ${{ secrets.HEXO }}
        run: |
          sudo timedatectl set-timezone "Asia/Shanghai"
          mkdir -p ~/.ssh/
          echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan github.com >> ~/.ssh/known_hosts
          git config --global user.name $GIT_USER
          git config --global user.email $GIT_EMAIL
          cp _config.theme.yml themes/hexo-theme-squirrelhole/_config.yml
      - name: ⚙️ 安装依赖
        run: |
          npm install
      - name: ✅ 部署
        run: |
          npm run deploy

创建 _config.theme.yml 作为主题的配置文件,这要按照你选择的主题作相应修改,不详细说了,每个主题都应该有提供它的模板的

编辑 _config.yml ,找到deploy小节(没有则加上),修改为

# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  type: git
  repo: git@github.com:<你的Github用户名>/<你的Github Pages仓库名称>.git
  branch: main

再将 theme 小节改成你选择的主题

在 ./source 目录中新建CNAME 文件,写上你的Github Pages的域名

然后将你刚生成的博客推送到提前建立好的Github仓库里,点开Actions,应该就可以看到你刚刚配置的Action已经在运行了,但由于我们还没有配置好权限,任务很快便会失败

接下来,打开你的Terminal,使用

# Windows可能得改一下保存目录
ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/Github

生成Github和Github.pub两个文件,分别是私钥和公钥

打开你的Pages仓库,点击Settings->Deploy keys,点击Add deploy key按钮,将刚刚生成的Github.pub公钥文件粘贴进去,勾选Allow write access后,点击Add key保存

回到博客的仓库,点击Settings->Secrets->Actions,点击 New repository secret将你的Github私钥粘贴进去,命名为HEXO(即上面env段中设置的名字)

env: HEXO_DEPLOY_PRI: ${{ secrets.HEXO }}

之后在重新运行Action,应该就可以成功部署了

发表回复

您的电子邮箱地址不会被公开。