Zine
Deploying on GitHub Pages
About
This guide assumes that you’re already familiar with GitHub Pages. Please refer the official GitHub Pages documentation for more info.
1. Use GitHub Actions
GitHub Actions runner have an inherent overhead and, since Zine is a collection of tools that gets compiled on-demand, your runner will need to do some work that wouldn’t be necessary with a single-executable tool.
Luckily, the build will be cached automatically by using mlugg/setup-zig.
This site currently builds in 25-35 seconds, of which 12 are spent setting up Zig, and 2 for the actual site build (the rest is GitHub Pages overhead).
.github/workflows/gh-pages.yml
name: github pages
on:
push:
branches:
- main # Set a branch to deploy
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Change if you need git info
- name: Setup Zig
uses: mlugg/setup-zig@v1
with:
version: 0.13.0
- name: Build
run: zig build --summary new
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/main'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./zig-out
2. Build locally
A more manual, but faster approach is to build the website locally and commit it to the correct branch/subdir.
Currently Zine doesn’t offer any help automating this process, but in the future it might.
Warning
Currently Zine doesn’t clean zig-out/
across rebuilds so you will have to do it manually.