My personal website.
archetypes | ||
assets | ||
content | ||
resources/_gen/assets | ||
static | ||
themes | ||
.gitignore | ||
.gitmodules | ||
.hugo_build.lock | ||
go.mod | ||
go.sum | ||
hugo.yaml | ||
README.org | ||
update.sh |
Bajsicki.com
This is the git for my personal website. Nothing to see here, just pretty vanilla hugo stuff.
Deployment
I'm using a git hook to automatically purge and re-build the /public
directory after each commit. I don't get enough traffic for this to be an inconvenience.
I used some of this article by Jason Murray to help me understand how git hooks work. I'm running Forgejo, and this is a much more elegant and simple solution when compared to running Actions or other CI/CD tools.
The post-receive hook is like so:
#!/bin/bash
# Directory on the server where the website will be mapped.
export GIT_WORK_TREE=/srv/bajsicki.com
echo `pwd`
echo "post-receive: Generating https://bajsicki.com with Hugo..."
# Create the directory and all subdirectories if they don't exist.
mkdir -p $GIT_WORK_TREE
chmod 755 $GIT_WORK_TREE
# Remove any files already in the public directory, a fresh copy will be generated by hugo
rm -rf $GIT_WORK_TREE/public
# Generate the site with hugo
cd $GIT_WORK_TREE && chmod +x update.sh
cd $GIT_WORK_TREE && ./update.sh
# Fix any permission problems.
find $GIT_WORK_TREE/public -type f -print | xargs -d '\n' chmod 644
find $GIT_WORK_TREE/public -type d -print | xargs -d '\n' chmod 755
echo "post-receive: Hugo site generation complete"
The update.sh
script is as dead simple as things get.
#!/usr/bin/env sh
cd themes/hugo-tufte/
git reset --hard && git pull origin main -f
cd ../..
git reset --hard && git pull origin main -f
hugo