Merge branch 'master' into patch-19
This commit is contained in:
commit
01c95e85dd
|
@ -20,13 +20,21 @@
|
||||||
* Fix typo in contribution information (#5910)
|
* Fix typo in contribution information (#5910)
|
||||||
* update plugin repo URL to reflect repo move (#5916)
|
* update plugin repo URL to reflect repo move (#5916)
|
||||||
* Update exclude array in configuration.md (#5947)
|
* Update exclude array in configuration.md (#5947)
|
||||||
|
* Fixed path in "Improve this page" link in Tutorials section (#5951)
|
||||||
|
* Corrected permalink (#5949)
|
||||||
|
* Included more details about adding defaults to static files (#5971)
|
||||||
|
* Create buddyworks (#5962)
|
||||||
|
* added (buddyworks) to ci list (#5965)
|
||||||
|
* Add a tutorial on serving custom Error 404 page (#5946)
|
||||||
|
* add custom 404 to tutorial navigation (#5978)
|
||||||
|
|
||||||
### Development Fixes
|
### Development Fixes
|
||||||
|
|
||||||
* [Rubocop] add missing comma (#5835)
|
* [Rubocop] add missing comma (#5835)
|
||||||
* Appease classifier-reborn (#5934)
|
* Appease classifier-reborn (#5934)
|
||||||
* Allow releases & development on *-stable branches (#5926)
|
* Allow releases & development on `*-stable` branches (#5926)
|
||||||
* Add script/backport-pr (#5925)
|
* Add script/backport-pr (#5925)
|
||||||
|
* Prefer .yaml over .toml (#5966)
|
||||||
|
|
||||||
### Site Enhancements
|
### Site Enhancements
|
||||||
|
|
||||||
|
@ -43,6 +51,11 @@
|
||||||
* Convertible#validate_permalink!: ensure the return value of data["permalink"] is a string before asking if it is empty (#5878)
|
* Convertible#validate_permalink!: ensure the return value of data["permalink"] is a string before asking if it is empty (#5878)
|
||||||
* Allow abbreviated post dates (#5920)
|
* Allow abbreviated post dates (#5920)
|
||||||
* Remove dependency on include from default about.md (#5903)
|
* Remove dependency on include from default about.md (#5903)
|
||||||
|
* Allow colons in `uri_escape` filter (#5957)
|
||||||
|
|
||||||
|
## 3.4.3 / 2017-03-21
|
||||||
|
|
||||||
|
* Backport #5957 for v3.4.x: Allow colons in `uri_escape` filter (#5968)
|
||||||
|
|
||||||
## 3.4.2 / 2017-03-09
|
## 3.4.2 / 2017-03-09
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
- home
|
- home
|
||||||
- navigation
|
- navigation
|
||||||
- orderofinterpretation
|
- orderofinterpretation
|
||||||
|
- custom-404-page
|
||||||
|
|
||||||
#- title: Another section
|
#- title: Another section
|
||||||
# tutorials:
|
# tutorials:
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
---
|
||||||
|
title: "BuddyWorks"
|
||||||
|
---
|
||||||
|
|
||||||
|
[BuddyWorks][buddyworks-homepage] is a [Docker][docker-homepage]-based CI server that you can set up in 15-20 minutes to build, test, and deploy your Jekyll websites. It supports [GitHub][github-homepage], [Bitbucket][bitbucket-homepage], and [GitLab][gitlab-homepage] repositories, and can be installed on-premises or used in cloud. The following guide will show you how to set up a free environment to build and test your Jekyll project.
|
||||||
|
|
||||||
|
[buddyworks-homepage]: https://buddy.works
|
||||||
|
[docker-homepage]: https://www.docker.com/
|
||||||
|
[github-homepage]: https://github.com
|
||||||
|
[bitbucket-homepage]: https://bitbucket.org/
|
||||||
|
[gitlab-homepage]: https://gitlab.com
|
||||||
|
|
||||||
|
## 1. Getting started
|
||||||
|
|
||||||
|
1. Log in at https://buddy.works with your GitHub/Bitbucket account or email
|
||||||
|
2. Choose your Git provider and select or push your Jekyll Project
|
||||||
|
3. Create a new pipeline and set the trigger mode to 'On every push'
|
||||||
|
4. Add and configure the Jekyll action and save the pipeline
|
||||||
|
|
||||||
|
## 2. How it works
|
||||||
|
|
||||||
|
Whenever you make a push to the selected branch, the Jekyll action runs `jekyll build` in an isolated [Jekyll Docker image][jekyll-docker-image]. The output is generated to the `/filesystem` directory, and can be further deployed to FTP/SFTP and IaaS services. You can add your own commands, install additional packages, attach services, and run Selenium tests, as well as add other actions down the pipeline, eg. a Slack notification or an SSH script that will restart your server.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[jekyll-docker-image]: https://hub.docker.com/r/jekyll/jekyll/
|
||||||
|
|
||||||
|
## 3. Using YAML for configuration
|
||||||
|
|
||||||
|
If you prefer configuration as code over GUI, you can generate a `buddy.yml` that will create a pipeline with the Jekyll action once you push it to the target branch:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
- pipeline: "Build and Deploy Jekyll site"
|
||||||
|
trigger_mode: "ON_EVERY_PUSH"
|
||||||
|
ref_name: "master"
|
||||||
|
actions:
|
||||||
|
- action: "Execute: jekyll build"
|
||||||
|
type: "BUILD"
|
||||||
|
docker_image_name: "jekyll/jekyll"
|
||||||
|
docker_image_tag: "latest"
|
||||||
|
execute_commands:
|
||||||
|
- "chown jekyll:jekyll $WORKING_DIR"
|
||||||
|
- "jekyll build"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Setting up on-premises server
|
||||||
|
|
||||||
|
The self-hosted version of BuddyWorks can be installed on any type of server supporting Docker, including [Linux][bw-linux], [Mac][bw-mac], [AWS EC2][bw-aws-ec2], [DigitalOcean][bw-digitalocean], and [Microsoft Azure][bw-azure].
|
||||||
|
|
||||||
|
[bw-linux]: https://buddy.works/knowledge/standalone/installation-linux
|
||||||
|
[bw-mac]: https://buddy.works/knowledge/standalone/installation-mac-osx
|
||||||
|
[bw-aws-ec2]: https://buddy.works/knowledge/standalone/installation-amazon-ec2
|
||||||
|
[bw-digitalocean]: https://buddy.works/knowledge/standalone/installation-digitalocean
|
||||||
|
[bw-azure]: https://buddy.works/knowledge/standalone/installation-azure
|
||||||
|
|
||||||
|
## 5. Questions?
|
||||||
|
|
||||||
|
This entire guide is open-source. Go ahead and [edit it][jekyll-docs-ci-buddyworks] if you want to expand it or have a fix or [ask for help][jekyll-help] if you run into trouble and need assistance. BuddyWorks also has an [online community][buddyworks-forum] for help.
|
||||||
|
|
||||||
|
[jekyll-docs-ci-buddyworks]: https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration/buddyworks.md
|
||||||
|
[jekyll-help]: https://jekyllrb.com/help/
|
||||||
|
[buddyworks-forum]: http://forum.buddy.works/
|
|
@ -7,3 +7,4 @@ Continuous Integration (CI) enables you to publish your Jekyll generated website
|
||||||
|
|
||||||
* [Travis CI](travis-ci)
|
* [Travis CI](travis-ci)
|
||||||
* [CircleCI](circleci)
|
* [CircleCI](circleci)
|
||||||
|
* [BuddyWorks](buddyworks)
|
||||||
|
|
|
@ -153,4 +153,4 @@ author: dave
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
```
|
```
|
||||||
|
|
||||||
For information on how to build robust navigation for your site (especially if you have a documentation website or another type of Jekyll site with a lot of pages to organize), see [Navigation](../navigation).
|
For information on how to build robust navigation for your site (especially if you have a documentation website or another type of Jekyll site with a lot of pages to organize), see [Navigation](/tutorials/navigation).
|
||||||
|
|
|
@ -4,11 +4,16 @@ permalink: "/docs/history/"
|
||||||
note: This file is autogenerated. Edit /History.markdown instead.
|
note: This file is autogenerated. Edit /History.markdown instead.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 3.4.3 / 2017-03-21
|
||||||
|
{: #v3-4-3}
|
||||||
|
|
||||||
|
- Backport [#5957]({{ site.repository }}/issues/5957) for v3.4.x: Allow colons in `uri_escape` filter ([#5968]({{ site.repository }}/issues/5968))
|
||||||
|
|
||||||
|
|
||||||
## 3.4.2 / 2017-03-09
|
## 3.4.2 / 2017-03-09
|
||||||
{: #v3-4-2}
|
{: #v3-4-2}
|
||||||
|
|
||||||
- Backport [#5871]({{ site.repository }}/issues/5871) for v3.4.x: Convert StaticFile liquid representation to
|
- Backport [#5871]({{ site.repository }}/issues/5871) for v3.4.x: Convert StaticFile liquid representation to a Drop & add front matter defaults support to StaticFiles ([#5940]({{ site.repository }}/issues/5940))
|
||||||
a Drop & add front matter defaults support to StaticFiles ([#5940]({{ site.repository }}/issues/5940))
|
|
||||||
|
|
||||||
|
|
||||||
## 3.4.1 / 2017-03-02
|
## 3.4.1 / 2017-03-02
|
||||||
|
|
|
@ -65,3 +65,34 @@ following metadata:
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Note that in the above table, `file` can be anything. It's simply an arbitrarily set variable used in your own logic (such as in a for loop). It isn't a global site or page variable.
|
||||||
|
|
||||||
|
## Add front matter to static files
|
||||||
|
|
||||||
|
Although you can't directly add front matter values to static files, you can set front matter values through the [defaults property](../configuration/#front-matter-defaults) in your configuration file. When Jekyll builds the site, it will use the front matter values you set.
|
||||||
|
|
||||||
|
Here's an example:
|
||||||
|
|
||||||
|
In your `_config.yml` file, add the following values to the `defaults` property:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
defaults:
|
||||||
|
- scope:
|
||||||
|
path: "assets/img"
|
||||||
|
values:
|
||||||
|
image: true
|
||||||
|
```
|
||||||
|
|
||||||
|
This assumes that your Jekyll site has a folder path of `assets/img` where you have images (static files) stored. When Jekyll builds the site, it will treat each image as if it had the front matter value of `image: true`.
|
||||||
|
|
||||||
|
Suppose you want to list all your image assets as contained in `assets/img`. You could use this for loop to look in the `static_files` object and get all static files that have this front matter property:
|
||||||
|
|
||||||
|
```liquid
|
||||||
|
{% raw %}{% assign image_files = site.static_files | where: "image", true %}
|
||||||
|
{% for myimage in image_files %}
|
||||||
|
{{ myimage.path }}
|
||||||
|
{% endfor %}{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
|
When you build your site, the output will list the path to each file that meets this front matter condition.
|
||||||
|
|
|
@ -10,7 +10,7 @@ layout: default
|
||||||
<div class="unit four-fifths">
|
<div class="unit four-fifths">
|
||||||
<article>
|
<article>
|
||||||
<div class="improve right hide-on-mobiles">
|
<div class="improve right hide-on-mobiles">
|
||||||
<a href="https://github.com/jekyll/jekyll/edit/master/tutorials/{{ page.path }}"><i
|
<a href="https://github.com/jekyll/jekyll/edit/master/docs/{{ page.path }}"><i
|
||||||
class="fa fa-pencil"></i> Improve this page</a>
|
class="fa fa-pencil"></i> Improve this page</a>
|
||||||
</div>
|
</div>
|
||||||
<h1>{{ page.title }}</h1>
|
<h1>{{ page.title }}</h1>
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
---
|
||||||
|
title: 'Jekyll 3.4.3 Released'
|
||||||
|
date: 2017-03-21 08:52:53 -0500
|
||||||
|
author: pathawks
|
||||||
|
version: 3.4.3
|
||||||
|
categories: [release]
|
||||||
|
---
|
||||||
|
|
||||||
|
Another one-PR patch update as we continue our quest to destroy all bugs. A
|
||||||
|
fairly technical debriefing follows, but the TLDR is that we have updated the
|
||||||
|
`uri_escape` filter to more closely follow the pre-v3.4.0 behavior.
|
||||||
|
|
||||||
|
In [v3.4.0]({% link _posts/2017-01-18-jekyll-3-4-0-released.markdown %}), we
|
||||||
|
moved away from using the deprecated
|
||||||
|
[`URI.escape`](https://ruby-doc.org/stdlib-2.3.0/libdoc/uri/rdoc/URI/Escape.html#method-i-encode)
|
||||||
|
in favor of
|
||||||
|
[`Addressable::URI.encode`](http://www.rubydoc.info/gems/addressable/Addressable/URI#encode-class_method).
|
||||||
|
This is what powers our [`uri_escape`
|
||||||
|
filter](https://jekyllrb.com/docs/templates/).
|
||||||
|
|
||||||
|
While this transition was mostly a smooth one, the two methods are not
|
||||||
|
identical. While `URI.escape` was happy to escape any string,
|
||||||
|
`Addressable::URI.encode` first turns the string into an `Addressable::URI`
|
||||||
|
object, and will then escape each component of that object. In most cases, this
|
||||||
|
difference was insignificant, but there were a few cases where this caused some
|
||||||
|
unintended regressions when encoding colons.
|
||||||
|
|
||||||
|
While **Addressable** can understand that something like `"/example :page"` is a
|
||||||
|
relative URI, without the slash it cannot figure out how to turn
|
||||||
|
`"example :page"` into an `Addressable::URI` object. `URI.escape` had no such
|
||||||
|
objection. This lead to the following Liquid code working fine in Jekyll 3.3.x
|
||||||
|
but breaking in 3.4.0:
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
```liquid
|
||||||
|
{{ "example :page" | uri_escape }}
|
||||||
|
```
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
This was not an intended consequence of switching to **Addressable**.
|
||||||
|
|
||||||
|
Fortunately, the solution was not complicated. **Addressable** has a method
|
||||||
|
[`Addressable::URI.normalize_component`](http://www.rubydoc.info/gems/addressable/Addressable/URI#normalize_component-class_method)
|
||||||
|
which will simply escape the characters in a string, much like `URI.escape`.
|
||||||
|
|
||||||
|
Thanks to @cameronmcefee and @FriesFlorian for reporting
|
||||||
|
[this issue](https://github.com/jekyll/jekyll/issues/5954).
|
||||||
|
|
||||||
|
Happy Jekylling!
|
|
@ -0,0 +1,66 @@
|
||||||
|
---
|
||||||
|
layout: tutorials
|
||||||
|
permalink: /tutorials/custom-404-page/
|
||||||
|
title: Custom 404 Page
|
||||||
|
---
|
||||||
|
|
||||||
|
You can easily serve custom 404 error pages with Jekyll to replace the default **Error 404 -- File Not Found** page displayed when one tries to access a broken link on your site.
|
||||||
|
|
||||||
|
|
||||||
|
## On GitHub Pages
|
||||||
|
|
||||||
|
Any `404.html` at the **root of your `_site` directory** will be served automatically by GitHub Pages and the local WEBrick development server.
|
||||||
|
|
||||||
|
Simply add a `404.md` or `404.html` at the root of your site's source directory and include the YAML Front Matter data to use the theme's base layout.
|
||||||
|
|
||||||
|
If you plan to organize your files under subdirectories, the error page should have the following Front Matter Data, set: `permalink: /404.html`. This is to ensure that the compiled `404.html` resides at the root of your processed site, where it'll be picked by the server.
|
||||||
|
|
||||||
|
```
|
||||||
|
---
|
||||||
|
# example 404.md
|
||||||
|
|
||||||
|
layout: default
|
||||||
|
permalink: /404.html
|
||||||
|
---
|
||||||
|
|
||||||
|
# 404
|
||||||
|
|
||||||
|
Page not found! :(
|
||||||
|
```
|
||||||
|
|
||||||
|
## Hosting on Apache Web Servers
|
||||||
|
|
||||||
|
Apache Web Servers load a configuration file named [`.htaccess`](http://www.htaccess-guide.com/) that modifies the functionality of these servers.
|
||||||
|
|
||||||
|
Simply add the following to your `.htaccess` file.
|
||||||
|
|
||||||
|
```
|
||||||
|
ErrorDocument 404 /404.html
|
||||||
|
```
|
||||||
|
|
||||||
|
With an `.htaccess` file, you have the freedom to place your error page within a subdirectory.
|
||||||
|
|
||||||
|
```
|
||||||
|
ErrorDocument 404 /error_pages/404.html
|
||||||
|
```
|
||||||
|
|
||||||
|
Where the path is relative to your site's domain.
|
||||||
|
|
||||||
|
More info on configuring Apache Error Pages can found in [official documentation](https://httpd.apache.org/docs/current/mod/core.html#errordocument).
|
||||||
|
|
||||||
|
|
||||||
|
## Hosting on Nginx server
|
||||||
|
|
||||||
|
The procedure is just as simple as configuring Apache servers, but slightly different.
|
||||||
|
|
||||||
|
Add the following to the ngnix configuration file, `nginx.conf`, which is usually located inside `/etc/nginx/` or `/etc/nginx/conf/`:
|
||||||
|
|
||||||
|
```
|
||||||
|
server {
|
||||||
|
error_page 404 /404.html;
|
||||||
|
location /404.html {
|
||||||
|
internal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
The `location` directive prevents users from directly browsing the 404.html page.
|
|
@ -1 +1 @@
|
||||||
3.4.2
|
3.4.3
|
||||||
|
|
|
@ -137,7 +137,7 @@ module Jekyll
|
||||||
SafeYAML.load_file(filename) || {}
|
SafeYAML.load_file(filename) || {}
|
||||||
else
|
else
|
||||||
raise ArgumentError, "No parser for '#{filename}' is available.
|
raise ArgumentError, "No parser for '#{filename}' is available.
|
||||||
Use a .toml or .y(a)ml file instead."
|
Use a .y(a)ml or .toml file instead."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -152,7 +152,7 @@ module Jekyll
|
||||||
#
|
#
|
||||||
# Returns the escaped String.
|
# Returns the escaped String.
|
||||||
def uri_escape(input)
|
def uri_escape(input)
|
||||||
Addressable::URI.encode(input)
|
Addressable::URI.normalize_component(input)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Replace any whitespace in the input string with a single space
|
# Replace any whitespace in the input string with a single space
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
module Jekyll
|
module Jekyll
|
||||||
VERSION = "3.4.2".freeze
|
VERSION = "3.4.3".freeze
|
||||||
end
|
end
|
||||||
|
|
|
@ -317,6 +317,11 @@ class TestFilters < JekyllUnitTest
|
||||||
assert_equal "my%20things", @filter.uri_escape("my things")
|
assert_equal "my%20things", @filter.uri_escape("my things")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "allow colons in URI" do
|
||||||
|
assert_equal "foo:bar", @filter.uri_escape("foo:bar")
|
||||||
|
assert_equal "foo%20bar:baz", @filter.uri_escape("foo bar:baz")
|
||||||
|
end
|
||||||
|
|
||||||
context "absolute_url filter" do
|
context "absolute_url filter" do
|
||||||
should "produce an absolute URL from a page URL" do
|
should "produce an absolute URL from a page URL" do
|
||||||
page_url = "/about/my_favorite_page/"
|
page_url = "/about/my_favorite_page/"
|
||||||
|
|
Loading…
Reference in New Issue