A few months ago, I set up a site using jekyll and it's hosted on github pages here: http://sethxd.github.io. Originally, I just figured I'd let github pages handle the building because I wouldn't need to use plugins.
Well, now I'd like to use plugins. I've tried to follow a few tutorials online to set up a separate source branch, but I keep running into git errors and conflicts. I'd also like to set up a rakefile or other tool to build and deploy this automatically in the future.
I'm on Windows, running Jekyll 3.0.
GitHub Pages doesn't allow using most of Jekyll plugins for security reasons, but some can be used. The only way to deploy a Jekyll website to GitHub that uses plugins is via _site folder. You only upload the content of this folder, so GitHub won't build the site for you, it will display it as simple html.
Related
I have a GitHub Pages site that I generated by creating a repository and choosing a theme on GitHub. While the site is technically built using Jekyll, it has no gemfile, and the _config.yml is very concise:
theme: jekyll-theme-dinky
title: "<site name>"
In contrast, proper Jekyll sites created with jekyll new . have proper gemfile and gemfile.lock files, and a verbose _config.yml. Pardon my general ignorance with Jekyll and Ruby, but I assume these are necessary for Jekyll to build the site locally.
Running jekyll serve on a local clone of my site doesn't build the site properly. Yet GitHub's own pipeline can.
The question: Is there a way to locally build and preview my site without adding a gemfile/gemfile.lock and changing _config.yml? I.e. do exactly what GitHub's pipeline does, just on my computer.
This is the first time that I am going to use Jekyll to build a static site. I would like to use a dozen plugins that are not white listed for deploying on Github. My question is : is it possible to deploy a such site with a dozen plugins (not white listed) on github ?
Browsing on internet, I found the following assertions :
1) We can't run user plugins on GitHub Pages due to security restrictions. That' what the documentation says
2) You are free to generate your site locally and push the resulting HTML to a Git repo, however : what does that means ? First when you generate the site locally, it ends with a group of HTML files and that group of html files, are they enough to run the site autonomously (for example must you include the css files in html pages ) ? Furthermore when you push the resulting HTML to a Git repo, is it enough to deploy it on a production environment (on GITHUB for example) ? and how you do that ?
3) on this link (https://help.github.com/articles/using-jekyll-plugins-with-github-pages/) I found the following explaination : Adding Jekyll plugins to a GitHub Pages site
You can further customize your GitHub Pages site by adding Jekyll plugins. (do they talk about all plugins ?)
GitHub Pages officially supports the Jekyll plugins found in the GitHub Pages gem. For the exact versions of the Jekyll plugins that GitHub Pages supports, see this list of GitHub Pages dependencies. Other plugins are not supported, so the only way to incorporate them in your site is to generate your site locally and then push your site's static files to your GitHub Pages site.
So as they say, it is possible , generating your site locally and then pushing your site's static files to your GitHub Pages site. Is there a detailled procedure example somewhere ?
Thanks in advance for your answers
To be able to use Jekyll with any plugins and host in Github pages you have two options
first alternative
Build your site locally and then push the resulting site at _site to Github.
Then push the built site's static files to your pages publishing branch (gh-pages or master depending on your site type).
GitHub Pages supports any HTML or static files you push to it so you
can use any static site generator to build your site. You can even
just push raw HTML files to GitHub Pages and it will build your site.
You can also customize your own build process locally or on another
server.
second alternative
Use a CI service like Travis, so when you push your Jekyll files to Github, it automatically builds your site and deploy it to your publishing branch.
Can I set up my repository so that I can see all the files (html and css) that my site uses in the repository while still using the GitHub page generator?
I want to use github.com to maintain my multi page site, without installing Jekyll locally.
After you create your github repo go to the settings and select the option to host from the docs directory I found this to be the best method to host my websites that way you done have to mess with different branches unless your in to that thing.
It is not required for you to use Jekyll I personally have never used it. It is to wordpress esq.
What you can use instead of Jekyll is a static site generator or spa to precompile your website content add the static content to the doc directory and push your repo.
Github will generate a url for your that will also be available in your settings. You can also add custom domains.
I recomd using a static site generator performance and seo is the reason.
If you create a Jekyll website on your local machine in /some/path/website/, initialise your Git repository there:
cd /some/path/website/
git init
Then you can push this to your remote Github repository and all of your files will added and viewable.
I don't think you can initialise a Jekyll website in your remote repository though.
From their documentation:
Jekyll's simplified build process with GitHub Pages is one of the biggest advantages of using Jekyll instead of other static site generators. GitHub Pages manages your site's build process with a single push to your site's publishing branch. This is Jekyll's build process for managing your site:
Push file changes to your pages publishing branch (my emphasis)
GitHub Pages publishes your site.
It turned out that the reason I was not seeing many files was that there was only the index.html that I created using the tutorial at GitHub Pages
The reason I thought there must have been other files was that the theme I picked looked a whole lot better than my helloworld.html
Which commands do I need to use to start and stop a jekyll site?
I am trying to use
jekyll build
or
jekyll serve
but I only get build and serve folders created instead.
Both commands create a folder containing your website files already processed and ready to make them available using a web server, with the difference that serve also starts a server that should be used only for development only at http://localhost:4000.
So you can "start" a Jekyll site with jekyll build and then using a server to make those files "available" or you can use jekyll serve and then access http://localhost:4000 to browse your website while you develop it.
How to use 'jekyll-multiple-languages-plugin' on GitHub Pages?
It works locally, but I get the following error when I push my sources to GitHub:
The tag `t` on line 6 in `about.html` is not a recognized Liquid tag.
The code causing the error is:
{% t about.title %}
GitHub Pages allow a limited set of plugins. You can find a list here with the versions for each plugin.
In order to run your jekyll site locally in an environment similar to GitHub Pages, you should serve it with plugins disabled, using:
jekyll serve --safe
There are ways to make Jekyll multilingual without plugins, e.g. this implementation based on this article.
If you really want to use plugins, you will have to generate your web pages locally, and push them into your GitHub repository instead of the Jekyll sources.
On Github pages only following gems are allowed : https://pages.github.com/versions/
If you want to use any other gems you can :
build locally and push to gh-pages branch on github pages (see this for git setup)
setup a continuous integration that will take care of building and publishing for you
use a service like netlify