banner
9527DHX

9527's xLog

无声无色的 X 空间 同步博客内容 | 内含限定博文 | 高可用性
github
twitter_id

使用 Github Actions 和 Netlify/Vercel 实现自动部署 Hexo 博客

以下代码修改自 Hexo 官方文档:在 GitHub Pages 上部署 Hexo,本教程需要结合上述或其他教程使用。
使用前,请先在仓库中建立 .github/workflows/xxx.yml,名字你喜欢。

这个工作流文件主要实现了以下流程:
用户在本地修改 Hexo 内的文章,将更改同步到 Github,触发 Github Actions,根据 .github/workflows/xxx.yml 生成新的静态文件,并将文件更新到同仓库内的 gh-pages 分支(可自定义),而 Netlify/Vercel 则可通过预先的设置拉取 gh-pages 分支并直接进行网站的部署。

相比其他方式,本方法将构建的过程搬到了 Github Actions 上进行。
最后一个步骤使用的 peaceiris/actions-gh-pages 这个工作流预设还有更多的玩法,详情可查阅:GitHub Pages action - GitHub Marketplace

name: Build and Deploy # 可自定义工作流的名称

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          submodules: recursive
          
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Cache NPM dependencies
        uses: actions/cache@v4
        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

      - name: Upload Pages artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./public # 可自定义Hexo输出的目录

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public # 可自定义Hexo输出的目录
          publish_branch: gh-pages # 可自定义输出的分支
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。