Giter VIP home page Giter VIP logo

fastai / fastpages Goto Github PK

View Code? Open in Web Editor NEW
3.5K 43.0 765.0 89.6 MB

An easy to use blogging platform, with enhanced support for Jupyter Notebooks.

Home Page: https://fastpages.fast.ai/

License: Apache License 2.0

HTML 0.58% Ruby 0.06% Dockerfile 0.01% Shell 0.17% Python 0.08% Jupyter Notebook 98.38% Smarty 0.06% JavaScript 0.32% Makefile 0.04% SCSS 0.30%
data-science jekyll-blog actions jupyter jupyter-notebooks fastai literate-programming visualization github-pages python

fastpages's Introduction

⚠️

This Project Is Deprecated. We recommend using Quarto instead. See this migration guide if you are already using fastpages.

More information on why we deprecated this project is here.

⚠️

Welcome To fastpages

An easy to use blogging platform, with support for Jupyter notebooks, Word docs, and Markdown.

fastpages uses GitHub Actions to simplify the process of creating Jekyll blog posts on GitHub Pages from a variety of input formats.

fastpages provides the following features:

  • Create posts containing code, outputs of code (which can be interactive), formatted text, etc directly from Jupyter Notebooks; Notebook posts support features such as:
    • Interactive visualizations made with Altair remain interactive.
    • Hide or show cell input and output.
    • Collapsable code cells that are either open or closed by default.
    • Define the Title, Summary and other metadata via a special markdown cells
    • Ability to add links to Colab, Deepnote and GitHub automatically.
  • Support for comments, supported natively through GitHub Issues.
  • Built-in search.
  • Support for customizing the styling of your site.
  • Embed Twitter cards and YouTube videos.
  • Categorization of blog posts by user-supplied tags for discoverability.
  • Create and edit Markdown posts.
  • Create posts, including formatting and images, directly from Microsoft Word documents.
  • Write posts on your local machine and preview them with live reload.

See below for a more detailed list of features.

See the demo site


Setup Instructions

  1. Generate a copy of this repo by clicking on this link. Make sure to sign in to your account, or you will see a 404 error. Name your repo anything you like except {your-username}.github.io.

  2. GitHub Actions will automatically open a PR on your new repository ~ 30 seconds after the copy is created. Follow the instructions in that PR to continue.

If you are not seeing a PR, please make sure you have third party actions enabled in your organization: Settings -> Actions -> Actions Permissions -> Enable local and third party Actions for this repository

For a live walk-through of the setup steps (with some additional tips) see this video tutorial of setting up a fastpages blog by Abdul Majed.

  1. In some cases because of permissions step 2 may fail to create a Pull Request. If this occurs, go to your repository settings and in the Actions section, grant Read and Write permissions and check Allow GitHub Actions to create and approve pull requests.

Once you have granted permissions, go to the Actions tab at the top of your repository home page, where you will be presented with a list of Actions runs. First click on the failed run (the item with the red X):

You will be taken to a screen where there will be a button on the upper right hand side allowing you to re-run jobs.

After doing this, a pull request should appear.

  1. To create your first post, add content in the _posts, _notebooks or _word directories. You can follow examples of content in those folders in this repo of how to structure the content. The most important thing to pay attention to is the front matter, which is discussed in more detail below. Furthermore, you can add additional pages that will appear on your blog's navbar in the _pages directory. Note that content in the _word directory does not support front matter.

Customizing Blog Posts With Front Matter

Front matter allows you to toggle various options on/off for each blog post, as well as pass metadata to various features of fastpages.

In a notebook, front matter is defined as a markdown cell at the beginning of the notebook with the following contents:

# "Title"
> "Awesome summary"

- toc: false
- branch: master
- badges: true
- comments: true
- categories: [fastpages, jupyter]
- image: images/some_folder/your_image.png
- hide: false
- search_exclude: true
- metadata_key1: metadata_value1
- metadata_key2: metadata_value2

Similarly, in a markdown document the same front matter would be defined like this at the beginning of the document:

---
title: "My Title"
description: "Awesome description"
layout: post
toc: false
comments: true
image: images/some_folder/your_image.png
hide: false
search_exclude: true
categories: [fastpages, jupyter]
metadata_key1: metadata_value1
metadata_key2: metadata_value2
---

Additional metadata is optional and allows you to set custom front matter.

Note that anything defined in front matter must be valid YAML. Failure to provide valid YAML could result in your page not rendering in your blog. For example, if you want a colon in your title you must escape it with double quotes like this:

- title: "Deep learning: A tutorial"

See this tutorial on YAML for more information.

Configure Title & Summary

  • Replace Title, with your desired title, and Awesome summary with your desired summary.

Note: It is recommended to enclose these values in double quotes, so that you can escape colons and other characters that may break the YAML parser.

Table of Contents

  • fast_template will automatically generate a table of contents for you based on markdown headers! You can toggle this feature on or off by setting toc: to either true or false.

Colab, Binder, Deepnote and GitHub Badges

This option works for notebooks only

  • The branch field is used to optionally render a link your notebook to Colab and GitHub in your blog post. It'll default to master if you don't specify it in the notebook.
  • If you do not want to show Colab / GitHub badges on your blog post (perhaps because your repo is private and the links would be broken) set badges to false. This defaults to true
  • By default, when you omit this parameter from your front matter, or you set badges: true, all four badges (GitHub, Binder, Deepnote, Colab) will appear by default. You can adjust these defaults in with the default_badges parameter in Site Wide Configuration Options.
    • If only want to hide a badge on an individual post, you can set the front matter hide_{github,colab,binder,deepnote}_badge: true. For example, if you wanted to hide the Binder badge for an individual notebook but you want the other badges to show up, you can set this in your front matter:

      - badges: true
      - hide_binder_badge: true
  • Note about Binder: Binder allows you to customize the dependencies and other aspects of the Jupyter Notebook environment for your readers. The easiest way is to add a requirements.txt file with common packages you use for all your notebooks at the root of your repository, you can learn more on the official Binder docs.

Categories

  • You can have a comma seperated list inside square brackets of categories for a blog post, which will make the post visible on the tags page of your blog's site. For example:

    In a notebook:

    # "My Title"
    - categories: [fastpages, jupyter]
    

    In a markdown document:

    ---
    title: "My Title"
    categories: [fastpages, jupyter]
    ---
    

You can see a preview of what this looks like here.

  • You can toggle the display of tags on/off by setting show_tags to true or false in _config.yml:
# Set this to true to display tags on each post
show_tags: true

Enabling Comments

Commenting on blog posts is powered by Utterances, an open-source and ad-free way of implementing comments. All comments are stored in issues on your blog's GitHub repo. You can turn this on setting comments to true. This defaults to false.

To enable comments with Utterances you will need to do the following:

  • Make sure the repo is public, otherwise your readers will not be able to view the issues/comments.
  • Make sure the utterances app is installed on the repo, otherwise users will not be able to post comments.
  • If your repo is a fork, navigate to it's settings tab and confirm the issues feature is turned on.

