--- date: '2024-10-08T15:33:49-07:00' title: Easier Updates Finally description: Back on track to updating things normally thumbnail: /img/dev/hammer-wrench.png article: 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: ```yaml 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](https://hub.docker.com/r/shockrah/ansible) 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 :partying_face: