Hexo 3.5.0 迁移到 Github Action 踩坑记录


忘记写博客两年半,域名续费才想起来博客的存在哈哈哈哈,顺便吐槽下 Hexo 官方文档都不维护更新下内容坑啊

在我昨天玩游戏心血来潮又想写点东西的时候,Clone 下来久违的博客仓库,提交完文章后,发现博客完全不更新的,这个时候就发现事情并不简单 Σ(っ °Д °;)っ

HexoGithubAction-2023-05-22-23-41-06

登录 travis-ci 一看,最近一次成功的自动构建记录都是 2 年 前的事情了,上方一行红色文字提示我信用额度为负,好家伙。。。许久不见,travis-ci 的构建已经变成收费功能了。莫得法子,只能换一家白嫖了,正好 Github 也有 Github Action 是可以用于自动构建的,于是挥泪告别 travis-ci (哭了,我装的( ̄ ▽  ̄)”)

workflows

网上看了一圈教程,workflows 写法五花八门,有用 SSH key 的,有用 GitHub Token 的,最后还是决定按照官方文档来了,相关链接戳这里

HexoGithubAction-2023-05-22-23-50-33

踩坑处理

提交 .github/workflows/pages.yml 后,自动触发构建,发现 Action 报错:

Invalid workflow file: .github/workflows/pages.yml#L2

HexoGithubAction-2023-05-22-23-59-02

定睛一看,啊这…原来第一行是注释么,怎么不加 #号的,复制粘贴害人呀,改完又报错:

Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/checkout@v2, actions/setup-node@v2, actions/cache@v2

HexoGithubAction-2023-05-23-00-04-41
搜索了下报错,找到相关 issue, 看着意思是需要把文档中的 actions/checkout@v2 改成 actions/checkout@v3actions/setup-node@v2actions/cache@v2 也是同理。不过感觉以后可能还有升级…可以跳到仓库的主页看看目前最新的是哪个版本,比如 actions/checkout:

HexoGithubAction-2023-05-23-00-07-55

改好提交,改完继续报错…

npm ERR! Missing script: “build”

HexoGithubAction-2023-05-23-00-10-42

我寻思我也没改过 npm 的配置,咋就报错了。于是又在本地初始化一个新的 Hexo 仓库对比下,看下有何不同之处,对比发现 package.json 确实不一样,新版除了依赖模块还加了 scripts 部分

HexoGithubAction-2023-05-23-00-25-55

加上 scripts 部分后构建不会报错了,但是构建完成 push 到仓库后,网站全白啥也没有,查看仓库文件 html 全是 0 kb,我文章跑哪去了 ??

HexoGithubAction-2023-05-23-00-31-17

生成 html 为空

搜索一番发现,其他人也碰到了这个问题,是由于 node 版本太高了,hexo 还不支持
HexoGithubAction-2023-05-23-00-34-45

.github/workflows/pages.yml 中的 node 版本改回 12 后,再次构建,我的博客终于又回来了

.github/workflows/pages.yml

附上修改后的配置文件,方便其他有需要升级老版本 Hexo 的朋友

name: Pages

on:
  push:
    branches:
      - blog # 源码所在分支

jobs:
  pages:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v3 # 有报错的话可能需要升级到最新的脚本
      - name: Use Node.js 12.x
        uses: actions/setup-node@v3
        with:
          node-version: '12' # 改为 Hexo 所需的 node 版本
      - name: Cache NPM dependencies
        uses: actions/cache@v3
        with:
          path: node_modules
          key: ${{ runner.OS }}-npm-cache
          restore-keys: |
            ${{ runner.OS }}-npm-cache
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build # 检查 package.json 中是否有相关的 scripts
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public

参考链接

文章目录
  1. 1. workflows
  2. 2. 踩坑处理
    1. 2.1. Invalid workflow file: .github/workflows/pages.yml#L2
    2. 2.2. Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/checkout@v2, actions/setup-node@v2, actions/cache@v2
    3. 2.3. npm ERR! Missing script: “build”
    4. 2.4. 生成 html 为空
  3. 3. .github/workflows/pages.yml
  4. 4. 参考链接
| | 80.2k