将您自己的管道用于 Jekyll GitHub Pages 有哪些优点和缺点?

What are advantages and disadvantages of using your own pipeline for Jekyll GitHub Pages?

我在存储库的主分支中有一个 Jekyll 页面,并且曾经有一个 GitHub 工作流将我的 Jekyll markdown 网站转换为静态 HTML 在 static 分支中:

.github/workflows/build.yml

name: Build and deploy Jekyll site to the static branch

on:
  workflow_dispatch:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/cache@v3
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile') }}
          restore-keys: |
            ${{ runner.os }}-gems-
      - uses: helaili/jekyll-action@v2
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          target_branch: "static"

然后我将 GitHub 页面设置为 static 分支的静态 HTML 内容,它工作正常。但是我注意到我根本不需要它,因为我可以删除工作流程,将 GitHub 页面指向 master 分支,它会直接从 master 分支发布它使用 Jekyll 以 Markdown 形式呈现。

现在我不知道应该使用这两种方法中的哪一种。一个比另一个更快或更灵活吗?它们之间的权衡是什么? GitHub 会查看我的 Gemfile 或 Gemfile.lock 还是使用它自己预定义的 Jekyll 版本?我可以使用任何 Gems 我想使用任何文档处理器吗?或者是否有一些只允许某些 Gems 的隐形过滤器? GitHub 将页面转换为 HTML 一次并将其发布到隐藏分支还是 运行 Jekyll 作为服务器?

我不知道这是可能的。在 github-pages 的部署幕后有一些 github 魔法,我猜是工作流允许您自由自定义 jekyll 构建。关于 github 页面限制的说明以及作者迁移到外部服务器的原因 https://www.jessesquires.com/blog/2017/09/10/building-a-site-with-jekyll-on-nfsn/

见此文档

如果让 GitHub 为您构建,则有一些注意事项:

  • 绝对不够灵活:你不能选择 Jekyll 版本(目前是 3.9.2),并且有一个有限的 list of supported plugins
  • Some plugins默认启用,无法禁用;它们主要用于实现链接的 Markdown 文档的无痛转换而无需前言
  • GemfileGemfile.lock 将被忽略,但它们对于 运行 与用于 GitHub 页面的相同本地设置很有用(通过使用 github-pages gem)

当 GitHub Pages 为您构建站点时,它 运行 是一个 workflow,最终将是可自定义的,包含以下两个操作:

但是您不必自己在工作流方面进行任何配置。

我建议从头到尾阅读 Setting up a GitHub Pages site with Jekyll 文档,它们有很多有用的信息。