将您自己的管道用于 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 文档的无痛转换而无需前言
Gemfile
和 Gemfile.lock
将被忽略,但它们对于 运行 与用于 GitHub 页面的相同本地设置很有用(通过使用 github-pages
gem)
当 GitHub Pages 为您构建站点时,它 运行 是一个 workflow,最终将是可自定义的,包含以下两个操作:
但是您不必自己在工作流方面进行任何配置。
我建议从头到尾阅读 Setting up a GitHub Pages site with Jekyll 文档,它们有很多有用的信息。
我在存储库的主分支中有一个 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 文档的无痛转换而无需前言
Gemfile
和Gemfile.lock
将被忽略,但它们对于 运行 与用于 GitHub 页面的相同本地设置很有用(通过使用github-pages
gem)
当 GitHub Pages 为您构建站点时,它 运行 是一个 workflow,最终将是可自定义的,包含以下两个操作:
但是您不必自己在工作流方面进行任何配置。
我建议从头到尾阅读 Setting up a GitHub Pages site with Jekyll 文档,它们有很多有用的信息。