GitHub enables the delivery of static contents using GitHub Pages. That is, you create a GitHub repository and serve it as a regular static website. For most use cases I need, this is more than enough.
I use Pelican to create a static website from .md
files. This content resides within the master
branch of my repository and consists of theme folder, content (where my blog posts are saved), Makefile
and some configuration files. Since I'm serving my website to a custom domain (and not just romunov.github.io), I also have a ./content/extra/CNAME
entry with biolitika.si
for the re-routing to work.
To get the GitHub workflow running, I created a .github/workflows/build-blog.yml
file with the following content:
name: Deploy biolitika blog
on:
push:
branches:
- master
jobs:
build_job:
name: Deploy blog
runs-on: ubuntu-latest
steps:
- name: Install Python
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Checkout website source
id: checkout-master
uses: actions/checkout@v2
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: pelican-4.2.0-${{ hashFiles('requirements.txt') }}
restore-keys: |
pelican-4.2.0-
- name: Install Pelican
run: |
pip install -r requirements.txt
- name: Run Pelican
id: run-pelican
run: |
pelican content --output docs --settings publishconf.py
- name: Push to GitHub pages
id: push-to-gh-pages
run: |
git config --global user.name "my username"
git config --global user.email "myemail@provider.com"
git add docs/
git commit --amend --no-edit
git push origin master:deploy --force
Once you commit this file, a new Workflow should appear in GitHub Actions tab.
The detail important for this case is that once Pelican creates a docs/
folder, new changes are pushed to a new branch called deploy
. I have configured this repository so that the static content is served from deploy
branch, docs/
folder.
Every time I submit new commit(s), workflow is triggered (on push) and new contents delivered.