Setting an Image For Social Media

On social media sites like Twitter, an image preview can be automatically shown with your URL. Specifying the front matter image provides this metadata to social media sites to render this image for you. You can set this value as follows:

- image: images/diagram.png

Note: for this setting you can only reference image files and folders in the /images folder of your repo.

Hiding A Blog Post

You may want to prevent a blog post from being listed on the home page, but still have a public url that you can preview or share discreetly. You can hide a blog post from the home page by setting the front matter hide to true. This is set to false by default.

It is recommended that you use permalinks in order to generate a predictable url for hidden blog posts. You can also set the front matter search_exclude to true if you don't want users to find your hidden post in a search.

Pinning A Blog Post

By default, posts are sorted by date on your homepage. However, you may want one or more blog posts to always appear at the very top of your homepage. In other words, you may want certain posts to be "pinned" or "sticky". To accomplish this, specify the sticky_rank front matter in the order you would like your sticky posts to appear. Blog posts that do not set this parameter are sorted in the default way by date after the sticky posts.

For example, consider these three markdown posts (also works for notebooks).

2020-01-01-Post-One.md

---
title: Post One
sticky_rank: 1
---

2020-02-01-Post-Two.md

---
title: Post Two
sticky_rank: 2
---

2020-04-01-Post-Three.md

---
title: Post Three
---

However, since sticky_rank is specified, blog posts will first be sorted by sticky_rank in ascending order, then by date in descending order, so the order of these posts will appear like so:

  • Post One
  • Post Two
  • Post Three

Without sticky_rank the above posts would actually be sorted in reverse order due to the dates associated with each post.

Note: pinning also works for notebooks:

# "My cool blog post"
> "Description of blog post"

- sticky_rank: 2

Toggle Search Visibility

fastpages comes with built in keyword search powered by lunr.js. You can prevent a blog post or page from appearing in search results by setting the front matter search_exclude to false. This is set to true by default.

Site Wide Configuration Options

