Building the world’s most over-engineered Secret Santa 🎄 - Buildkite Blog
New Announcing Buildkite Test Analytics

Building the world’s most over-engineered Secret Santa 🎄

Running a Secret Santa takes a lot of work! Firstly you create a spreadsheet with everyone’s names so they can add their Christmas gift hints, and for a remote team like ours, a delivery address too. 📊 Then you allocate each person their “Secret Santa” by pulling names out of a hat, wait for everyone to finish filling out the spreadsheet, and after much poking and fussing, notify each person to tell them who they’re buying for — all this whilst making sure everything stays a secret. 🙈

Still excited by Buildkite’s new input field support, I did what every misguided programmer does with a shiny new toy: spent days programming a solution to something I could have easily done with a spreadsheet and a few emails. Why? Just to prove my idea was possible 🤖🙌🏼

And with this I give to you: the world’s most over-engineered office Secret Santa.

This advanced Christmas build pipeline includes:

  • 🔨 110 lines of Bash which prints a tree-spangled ASCII-coloured Readme, and a dynamic Buildkite pipeline with randomly ordered block steps for each person to fill out.

  • 237 lines of Javascript (including tests) for processing the webhook once everyone unblocks their step. The webhook runs on AWS Lambda, and takes the information from the build meta-data, allocates each person their Secret Santa based on a configurable random seed, and sends out an email to each person.

  • 🖌 Three hand-lettered type pieces by Carla Hackett, including an animated gif embedded in the build log.

  • 🎨 Two pieces of ASCII art (not created by me) including a Christmas tree and a magical unicorn.

You can check it all out on GitHub, and even give it a try using the “Add to Buildkite” button in the Readme (don’t worry, it won’t send out emails or commit you to buying any more Christmas presents) 🖥

I hope this gives a glimpse of what’s possible with Buildkite’s fancy new input field support for block steps, and inspires some ideas for things you could build.

If you’d like to know more, or have a go at building something like this yourself, head to and we’re here to help. And if you’d like some Buildkite stickers to spice up your Christmas wrapping, we have those too! 🎄✨

Why Buildkite?

Buildkite is the fastest, most secure way to test and deploy code at any scale.

Our self-hosted agents work in your environment with any source code tool, platform and language including but not limited to Ruby, Xcode, Go, Node, Python, Java, Haskell, .NET or pre-release tools.

See more features →

Two people launching a pod

Start Trial

Sign up for a free trial now
and connect your first agent.

Start Trial →