有什么方法可以将两个分页博客合并到一个 Jekyll 站点中,并托管在一个 GitHub Pages 存储库中?

Is there any way to roll two paginated blogs into one Jekyll site, hosted in a single GitHub Pages repo?

我有一个使用 jekyll-paginate 插件的 Jekyll 网站,由 GitHub 页面托管,非常标准。

是否有人知道其他处理分页的解决方案,以便我可以在 domain/blog1 和 domain/blog2 using this solution 的同一站点构建两个博客,同时保留分页?

保留当前分页设计不是优先事项。欢迎需要重新设计的创意。

我知道 jekyll-paginate-multiple 存在,但 GitHub Pages 本身不支持它,我将不得不维护两个 repos 以分别维护站点代码和构建工件,这并不理想。

如果 jekyll-paginate-multiple 在您的上下文中有效,您也可以在 GitHub 页面上使用它。

您只需复制

https://github.com/scandio/jekyll-paginate-multiple/blob/master/lib/jekyll-paginate-multiple.rb

进入你的回购 _plugins 文件夹,你就可以开始了。

将任何自定义 Plugin/Gem 用于 GitHub Pages 托管的 Jekyll 博客

以下是您可以 在 GitHub Pages 托管网站上使用任何自定义插件的方法。我在自己的博客上使用它,所以我 100% 确定它有效。基本思想是您使用 TravisCI 在 staging 分支上构建您的自定义 Jekyll 站点,然后将其自动推送到为您的网站提供服务的 GitHubPages master 分支.下面是快速演练:

a) 您从 master 分支

docs 文件夹中配置要托管的 GitHub 页面

b) 你添加并配置一个 staging 分支作为你的仓库的默认分支,你可以在这里完成所有本地工作,通过在此设置 git 标签来发布工作分支

c) 您使用 _config.yml 文件将您的 destination 目录设置为 docs

# _config.yml
destination: docs

d) 为避免 Travis CI 的构建问题,您可以将 Gemfile.lock 添加到 .gitignore 文件并将 docs 文件夹添加到本地 .git/info/exclude因为您不想再推动它们了。从本地推送中排除 docs 文件夹是可选的,但对我来说效果最好。您可能还需要先删除 Gemfile.lock,然后让 Travis CI 选择适合所选 Docker OS 的版本,否则您可以 运行 进入版本很难解决的冲突。

e) 与 Travis CI 一起部署到 production a.k.a。您的实时站点您添加了一个 .travis.yml 文件 类似 :

language: ruby
rvm:
- 2.6.3
install:
  - bundle install
script:
  - JEKYLL_ENV="production" bundle exec jekyll build
deploy:
  provider: script
  script: bash script/deploy.sh
  skip_cleanup: true
  on:
    tags: true
    branch: staging

branches:
  only:
    - staging
    - /\d+\.\d+(\.\d+)?(-\S*)?$/
env:
  global:
  - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
  - secure: TRAVIS_SECRET_KEY_FOR_GITHUB_CREDENTIALS
sudo: false
cache: bundler
notifications:
  email: false

g) script/deploy.sh 看起来有点像这样:

#!/usr/bin/env bash

bundle install
JEKYLL_ENV="production" bundle exec jekyll build
git status
git add .
git commit -m"[skip travis] Automated build"
git remote set-url origin https://USERNAME:$PSW@github.com/YOUR_GIT_USER/YOUR_REPO.git
git push origin HEAD:master --force

e) 要使用部署脚本中使用的 $PSW 变量在 .travis.yml 中获取加密的 TRAVIS_SECRET_KEY_FOR_GITHUB_CREDENTIALS,只需遵循 Encryption Key Doc

完成此配置后,您可以像在本地主机上一样使用任何 Gem,因为构建部分不再由 GitHub 完成,而是由 TravisCI.

结论

你只在 staging 上工作,只让 Travis CI 推送到你的 master 分支。您使用 1.0.0 形式的标签进行部署。您现在需要做的就是将 jekyll-paginate-multiple 添加到您的 Gemfile_config.yml 就可以了。

如果有人对这些步骤的更多细节感兴趣,请查看此 Blog Post 详细说明问题