Create content using github pages
EDIT
This content has been completely altered since this initial posting, this is current as of Dec 2016
Purpose
Create a website with static content using markdown
Required software
See github_pages, you will need the following
- Ruby
- Jekyll and other gems
- Redcarpet
- therubyracer javascript environment gem
Rather than having this software on my local machine I will use a docker container
Workflow
- Create a github repository named pmcgrath.github.com (pmcgrath.github.io for newer accounts)
- Clone github repository
- Initialise jekyll content, see below
- Run docker container serving jekyll content
- Run the following in a loop until you are happy with the content
- Edit content locally
- View content in browser @ http://localhost:4000/
- Push content to github
Docker usage
- I have a docker image so that I can create and edit content locally and view it before I push to github
- I do not need any of the required software on my local machine
- To build an image you will need the following files
- To build the image run the following bash command (Will need sudo prefix if user is not in the docker group)
docker image build -t pmcgrath/github-pages:1.0 .
- To Run an instance of the docker image which watches for changes while editing, run an instance using
docker container run --rm -it --name github-pages -p 4000:4000 --volume $(pwd):/src pmcgrath/github-pages:1.0
Initialise jekyll content
- Use the following bash command within the empty cloned repository to create the initial content
docker container run --rm -it --name github-pages --rm -v $(pwd):/src pmcgrath/github-pages:1.0 ruby -S jekyll new .
- Edit the settings in the _config.yml file, changing the values appropriately
- Use redcarpet markdown engine so we can use fenced code blocks, add the following to the _config.yml file
- markdown: redcarpet # So we can use fences code blocks
- Use permalinks for the links, so we just use the title for the urls, add the following to the _config.yml file
- permalink: /:title # So title alone is used for the link
Create blog posts
- Add a file to the _posts directory, you can copy the default post created when the jekyll content was initialised
Jekyll notes
- Converts mardown content to static html content
- Places the static version in the _site directory, can do so manually using the build command
- Can serve content by running a web server listening on port 4000
- Can be instructed to watch for content changes, which will result in re-generating the static content
- Changes to the _config.yml will require restarting the container