It is recommended that everyone personalizes their blogging site by setting site-wide configration options. These options can be found in /_config.yml. Below is a description of various options that are available.

  • title: this is the title that appears on the upper left hand corner on the header of all your pages.

  • description: this description will show up in various places when a preview for your site is generated (for example, on social media).

  • github_username: this allows your site to display a link to your GitHub page in the footer.

  • github_repo: this allows your site to render links back to your repository for various features such as links to GitHub, Colab and Deepnote for notebooks.

  • url: This does not need to be changed unless you have a custom domain. Note: leave out the trailing / from this value.

  • baseurl: See the comments in /_config.yml for instructions ( "Special Instructions for baseurl" on setting this value properly. If you do not have a custom domain, then you can likely ignore this option.

  • email: this is currently unused. Ignore.

  • twitter_username: creates a link in your footer to your twitter page.

  • use_math: Set this to true to get LaTeX math equation support. This is off by default as it otherwhise loads javascript into each page that may not be used.

  • show_description: This shows a description under the title of your blog posts on your homepage that contains a list of your blog posts. Set to true by default.

  • google_analytics: Optionally use a Google Analytics ID for tracking if desired.

  • show_image: If set to true, this uses the image parameter in the front matter of your blog posts to render a preview of your blogs as shown below. This is set to false by default. When show_image is set to true your homepage will look like this:

    home page

  • show_tags: You can toggle the display of tags on your blog posts on or off by setting this value to false. This is set to true by default, which which renders the following links for tags on your blog posts like this:

    tags

  • pagination: This is the maximum number of posts to show on each page of your home page. Any posts exceeding this amount will be paginated onto another page. This is set to 15 by default. When this is triggered, you will see pagination at the bottom of your home page appear like this:

    paginate

    Note: if you are using an older version of fastpages, you cannot use the automated upgrade process to get pagination. Instead you must follow these steps:

    1. Rename your index.md file to index.html

      mv index.md index.html

    2. Replace the Gemfile and Gemfile.lock in the root of your repo with the files in this repo.
    3. Edit your _config.yml as follows (look at _config.yml for an example):
      gems:
      - jekyll-paginate
      
      paginate: 10
      paginate_path: /page:num/

    Alternatively, you can copy all of your posts over to a newly created repository created from the fastpages template.

  • default_badges: By default GitHub, Binder, Deepnote, and Colab badges will show up on notebook blog posts. You can adjust these defaults by setting the appropriate value in default_badges to false. For example, if you wanted to turn Binder badges off by default, you would change default_badges to this:

    default_badges:
      github: true
      binder: false
      deepnote: false
      colab: true
  • html_escape: this allows you to toggle escaping of HTML in various components of blog posts on or off. At this moment, you can only toggle this for the description field in your posts.
    This is set to false by default.

Adjusting Page Width

You can adjust the page width of fastpages on various devices by editing /_sass/minima/custom-variables.scss.

These are the default values, which can be adjusted to suit your preferences:

// width of the content area
// can be set as "px" or "%"
$content-width:    1000px;
$on-palm:          800px;
$on-laptop:        1000px;
$on-medium:        1000px;
$on-large:         1200px;

Annotations and Highlighting With hypothes.is

hypothes.is is an open platform that provides a way to annotate and higlight pages, which can be either public or private. When this feature is enabled, readers of your blog will be presented with the following tooltip when highlighting text:

annotation

This is disabled by default in fastpages. You can enable or disable this in your _config.yml file by setting annotations to true or false:

# Set this to true to turn on annotations with hypothes.is
annotations: false

You can customize hypothes.is by reading these configuration options. It is also a good idea to read these docs if you want to do more with hypothes.is. However, before trying to customize this feature you should read the customizing fastpages section for important caveats.

Subscribing with RSS

You can direct your readers to subscribe with RSS feeds. There are many RSS subscription services available on the internet. Some examples include:

  1. Feedrabbit
  2. Blogtrottr

Syntax Highlighting

fastpages overrides the default syntax highlighting of minima with the Dracula theme.

  • The default highlighting in fastpages looks like this:

    default-highlighting

  • However, you can make the syntax highlighting to look like this, if you choose:

    default-highlighting

    If you wish to revert to the light theme above, you can remove the below line in _sass/minima/custom-styles.scss

    @import "minima/fastpages-dracula-highlight";
  • If you don't like either of these themes, you can add your own CSS in _sass/minima/custom-styles.scss. See customizing fastpages for more details.

Dark Mode

This blog post describes how to enable Dark Mode for fastpages.

Adding Citations via BibTeX

Users who prefer to use the citation system BibTeX may do so; it requires enabling the jekyll-scholar plugin. Please see Citations in Fastpages via BibTeX and jekyll-scholar for instructions on implementing this.

Writing Blog Posts With Jupyter

Hide Input/Output Cells

Place the comment #hide at the beginning of a code cell and it wil hide both the input and the output of that cell.

A #hide_input comment at the top of any cell will only hide the input.

Furthermore, the hide input Jupyter Extension can be used to hide cell inputs or outputs, which will be respected by fastpages.

Collapsable Code Cells

You may want some code to be hidden in a collapsed element that the user can expand, rather than completely hiding the code from the reader.

  • To include code in a collapsable cell that is collapsed by default, place the comment #collapse at the top of the code cell.
  • To include code in a collapsable cell that is open by default, place the comment #collapse_show or #collapse-show at the top of the code cell.
  • To include the output under a collapsable element that is closed by default, place the comment #collapse_output or #collapse-output at the top of the code cell.

Embedded Twitter and YouTube Content

In a markdown cell in your notebook, use the following markdown shortcuts to embed Twitter cards and YouTube Videos.

> youtube: https://youtu.be/your-link
> twitter: https://twitter.com/some-link

Adding Footnotes

Adding footnotes in notebooks is a bit different than markdown. Please see the Detailed Guide To Footnotes in Notebooks.

Automatically Convert Notebooks To Blog Posts

  1. Save your notebook with the naming convention YYYY-MM-DD-*. into the /_notebooks or /_word folder of this repo, respectively. For example 2020-01-28-My-First-Post.ipynb. This naming convention is required by Jekyll to render your blog post.

    • Be careful to name your file correctly! It is easy to forget the last dash in YYYY-MM-DD-. Furthermore, the character immediately following the dash should only be an alphabetical letter. Examples of valid filenames are:

      2020-01-28-My-First-Post.ipynb
      2012-09-12-how-to-write-a-blog.ipynb
    • If you fail to name your file correctly, fastpages will automatically attempt to fix the problem by prepending the last modified date of your file to your generated blog post, however, it is recommended that you name your files properly yourself for more transparency.

  2. Commit and push your file(s) to GitHub in your repository's master branch.

  3. GitHub will automatically convert your files to blog posts. It will take ~5 minutes for the conversion process to take place. You can click on the Actions tab of your repo to view the logs of this process. There will be two workflows that are triggered with each push you make to your master branch: (1) "CI" and (2) "GH Pages Status". Both workflows must complete with a green checkmark for your latest commit before your site is updated.

  4. If you wish, you can preview how your blog will look locally before commiting to GitHub. See this section for a detailed guide on running the preview locally.

Writing Blog Posts With Markdown

If you are writing your blog post in markdown, save your .md file into the /_posts folder with the same naming convention (YYYY-MM-DD-*.md) specified for notebooks.

Writing Blog Posts With Microsoft Word

Save your Microsoft Word documents into the /_word folder with the same naming convention (YYYY-MM-DD-*.docx) specified for notebooks.

Note: alt text in Word documents are not yet supported by fastpages, and will break links to images.

Specifying front-matter for Word documents

fastpages does not have a robust way to specify front matter for Word documents. At the moment, you can only specify front matter globally for all Word documents by editing _action_files/word_front_matter.txt.

To specify unique front matter per Word document, you will need to convert Word to markdown files manually. You can follow the steps in this blog post, which walk you through how to use pandoc to do the conversion. Note: If you wish to customize your Word generated blog post in markdown, make sure you delete your Word document from the _word directory so your markdown file doesn’t get overwritten!

If your primary method of writing blog posts is Word documents, and you plan on always manually editing markdown files converted from Word, you are probably better off using fast_template instead of fastpages.

Running the blog on your local machine

See the development guide.

Using The GitHub Action & Your Own Custom Blog

The fastpages action allows you to convert notebooks from /_notebooks and word documents from /_word directories in your repo into Jekyll compliant blog post markdown files located in /_posts. Note: This directory structure is currently inflexible for this Action, as it is designed to be used with Jekyll.

If you already have sufficient familiarity with Jekyll and wish to use this automation in your own theme, you can use this GitHub Action by referencing fastai/fastpages@master as follows:

...

uses: fastai/fastpages@master

...

An illustrative example of what a complete workflow may look like:

jobs:
  build-site:
    runs-on: ubuntu-latest
    ...

    - name: convert notebooks and word docs to posts
      uses: fastai/fastpages@master

    ...

    - name: Jekyll build
      uses: docker://jekyll/jekyll
      with:
        args: jekyll build

    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      if: github.event_name == 'push'
      with:
        deploy_key: ${{ secrets.SSH_DEPLOY_KEY }}
        publish_branch: gh-pages
        publish_dir: ./_site

Note that this Action does not have any required inputs, and has no output variables.

Optional Inputs

  • BOOL_SAVE_MARKDOWN: Either 'true' or 'false'. Whether or not to commit converted markdown files from notebooks and word documents into the _posts directory in your repo. This is useful for debugging. default: false
  • SSH_DEPLOY_KEY: a ssh deploy key is required if BOOL_SAVE_MARKDOWN = 'true'

See the API spec for this action in action.yml

Detailed instructions on how to customize this blog are beyond the scope of this README. ( We invite someone from the community to contribute a blog post on how to do this in this repo! )

Contributing To Fastpages

Please see the contributing guide.

Upgrading Fastpages

Please see the upgrading guide.

FAQ

  • Q: Where are the markdown files in _posts/ that are generated from my Jupyter notebooks or word documents? A: The GitHub Actions workflow in this repo converts your notebook and word documents to markdown on the fly before building your site, but never commits these intermediate markdown files to this repo. This is in order to save you from the annoyance of your local environment being constantly out of sync with your repository. You can optionally see these intermediate markdown files by setting the BOOL_SAVE_MARKDOWN and SSH_DEPLOY_KEY inputs to the fastpages action in your .github/workflows/ci.yaml file as follows:
    ...

    - name: convert notebooks and word docs to posts
      uses: fastai/fastpages@master
      with:
        BOOL_SAVE_MARKDOWN: true
        SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }}

    ...
  • Q: Can I use fastpages for Jekyll docs sites or for things that are not Jekyll blog posts? A: At the moment, fastpages is a highly opinionated solution that works only for Jekyll blog posts. If you want to write documentation for your module or library with Jupyter notebooks, we suggest you use fastai/nbdev which is expressly built for this purpose.

  • Q: What is the difference between fast_template and fastpages? Which one should I use? A: Because fastpages is more flexible and extensible, we recommend using it where possible. fast_template may be a better option for getting folks blogging who have no technical expertise at all, and will only be creating posts using Github's integrated online editor.

Customizing Fastpages

fastpages builds upon the minima theme. If you want to customize the styling or layout of fastpages, you can find instructions in minima's README. It is a good idea to read the full contents of the README to understand the directory structure. Furthermore, it is a good idea to have a basic understanding of Jekyll before customizing your theme. For those new to Jekyll, the official docs are a good place to start. Concretely, you can override css in fastpages in _sass/minima/custom-styles.scss. NOTE that minima's "skins" feature is currently incompatible with fastpages' css settings.

