July 16, 2019

Multi-File CircleCI Config

CircleCI configuration for complex projects can grow very large. By default you have to store all that configuration in a single .circleci/config.yml which quickly gets unmanageable. Compounded with that, is that if you are using the on-prem CircleCI Enterprise, you are limited to using CircleCI 2.0 syntax, which is missing some really useful code reuse features like Commands, Executors and Orbs. I was frustrated by these problems on a recent project with complex CI requirements, so, with a little nudge by a colleague who knew the CircleCI CLI inside out, I came up with a solution… Read more

July 4, 2019

How to SHELL for compatible Makefiles

The upshot is if you care about maximum compatibility with different versions of GNU Make, don’t use .SHELLFLAGS just put all your args in-line in the SHELL variable, and make sure to always always use -c as your last argument. E.g. for bash in “strict mode” SHELL := /usr/bin/env bash -euo pipefail -c But why? I really care about the out of the box development experience on projects I maintain. Read more

March 3, 2019

Hugo Makefile

This blog is hosted on GitHub Pages and published using Hugo. Since Go is my preferred language at the moment, Hugo seemed attractive. There are 2 Git repos for this website: Source code: github.com/fieldnotes-tech/fieldnotes.tech Rendered static site: github.com/fieldnotes-tech/fieldnotes-tech.github.io Publishing involves updating the source, and having Hugo generate the static site. To make this easier to use I’ve added a Makefile which pulls the rendered site as a submodule in the public/ directory, which is Hugo’s default place to write the rendered site. Read more

© Sam Salisbury 2019