Skip to content
zap

GitHub Action

Deploy Nikola to GitHub Pages

v8 Latest version

Deploy Nikola to GitHub Pages

zap

Deploy Nikola to GitHub Pages

Build the site using Nikola and deploy to GitHub Pages

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Deploy Nikola to GitHub Pages

uses: getnikola/nikola-action@v8

Learn more about this action in getnikola/nikola-action

Choose a version

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 = {}