A new way to Multisite: migrating Aegir to GitHub for WSU Vancouver

About 7 years ago, Washington State University, Vancouver set up their 11 websites on Aegir using a single Drupal 8 codebase. Thanks to Aegir, our client and friend Aaron Thorne was able to maintain all 11 websites by himself, despite not being a Drupal developer. Eventually, though, it was time for something new.

Last year, they contacted me to upgrade their sites and the hosting platform, but keep it inside their own private server infrastructure.

We took our time to figure out how we could design a new model for a multisite codebase, hosting, testing.

How can we implement reliable quality controls and automated delivery across all 11 sites? How can we make it as easy as possible for developers and system administrators to maintain? How can we leave WSU Vancouver with a system that they can use long term, so that they can update their codebase... forever?

The answer? A new self-contained system using DDEV, GitHub Actions, and clever usage of settings.php and Drush aliases.

I gotta be honest: as a developer, working this way has been a dream.

Deploying a new feature to Drupal in 10 minutes with self-hosted CI/CD

The new Operations Site Runner allows you to spawn environments very quickly using GitHub Actions on your own servers.

It provides a full lifecycle for every pull request, spinning up a new environment, running tests, and leaving it there for humans to review. 

I recently moved ThinkDrop.net to this new system, so I figured it was time to demonstrate it.

Check out this quick 10 minute video of me deploying the Gin admin theme to my Drupal site!