有什么方法可以将两个分页博客合并到一个 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 详细说明问题
我有一个使用 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 详细说明问题