#+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. echo "post-receive: Creating directory and subdirs 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 echo "post-receive: Cleaning the /public directory." rm -rf $GIT_WORK_TREE/public # Update the modules in case of changes and pull the new pages echo "post-receive: pulling git repo and submodules" cd $GIT_WORK_TREE && git pull --recurse-submodules # Generate the site with hugo echo "post-receive: running hugo" cd $GIT_WORK_TREE && hugo # Fix any permission problems. echo "post-receive: fixing permissions" 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 deployment complete" #+end_src