问题
I just created a great gallery for my Jekyll blog which builds perfectly on my localhost:4000. However, GitHub pages doesn't support the Jekyll Gallery Generator plug-in I am using: https://github.com/ggreer/jekyll-gallery-generator
I read about the alternative method of hosting Jekyll on a traditional host using FTP (uploading the _site directory) http://jekyllrb.com/docs/deployment-methods/ However, rather than reconfigure my entire site and hosting, It would be great if GitHub Pages could be used somehow even though I'm using a non-supported plugin.
What is a workaround for this?
回答1:
Depending if you deal with a User/Organization (UO) site or a Project site (P), do :
- from your working folder
git init git remote add origin git@github.com:userName/userName.github.io.git(UO) orgit remote add origin git@github.com:userName/repositoryName.git(P)jekyll new .creates your code base- in _config.yml, set the baseurl parameter to
baseurl: ''(UO) orbaseurl: '/repositoryName'(P) - in .gitignore add _site, it will be versioned in the other branch
jekyll buildwill create the destination folder and build site.git checkout -b sources(UO) orgit checkout master(P)git add -Agit commit -m "jekyll base sources"commit your source codegit push origin sources(UO) orgit push origin master(P) push your sources in the appropriate branchcd _sitetouch .nojekyll, this file tells gh-pages that there is no need to buildgit initinit the repositorygit remote add origin git@github.com:userName/userName.github.io.git(UO) orgit remote add origin git@github.com:userName/repositoryName.git(P)git checkout master(UO) orgit checkout -b gh-pages(P) put this repository on the appropriate branchgit add -Agit commit -m "jekyll first build"commit your site codegit push origin master(UO) orgit push origin gh-pages(P)
You now have something like Octopress does. Look at their rake file, there are some nice comments inside.
回答2:
Better way is to configure Travis to automate deployment of jekyll with non-supported plugins. Follow Travis getting started guide to enable Travis for your repo.
Create script/cibuild with the following content
#!/usr/bin/env bash
set -e # halt script on error
bundle exec jekyll build
touch ./_site/.nojekyll # this file tells gh-pages that there is no need to build
Create .travis.yml with the following content (modify as required)
language: ruby
rvm:
- 2.3.3
before_script:
- chmod +x ./script/cibuild # or do this locally and commit
# Assume bundler is being used, therefore
# the `install` step will run `bundle install` by default.
script: ./script/cibuild
# branch whitelist, only for GitHub Pages
branches:
only:
- master
env:
global:
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
sudo: false # route your build to the container-based infrastructure for a faster build
deploy:
provider: pages
skip_cleanup: true
keep-history: true
local_dir: _site/ # deploy this directory containing final build
github_token: $GITHUB_API_KEY # Set in travis-ci.org dashboard
on:
branch: master
Deployment steps (after every push):
- Build will be created using our custom script
script/cibuildin_sitedirectory _sitewill be pushed togh-pagesbranch.- github pages will serve site as it is without building it again (because of
.nojekyllfile)
Reference: My repository https://github.com/armujahid/armujahid.me/ is using this method for continuous integration using Travis CI
来源:https://stackoverflow.com/questions/28249255/how-do-i-configure-github-to-use-non-supported-jekyll-site-plugins