If you choose to make customizations to fastpages It is possible that customizations you make could collide with current or future versions of fastpages and we recommend doing so only if you feel sufficiently comfortable with HTML and CSS.

Troubleshooting fastpages

Please see the troubleshooting guide.

fastpages's People

Contributors

albertvillanova avatar anushbhatia avatar byteshiva avatar chekos avatar dependabot[bot] avatar drscotthawley avatar hamelsmu avatar hnrkptrsn avatar igorkasianenko avatar invisprints avatar joedockrill avatar jph00 avatar kaakaa avatar kiendang avatar kngwyu avatar marcingminski avatar maxghenis avatar mikonapoli avatar mldurga avatar muellerzr avatar natikgadzhi avatar peaceiris avatar postmalloc avatar scottbrenner avatar sotaworks avatar tbnv999 avatar timvink avatar tljstewart avatar tylere avatar vishakbharadwaj94 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fastpages's Issues

Enable conversion out of _notebooks with free destination

Add an option to consider all notebooks that are not necessarily in the _notebooks. This can be useful for static generators other than Jekyll.

The option can be add initially as following:

inputs:
  ...
  BOOL_FREE_STRUCTURE:
    description: Either 'true' or 'false'.  Whether or not to consider all notebooks which are not necessarily located in _notebooks dir to be converted. If set to 'true' the generated markdown files will be located in the same source directory. This is useful for static website generators other than Jekyll.
    required: false
    default: false

Porting from older releases

As per the email generated when I cloned the fastpages repo I set up the SSH public and private keys

I set the cloned github repo to point to my custom domain

I copied the following over from the old repo

  1. my _config.yml
  2. index.md
  3. about.md
  4. _word directory contents

Issue:

The index and about pages render correctly and the example .md post in the _posts directory

But the other posts from the _word directory do not

Main page renders like this

image

I checked the CI/build site log and it reports a deploy error

ERROR: not found ACTIONS_DEPLOY_KEY, PERSONAL_TOKEN, or GITHUB_TOKEN

image

I grepped the source files but I'm not sure what I'm missing

image

Deploy failure due to "/root/.ssh/id_rsa": invalid format

I followed the instructions for setting up the deploy key, and secret environment variable, but am receiving a "/root/.ssh/id_rsa": invalid format error when deploying. Any ideas on what could be causing this?

 Deploy1s
and the repository exists.
Run peaceiris/actions-gh-pages@v2
/usr/bin/docker run --name e87b52c1e6a5f69eec4e969af6a4bd60e87b0d_ceeab3 --label e87b52 --workdir /github/workspace --rm -e ACTIONS_DEPLOY_KEY -e PUBLISH_BRANCH -e PUBLISH_DIR -e INPUT_EMPTYCOMMITS -e INPUT_KEEPFILES -e INPUT_FORCEORPHAN -e INPUT_USERNAME -e INPUT_USEREMAIL -e INPUT_COMMITMESSAGE -e INPUT_TAGNAME -e INPUT_TAGMESSAGE -e INPUT_TAGOVERWRITE -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e GITHUB_ACTIONS=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/finetune/finetune":"/github/workspace" e87b52:c1e6a5f69eec4e969af6a4bd60e87b0d
INFO: Deploy to keherri/finetune
INFO: setup with ACTIONS_DEPLOY_KEY
# github.com:22 SSH-2.0-babeld-849b9b5f
Cloning into '/github/home/ghpages_14933'...
Warning: Permanently added the RSA host key for IP address '140.82.113.3' to the list of known hosts.
Load key "/root/.ssh/id_rsa": invalid format
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Separate autogenerated posts from manually created posts.

Is your feature request related to a problem? Please describe.
When writing notebook posts locally I'm finding it frustrating that autogenerated .md posts created from notebooks are being mixed in with my manual .md posts. This is also a little confusing with the images copied over from the notebooks into the /images folder. This makes managing commits difficult because some files need to be included while others ignored. It also makes it difficult to clear the state of your site because you have to delete the autogenerated posts.

Describe the solution you'd like
It would be simple if the project followed a simple rule to never mix autogenerated code into folders that contain manually created files.

Describe alternatives you've considered
When preparing the files for jekyll copy all the files to a new temporary folder rather than an existing folder.

Additional context
None

User pages must be built from master branch

Hi all! I'm super excited for this! I'm writing a quick tutorial on how to get started with fastpages in spanish. As part of that I wanted to start from zero and I created a new github account and used the template to create the blog repo.

However, I cannot seem to change the Source from master to the gh-pages branch. The gh-pages branch is being built and published correctly, I just can't tell GitHub Pages to deploy from that branch instead of master and I get this message:

Screenshot_2020-02-25 paco-el-chato paco-el-chato github io(1)

The repo is paco-el-chato/paco-el-chato.github.io. I didn't have any problems doing this on my personal blog but (I think) that's because it was not deployed at chekos.github.io and it was not a user page.

Does anyone know how I could fix this? or if it's even possible?

Thanks in advance!

Docs/FAQ: why changing theme breaks everything

In _config.yml, if you make the one-line change,

#theme: minima
theme: jekyll-theme-cayman

...the blog builds but is reduced to nothing (...almost nothing. in my case one image remains, nothing else).

At some point, it would be awesome to have a FAQ topic on changing the theme to another one of the supported GitHub Pages Jekyll themes! I realize that's probably a low priority.

Difference between fast_template & fastpages

Hey team!

This looks amazing!

I was reading about fast_template yesterday and got the starter blog going.

Now I’ve seen this amazingness and I’m wondering what the difference is?

From what I’ve gathered so far, fastpages (here) incorporates nbdev natively?

A big thank you for all the hard wok.

Implement Optional Subscription For Readers

If readers want to subscribe, create an optional subscribe form. This one requires a bit more reseach as I think we can use Mailchimp but ideally i want a fully automated solution

Code syntax highlighting for Markdown posts

...the current color scheme renders most variable names and libraries in white text, on a background that is very light-colored. The result is unreadable. Example: see "More code" in https://drscotthawley.github.io/devblog3/2020/02/20/sample-markdown-post.html.

It's the same highlighting scheme (Dracula) used for the notebooks, but for the notebooks the background is dark, so it's not a problem.

Can someone suggest how to either enforce a darker background for markdown posts, or suggest a different highlighting scheme (and how to install it) that will render well for both notebooks and markdown posts?

Enable Creating and Organizing Series of Blog Posts

Many people split their blog post into multiple parts as a series of tutorials or as an ongoing subject/topic. It would be nice to have fastpages automatically handle organizing series by grouping them together, linking previous parts to future parts, etc.

My initial thoughts are that this would not be too hard. The front matter markdown could just have another field called "series" where you place the name of the series like so:

# "Title
...
- series: Working with NLP

This series could then be treated as a special tag for blog posts where when a new post gets added with the identical series name, that new blog post is treated as the next part in the series and the previous posts will get updated with links to it. Using the series as special tags also has the benefit of easily searching for all of the parts associated with a topic.

Let me know what you think and thanks for the awesome repo!

Support for embedded image objects

See #66

Copy and pasting comment by @drscotthawley:


I found a tricky interaction between nbdev & the fastpages build.

nbdev is replacing "<img src=" HTML code with Liquid "{% img src" tags.

This might not be a problem ordinarily, but when running with Liquid in fastpages, it can't handle long "src" strings.

So here's a question for both @sgugger and @hamelsmu:
Would it be better to NOT have nbdev translate the HTML "img src" tags into Liquid, or would it be better to provide fastpage's Liquid run with...whatever it needs to handle long src strings?

The original HTML code in question:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAACXCAYAAAC2qd/4AAAF4nRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMnd3dy5kcmF3LmlvJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDE5LTEyLTIwVDIxJTNBMjQlM0ExMS45MjRaJTIyJTIwYWdlbnQlM0QlMjJNb3ppbGxhJTJGNS4wJTIwKE1hY2ludG9zaCUzQiUyMEludGVsJTIwTWFjJTIwT1MlMjBYJTIwMTBfMTVfMCklMjBBcHBsZVdlYktpdCUyRjUzNy4zNiUyMChLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyklMjBDaHJvbWUlMkY3OS4wLjM5NDUuODglMjBTYWZhcmklMkY1MzcuMzYlMjIlMjBldGFnJTNEJTIyWnlaOEUxZjNhMW9ocEFIRDJjWEslMjIlMjB2ZXJzaW9uJTNEJTIyMTIuNC4zJTIyJTIwdHlwZSUzRCUyMmdvb2dsZSUyMiUyMHBhZ2VzJTNEJTIyMSUyMiUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMm9vV2FBMW83X2ljR18zc1RKd2ZsJTIyJTIwbmFtZSUzRCUyMlBhZ2UtMSUyMiUzRTdWZGRiNXN3RlAwMVNOdERJckFEcEklMkY1S052REpsWHFReDhuRnh5d1lqQXpUa2o2NjNlTlRjSkgwcTVWTjJsVG8wakI1MTdmYTg3eHNSd0hyJTJGTERGMG5LN0x0SUtIZVFteHdjdkhZUThtYnpBSDQwY3JTSTN5S3BaSW5GenNBOWU2SVdkQzI2WXdtdGVvbEtDSzVZMlFkalVSUTBWajJNU0NucWZ0cEc4SDdYa3FSMEJOekhoSSUyRlJCNWFvektCejN6M2pYeWxMczdhejU5cElUdHBrVzZMS1NDSnFBelU1JTJCTmJCS3ltRU1rJTJGNVlVVzVacSUyRmx4UlNLcmtSUEM1TzBVTDh6SWJrcnFaOCUyQnBkOFc5ZE1tSWclMkZiYmVSTzVxYktudkNkZldFSEJSenFMUk8yMTR0V1I4dEU4SE9uVjdwVTlLQW1oTE8wY1BBQ01qamRhTGpodGxDVHFsRlFCN3l3UERTQmRpWThwZmEzNlpCNUZ4dTh0a3hWa3VKNm9RM0pHVCUyQmFVaEFpZVFrUm14Q0xuV1JVUXFTZzlURG9vRld6cld5S0h1U2lFTkF0cHMlMkIlMkZyd25VZGxmbzBBdzJSUk41SlBFMmxXSlhKSk5ZY0NGTldLYVBuNUR2bXliZGg4OVhYbnltdiUyRjVxVDJNblhPNmRjUDJEV2RCeUFydkEwTktuQ21CTiUyQmdoc3RHNVIxQ01UYWIyMVdDcm5BSGlhY0NYRmxxN00lMkJ0ZUZLRFFmRzhiNUFMS2JaQjNEQmdVSzhYSlBwV0pncllVTjVDeEpkSnRsblRGRjd3Mno2eHBPRXNBYWxxamV1MjR6VWtReG9XZE5zR3ZGdGFlRkY1N1dyVHZRdzFXRGVDZmJ3WUZGUlU2VlBFS0tuV0Q5NDlxakN0dGhmYlo5TUp1NnlLQlp4JTJGVHRSR0xQbXZSVSUyQm14SGVMQ09mSVU3Z3c5MyUyRnF2dURKZGcwTWNOWkM3QW54OW1mVyUyQnp6b0pwaU56T0olMkJpWk4lMkZDbUliN3BmUHlSbVQyRXBpMzhWOXdjWG5EelFEOWFKQXQ5YWRGQ2NGSlZMSDVPVFFmaFdSaEZ3U1dLOVhnZ3NabmMzbUx3U1FlYWpLNUFMNnJRNGJHOUNuVTViREZKT2V5RWZiJTJGOEpXSnRoenZCb1BGSjVNQ2QzdUNlcnA0M1VLZUNJeUNtZGw3MzlqTW81Y0haUGFqbEQwb3BJbE9xUnFVYXJVJTJCdiUyRm5iNWIlMkY2QSUyRk83YTg2UG9mNVVmbzZGa0FYNmIlMkJ2T1IlMkJCaSUyRmslMkZnd1BOJTJGaFRmcjVyeEMlMkIlMkZRVSUzRCUzQyUyRmRpYWdyYW0lM0UlM0MlMkZteGZpbGUlM0XlLOgaAAAOIklEQVR4Xu2de4zcVRXHv2d2K7Z0H8BuRUCJ4htMKjYxKpiKbHchFB8R/jDSnRaFaFRa4wMTdX+jEQU1QH03WmapMSYYNQFlt60KkWqiqRG1RE1ENEagW6HdLa+2O8ecmd9uZ2Z3Hndmfs/53n826dzfvXc+53z7u3PvOfcKWEiABJwIiFNtViYBEgBFQycgAUcCFI0jMFYnAYqGPkACjgQoGkdgrE4CFA19gAQcCVA0jsBYnQQoGvoACTgSoGgcgbE6CVA09AEScCRA0TgCY3USoGjoAyTgSICicQTG6iRA0dAHSMCRAEXjCIzVSYCioQ+QgCMB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" style="cursor:pointer;max-width:100%;" onclick="(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1&edit=_blank');}})(this);"/>

This is getting converted by nbdev to

{% include image.html style="cursor:pointer;max-width:100%;" onclick="(function(img){if(img.wnd!=null&amp;&amp;!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&amp;&amp;evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('<a href="https://www.draw.io/?client=1&amp;lightbox=1&amp;edit=_blank&#39;);}})(this">https://www.draw.io/?client=1&amp;lightbox=1&amp;edit=_blank&#39;);}})(this</a>);" file="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAACXCAYAAAC2qd/4AAAF4nRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMnd3dy5kcmF3LmlvJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDE5LTEyLTIwVDIxJTNBMjQlM0ExMS45MjRaJTIyJTIwYWdlbnQlM0QlMjJNb3ppbGxhJTJGNS4wJTIwKE1hY2ludG9zaCUzQiUyMEludGVsJTIwTWFjJTIwT1MlMjBYJTIwMTBfMTVfMCklMjBBcHBsZVdlYktpdCUyRjUzNy4zNiUyMChLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyklMjBDaHJvbWUlMkY3OS4wLjM5NDUuODglMjBTYWZhcmklMkY1MzcuMzYlMjIlMjBldGFnJTNEJTIyWnlaOEUxZjNhMW9ocEFIRDJjWEslMjIlMjB2ZXJzaW9uJTNEJTIyMTIuNC4zJTIyJTIwdHlwZSUzRCUyMmdvb2dsZSUyMiUyMHBhZ2VzJTNEJTIyMSUyMiUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMm9vV2FBMW83X2ljR18zc1RKd2ZsJTIyJTIwbmFtZSUzRCUyMlBhZ2UtMSUyMiUzRTdWZGRiNXN3RlAwMVNOdERJckFEcEklMkY1S052REpsWHFReDhuRnh5d1lqQXpUa2o2NjNlTlRjSkgwcTVWTjJsVG8wakI1MTdmYTg3eHNSd0hyJTJGTERGMG5LN0x0SUtIZVFteHdjdkhZUThtYnpBSDQwY3JTSTN5S3BaSW5GenNBOWU2SVdkQzI2WXdtdGVvbEtDSzVZMlFkalVSUTBWajJNU0NucWZ0cEc4SDdYa3FSMEJOekhoSSUyRlJCNWFvektCejN6M2pYeWxMczdhejU5cElUdHBrVzZMS1NDSnFBelU1JTJCTmJCS3ltRU1rJTJGNVlVVzVacSUyRmx4UlNLcmtSUEM1TzBVTDh6SWJrcnFaOCUyQnBkOFc5ZE1tSWclMkZiYmVSTzVxYktudkNkZldFSEJSenFMUk8yMTR0V1I4dEU4SE9uVjdwVTlLQW1oTE8wY1BBQ01qamRhTGpodGxDVHFsRlFCN3l3UERTQmRpWThwZmEzNlpCNUZ4dTh0a3hWa3VKNm9RM0pHVCUyQmFVaEFpZVFrUm14Q0xuV1JVUXFTZzlURG9vRld6cld5S0h1U2lFTkF0cHMlMkIlMkZyd25VZGxmbzBBdzJSUk41SlBFMmxXSlhKSk5ZY0NGTldLYVBuNUR2bXliZGg4OVhYbnltdiUyRjVxVDJNblhPNmRjUDJEV2RCeUFydkEwTktuQ21CTiUyQmdoc3RHNVIxQ01UYWIyMVdDcm5BSGlhY0NYRmxxN00lMkJ0ZUZLRFFmRzhiNUFMS2JaQjNEQmdVSzhYSlBwV0pncllVTjVDeEpkSnRsblRGRjd3Mno2eHBPRXNBYWxxamV1MjR6VWtReG9XZE5zR3ZGdGFlRkY1N1dyVHZRdzFXRGVDZmJ3WUZGUlU2VlBFS0tuV0Q5NDlxakN0dGhmYlo5TUp1NnlLQlp4JTJGVHRSR0xQbXZSVSUyQm14SGVMQ09mSVU3Z3c5MyUyRnF2dURKZGcwTWNOWkM3QW54OW1mVyUyQnp6b0pwaU56T0olMkJpWk4lMkZDbUliN3BmUHlSbVQyRXBpMzhWOXdjWG5EelFEOWFKQXQ5YWRGQ2NGSlZMSDVPVFFmaFdSaEZ3U1dLOVhnZ3NabmMzbUx3U1FlYWpLNUFMNnJRNGJHOUNuVTViREZKT2V5RWZiJTJGOEpXSnRoenZCb1BGSjVNQ2QzdUNlcnA0M1VLZUNJeUNtZGw3MzlqTW81Y0haUGFqbEQwb3BJbE9xUnFVYXJVJTJCdiUyRm5iNWIlMkY2QSUyRk83YTg2UG9mNVVmbzZGa0FYNmIlMkJ2T1IlMkJCaSUyRmslMkZnd1BOJTJGaFRmcjVyeEMlMkIlMkZRVSUzRCUzQyUyRmRpYWdyYW0lM0UlM0MlMkZteGZpbGUlM0XlLOgaAAAOIklEQVR4Xu2de4zcVRXHv2d2K7Z0H8BuRUCJ4htMKjYxKpiKbHchFB8R/jDSnRaFaFRa4wMTdX+jEQU1QH03WmapMSYYNQFlt60KkWqiqRG1RE1ENEagW6HdLa+2O8ecmd9uZ2Z3Hndmfs/53n826dzfvXc+53z7u3PvOfcKWEiABJwIiFNtViYBEgBFQycgAUcCFI0jMFYnAYqGPkACjgQoGkdgrE4CFA19gAQcCVA0jsBYnQQoGvoACTgSoGgcgbE6CVA09AEScCRA0TgCY3USoGjoAyTgSICicQTG6iRA0dAHSMCRAEXjCIzVSYCioQ+QgCMB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" %}

Search improvements

Fastpages provides search features built with lunr.js, thanks @hamelsmu!

Following up on the initial version, Hamel asked if there's a way to improve it, and provided Just the Docs repo as an example. Here are a few things that would be great to improve:

  • Make sure site load speeds stay fast by decoupling search indexing from the layout.

Just the Docs, interestingly, doesn't build the index on every page, but provides a JSON with the site content that the site front-end can grab when the user say focuses the search field: https://github.com/pmarsceill/just-the-docs/blob/master/assets/js/search-data.json

  • Add excerpts highlighting in the search results page.

Here's the Just the Docs version of this, it's pretty sophisticated. We don't need it to be that fancy, but we want each search result to have the matched post title, and the paragraph (or part) with the matched words highlighted, rendered in the search results. If something in the code block got matched — than the corresponding code block, or it's reasonable part (indent-based?) should be rendered.

Bonus points:

  • Clean up, vendor, and make a clear guide on JS dependency management.

What libraries is fastpages using, how do we bundle them up, and should we maybe introduce a minimal JS bundler (parcel?) to manage the front-end deps?

Clustering fastpages repo?

I found that GitHub provides a repo with disk quota of 1GB.

Blogging sometimes requires a lot or disk spaces because of the long history (even people keep media files including images in a cloud). Also, some people want to keep media files in the repo as well.

There could be some solutions like..

  • (short term) specify Google Drive account. Whenever a user uploads images to the /images folder, fastpages automatically uploads them to the Google Drive. Of course the link should be generated and replace the local reference from the blog post.
  • (long term) clustering blog repos from fastpages to form one large blog. This could be somewhat related to pagination issue. For instance, one repo is for the year of 2020 and the other repo is for 2021, then create links for each to switch back and forth.

This seems out of the scope for this project. I just wanted to hear what other people think about my idea.
Thank you

Add a How-To section

Would be nice to have an ever-growing how-to section added to the repo. I'm familiar with jekyll but strugging to, for example, find out how to change the header of the page so I can replace my domain name with an image.

Other examples may include:

  • How to add your own favicon
  • How to make your blog width 100%
    ...

[20200229] - Local Environment in Window

#28 Please include the following information
I get these error for

docker-compose down || true;
Removing fastpages_converter_1 ... done
Removing fastpages_fastpages_1 ... done
Removing fastpages_watcher_1   ... done
Removing fastpages_jekyll_1    ... done
Removing fastpages_jupyter_1   ... done
Removing network fastpages_default
docker-compose up
Creating network "fastpages_default" with the default driver
Creating fastpages_jekyll_1    ... done
Creating fastpages_watcher_1   ... done
Creating fastpages_jupyter_1   ... done
Creating fastpages_converter_1 ... done
Creating fastpages_fastpages_1 ... done
Attaching to fastpages_converter_1, fastpages_jupyter_1, fastpages_watcher_1, fastpages_fastpages_1, fastpages_jekyll_1
converter_1  | standard_init_linux.go:211: exec user process caused "no such file or directory"
fastpages_1  | standard_init_linux.go:211: exec user process caused "no such file or directory"

Then I find out that multiple links are link to /fastpages/...
Which caused the problem as this does not match my directory.

My current solution is to

  1. Steps to reproduce the problem
    Window 10
    make server
  2. A link to your repository where error is occuring
    The Two dockers cannot start successfully
    standard_init_linux.go:211: exec user process caused "no such file or directory
    image

Feature Brainstorming, Documentation, etc. [ May Graduate These to Separate Issues ]

This is a running list of feature requests, we don't necessarily know if we will work on these but making notes in a consolidated place

  • Will [interactive] Plotly charts render? I have a feeling I know what Altair was chosen, but I figured it couldn't hurt to ask ( @jeremyabramson ) A: No, Plot.ly doesn't render without jumping through lots of hoops
  • Are footnotes supported in notebook (not MD) posts? It'd be cool if they were ( @jeremyabramson ) A: YES They are
  • Any way of enabling line numbering in either code blocks for MD posts or cells in Jupyter posts? That'd certainly be very helpful for tutorial posts. ( @jeremyabramson )
  • Tips and tricks blog posts about writing fastpages blog posts See this much of which is outdated and needs correction b/c of recent fixes
  • Microsoft word demo blog post
  • Chart comparing feature differences b/w Word vs. Markdown vs. Jupyter

[29-02-2020]: [Markdown processor isn't "smart"]

Prerequisites for filing a bug

  • Did you run the local development server as indicated in the development guide?
    • Please include any useful logs or error messages from that
  • Have you searched opened / closed issues on this repo for a similar problem?
  • Have you searched the fastai forums for a similar problem?

Please include the following information

  1. Steps to reproduce the problem
    Create a hyperlink in your markdown post containing [] or | in the text.
  2. A link to your repository where error is occuring
    Private repository for now but the relevant post can be seen here https://aadibajpai.github.io/ccx.org/2019/09/03/blog-posts-our-students.html
    Look at the link rendering errors.
  3. A link to the notebook or markdown file where the error is occuring
    https://pastebin.com/YFgfruYz
  4. If the error is happening in GitHub Actions, a link to the specific error along with how you are able to reproduce this error.
  5. A screenshot / dump of relevant logs or error messages you are receiving from your local development environment.

When I preview the markdown file in Sublime, its syntax highlighting is smart enough to parse the hyperlinks but I assume fastpages renderer has a problem—the | gets interpreted as tables and the [] interfere with the [] from the hyperlink syntax.

image

Expected behaviour would be that tags are matched.

Escape Liquid Tags Present in Code / Code Output

I realize fastpages currently is only designed to work with Altair. Altair doesn't support 3D graphs, but plot.ly does. One of my notebooks uses plot.ly for interactive 3D graphs.

With a one-line change to nbdev (https://github.com/drscotthawley/nbdev/blob/master/nbdev/export2html.py), the embedded plot.ly 3D interactive graphs work fine, and the resulting html from nbdev/export2html shows these plots great. (Example HTML output of notebook from nbdev/export2html: https://hedges.belmont.edu/~shawley/2019-12-21-PCA-From-Scratch.html)

The problem is that further down in the fastpages build, the 'Rendering Liquid' step tries to treat some of the double-curly-brace javascript generated for plot.ly as if it were Liquid tags:

  Rendering Liquid: _posts/2019-12-21-PCA-From-Scratch.md
  Liquid Exception: Liquid syntax error (line 113): Variable '{{ x.observe(notebookContainer, {childList: true}' was not properly terminated with regexp: /\}\}/ in /github/workspace/_posts/2019-12-21-PCA-From-Scratch.md

The javascript code it's complaining about looks like this:

   if (notebookContainer) {{
       x.observe(notebookContainer, {childList: true});
   }}

I have no experience with Liquid, at all. My old Jekyll/Pages blog doesn't use it, so there was no conflict. But FastPages does use it. Is there any way to 'tell Liquid' to leave the plot.ly javascript alone and not try to interpret it as a tag? (I've googled around trying to solve this, but so far, no dice.)

Or perhaps there's a way to disable Liquid for certain files but not for the whole fastpages blog?

Run log: https://github.com/drscotthawley/devblog2/runs/451929186?

Questions about runtime/notebook statefulness

Not sure these are things that ar relevant for fastpages but I'm going to leave this open for a bit and think about if there is anything we can do in this regard

Feedback from @dansbecker:

The big caveats would be around runtime environment. I like how someone can run a notebook from this platform on colab, but it's unclear whether I can ensure they have the same runtime environment I had. And debugging environment differences sounds annoying.

Is there a way to upload a notebook, call a github action to re-run the notebook using a requirements.txt I provide, and then publish the result of that?

In addition to being a path towards a shared environment, it'd also address the problems with notebook statefulness.

Error in the action execution: ./_action_files/word2post.sh not found

I added the following .github/workflows/converter.yaml with the following content:

name: Convert Notebooks
on:
  page_build

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: convert notebooks and word docs to posts
      uses: fastai/fastpages@master

But in execution I get the following error:

Screenshot_2020-02-13 A-Alaa CV2020

[2020 Feb, 25]: [Jupyter Notebooks not showing up in blog form]

Regular Markdown posts posted in _posts show up correctly in the Blog.
Jupyter Notebook Posts don't show up in the Blog , this includes the example Jupyter Notebook provided
image

This is what shows up on the website (the one post there is made in regular markdown.
image

Investigate nbdev handling of external urls and update documentation accordingly

My notebook post (https://github.com/drscotthawley/devblog2/blob/master/_notebooks/2019-12-21-PCA-From-Scratch.ipynb) contains the line

![splash pic i made](https://i.imgur.com/vKiH8As.png)

(This is using an external image URL because originally this was a Colab notebook.)

This is apparently causing an error in the build phase called "convert notebooks and word docs to posts", which fails with

[Errno 2] No such file or directory: '/github/workspace/_notebooks/https:/i.imgur.com/vKiH8As.png'

This may be more appropriate to file as an nbdev issue, such as in nbdev's copy_images(), but I can't see from the docker run command before the error what the calling sequence really is, so for now, this Issue is going here.

I want to show you the log from this build action, but for some reason I'm only able to copy & past the last screen of output

Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.4.0->nbdev) (0.15.7)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/site-packages (from importlib-metadata; python_version < "3.8"->jsonschema!=2.5.0,>=2.4->nbformat>=4.4.0->nbdev) (2.2.0)
Building wheels for collected packages: pyyaml
  Building wheel for pyyaml (setup.py): started
  Building wheel for pyyaml (setup.py): finished with status 'done'
  Created wheel for pyyaml: filename=PyYAML-5.3-cp37-cp37m-linux_x86_64.whl size=44228 sha256=2849b70c15d9a6287c040494aacf5fce4dbc78c0f012589fdbaaaf42a88be977
  Stored in directory: /root/.cache/pip/wheels/8a/55/a4/c0a81d27c33462cfdcb904db018f5550197e88b2b6b85beed2
Successfully built pyyaml
Installing collected packages: pyparsing, packaging, pyyaml, fastscript, nbdev
Successfully installed fastscript-0.1.4 nbdev-0.2.11 packaging-20.1 pyparsing-2.4.6 pyyaml-5.3
Removing intermediate container 777fa6e7fb4e
 ---> 785732a2fae1
Step 9/13 : WORKDIR /fastpages
 ---> Running in b471877f7bcf
Removing intermediate container b471877f7bcf
 ---> 7a70164df948
Step 10/13 : COPY . .
 ---> ae0df79ca46c
Step 11/13 : RUN chmod u+x action_entrypoint.sh
 ---> Running in 9e435c1efb7b
Removing intermediate container 9e435c1efb7b
 ---> 1fea6b18ebe0
Step 12/13 : RUN chmod u+x word2post.sh
 ---> Running in 0aab46f15a33
Removing intermediate container 0aab46f15a33
 ---> 66431beca583
Step 13/13 : CMD [ "/fastpages/action_entrypoint.sh" ]
 ---> Running in c3b8d4d4c536
Removing intermediate container c3b8d4d4c536
 ---> b2f73f74387b
Successfully built b2f73f74387b
Successfully tagged e87b52:3234fc1855fc53ec9dac003860ef10bb
/usr/bin/docker run --name e87b523234fc1855fc53ec9dac003860ef10bb_c377e6 --label e87b52 --workdir /github/workspace --rm -e INPUT_BOOL_SAVE_MARKDOWN -e INPUT_SSH_DEPLOY_KEY -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e GITHUB_ACTIONS=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/devblog2/devblog2":"/github/workspace" e87b52:3234fc1855fc53ec9dac003860ef10bb
Agent pid 7
converting: _notebooks/2019-12-21-PCA-From-Scratch.ipynb
[Errno 2] No such file or directory: '/github/workspace/_notebooks/https:/i.imgur.com/vKiH8As.png'
Traceback (most recent call last):
  File "/fastpages/nb2post.py", line 36, in <module>
    export2html.notebook2html(fname='_notebooks/*.ipynb', dest='_posts/', template_file='/fastpages/fastpages.tpl')
  File "/usr/local/lib/python3.7/site-packages/nbdev/export2html.py", line 426, in notebook2html
    raise Exception(msg + '\n'.join([f.name for p,f in zip(passed,files) if not p]))
Exception: Conversion failed on the following:
2019-12-21-PCA-From-Scratch.ipynb

The URL for this run is https://github.com/drscotthawley/devblog2/runs/449901792

[2020-02-27]: [Notebook conversion to blog post not showing up]

Prerequisites for filing a bug

  • Did you run the local development server as indicated in the development guide?
    • Please include any useful logs or error messages from that
  • Have you searched opened / closed issues on this repo for a similar problem?
  • Have you searched the fastai forums for a similar problem?

Please include the following information

  1. Steps to reproduce the problem
    I placed 2020-0227-*.ipynb file in _notebook which has 791 KB capacity. It failed to show up in the blog page. Am I missing something here are there any limit to notebook capacity?

image

image

I see that it has skipped because of future date, I have put the naming convention as per my local time IST. I guess the github action might be running in different time zone than mine. Any resolution for this ?

  Skipping: _posts/2020-02-27-Diagram-as-Code.md has a future date

Reference log
https://github.com/byteshiva/blog/runs/470708733?check_suite_focus=true

Add an option to bypass the Jekyll blog naming convention (no date restriction)

Add an option to enable using custom filenames without forcing the addition of the date as prefix. This can be useful for other static website generators.

Initially the option can be added as following:

inputs:
  ...
  BOOL_FORCE_DATE:
    description: Either 'true' or 'false'.  Whether or not to force the date prefix for the markdown generated files from the notebooks.
    required: false
    default: true

Automate setup of new blog

Currently there are a lot of steps necessary to set up a new blog that need to be manually completed.

It would be great if some or all of them could be automated. e.g. perhaps there could be a little python script or something in the repo root that, after you generate from the template and clone, you could run the script, it would ask you a few questions, and then complete the remaining steps for you. I haven't checked whether all the steps are available thru APIs or not.

The first PR couldn't be generated

I have followed the instructions from the README.md,

  • Generate a copy of this repo by clicking on this link.
  • GitHub Actions will automatically open a PR on your new repository ~ 30 seconds after the copy is created. Follow the instructions in that PR to continue.

but I got the following error during the setup process.

Screen Shot 2020-02-22 at 2 59 44 PM

Provide users with a path to automated upgrade

  • merges upstream master into their repo on a new branch
  • open a PR
  • user has to fix conflicts?

@jph00 can you think of a nice workflow where people should upgrade? Is git merge/fix conflicts the best route, you think?

Deploying without ssh

Hi! I know this template is in active development (I'm so excited for it!) but I already started using it this morning and I could not figure out how to set up the ssh keys.
This is not a complaint - I'm sure it's easy to figure out if your not as impatient as I am lol

Anyways, I wanted to leave this issue so that others who may have problems too can do what I did if they so want to.

This template is using peaceiris/gh-pages GitHub Action and perusing the repo I noticed that you can use a personal token instead of ssh and it works just fine.

I followed the instructions here https://github.com/peaceiris/actions-gh-pages/blob/master/README.md#%EF%B8%8F-personal_token

Thanks for the awesome tool! fastpages and fast_template are amazing!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.