50 lines
1.6 KiB
Org Mode
50 lines
1.6 KiB
Org Mode
#+title: 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 [[https://jasonmurray.org/posts/2020/githugogen/][this article]] by Jason Murray to help me understand how git hooks work. I'm running [[https://forgejo.org/][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:
|
|
|
|
#+begin_src sh
|
|
#!/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"
|
|
#+end_src
|
|
|
|
The ~update.sh~ script is as dead simple as things get.
|
|
|
|
#+begin_src sh
|
|
#!/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
|
|
|
|
#+end_src
|