2.9 KiB
date | title | description | thumbnail | article |
---|---|---|---|---|
2024-10-08T15:33:49-07:00 | Easier Updates Finally | Back on track to updating things normally | /img/dev/hammer-wrench.png | true |
On Updating this Site
For a while now I've been updating this whole site manually since I took down my old Fargate + S3 infrastructure. Even though that made updating the site super easy it did mean that I was basically totally vendor locked and switching to a new provider like Vultr was a massive pain.
Now that I have my own Git server and CI/CD with that Git server I have a setup that let's me comfortably update my stuff without being totally locked into someone else's CI stuff. Gitlab is great but I really wanted my own thing so now I'm on Gitea basically.
Ergonomics of the new pipeline
Because Gitea uses the same type of workflow files as Github I can literally do the following:
name: Build and Deploy Resume Site
on:
push:
branches:
- master
jobs:
setup-website-content:
runs-on: ubuntu-latest
container:
image: shockrah/hugo
steps:
- run: git init
- run: git remote add origin https://git.shockrah.xyz/shockrah/temper-tv.git
- run: git pull origin master
- name: Build website content
run: cd main-site && pwd && ls -a && hugo
- name: Copy files with rsync
uses: tempersama/rsync-copy@2.6
with:
host: shockrah.xyz
username: ${{ secrets.USER }}
source: "main-site/public/"
destination: /opt/nginx/temper.tv/
key: ${{ secrets.PRIVATE_KEY }}
General steps are basically ( per pipeline run ):
- Clone the repo
- Run
hugo
to build all the content - Copy files over using rsync Github action that I wrote myself
The last part was a bit tricky to get working with Gitea in a container, acceptable key distribution, and user administration. Ended up working out and now I have my own Github action for Rsync which is pretty neat.
Wait why not just ansible/scp?
I'm not using ansible because I'm just copying files... I don't need such a massive tool to accomplish that; even if I do have an ansible dockerhub image that works. While I could in theory keep a super up to date and clean transfer flow with Ansible... this is a short meme blog that doesn't need that much engineering :)
I tried SCP ( and it worked ) but I ran into the issue that SCP doesn't copy directory trees which makes copying static site structures super annoying.
You could tar the site then scp that over!
Yes... and end up scp'ing a hugo tarball every single time... no thanks data transfer rates are already bad enough as it is.
Going Forward
Now that I have keys and a simple dev setup on windows ( where I game/stream from ) it should be super easy to actually update this site without having to constantly hop between Windows/Linux all the time. So here's to lost of fun & easy updates in the future 🥳