Websites and I have something of a hit-or-miss affair: I’ll often create something to trial new ideas and ways of working while in the background I think, “Yeah, I’ll start writing articles too.” Well, here goes the latest inspiration and a third-time-lucky opportunity for some new content!
New websites for me are often an opportunity to try out new ideas, and this new site is no different. What at first was a custom-written blob of PHP and HTML morphed into something based on WordPress as I tried to understand its inner-workings due to my writing some themes for people at that time. So, what am I using here?
I’m using Hugo as an engine to create a static website from Markdown pages and Go Templates. A combination of Yarn, Gulp, PostCSS, and some linting tools, to help manage the development of some of the assets process too.
Using Jenkins to glue it all together with the new Blue Ocean interface, Declarative Pipelines, and the Multibranch Plugin, this is all put through a Continuous Delivery pipeline.
For Amazon Web Services, which is hosting the site, I’m using Terraform as a means to build and configure the infrastructure; this includes permissions, logging, and lifecycle management. With that is an S3 bucket into which I upload the assets, and then finally CloudFront as the CDN service through which the site is served and cached. ACM rounds it off by managing the SSL for in-transit encryption of the data.
For any commit to the repository, Jenkins will initialize the environment, test the code and configuration, build the website, create a Development environment, including uploading the site for testing, then, should all of that pass, update the Production environment to give you what you see here.
Altogether, this will probably cost me less than $2 (USD) per month to run. Plus, with the help of Terraform and Jenkins it only takes a few minutes to built, test, and validate any new changes and content upon committing it the upstream repository before deploying into Production while I maintain a level of auditing and history that my previous websites could not offer.
This initial version of the site is only an MVP right now - there are still many little things I would like to change and improve upon - but it’s time to release and improve incrementally; realize the value of the work completed now, not before it’s “perfect.”
Over the next few weeks, I’ll start posting content on here on how I did this so that you can follow along.