Skip to content

GitHub Action for building a Nikola site and deploying it to GitHub Pages

License

Notifications You must be signed in to change notification settings

getnikola/nikola-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

getnikola/nikola-action: a GitHub Action for building a Nikola site and deploying it to GitHub Pages.

This GitHub Action can build and deploy a Nikola website.

Current version: getnikola/nikola-action@v8

Usage

Full tutorial on the Nikola blog: Automating Nikola rebuilds with GitHub Actions

Short version:

  1. Create a repository with a Nikola site.
  2. Configure nikola github_deploy. Build and deploy your site locally first.
  3. Ensure the correct branch for deployment is set on GitHub (repository settings). Refer to this guide.
  4. Create a .github/workflows/main.yml file with the Sample Workflow.

Sample Workflow

on: [push]

jobs:
  nikola_build:
    runs-on: ubuntu-latest
    name: 'Deploy Nikola to GitHub Pages'
    steps:
    - name: Check out
      uses: actions/checkout@v2
    - name: Build and Deploy Nikola
      uses: getnikola/nikola-action@v4
      with:
        dry_run: false

Options

  • dry_run - if set to true only page build is performed, deploy is skipped

Extras

By default, the action will install the latest stable release of Nikola[extras]. If you want to use the bleeding-edge version from master, or want to install some extra dependencies, you can provide a requirements.txt file in the repository.

Caveats

The action will attempt to import conf before installing Nikola or your requirements. If your conf.py has any imports outside of stdlib, you need to wrap those with a try-except block. For example, if you want to use filters, your conf.py should have this:

try:
    from nikola import filters
    FILTERS = {
        ".html": [filters.typogrify],
        ".js": [filters.closure_compiler],
        ".jpg": ["jpegoptim --strip-all -m75 -v %s"],
    }
except ImportError:
    FILTERS = {}