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.

Random Thoughts: Drupal trims the login password field but not the username.

I couldn't log in today. Weird. Turns out I left a space after my username in the login field.

Somehow I remembered that Drupal will trim your password of whitespace before looking it up.

Just confirmed it. You can put as many spaces as you want after your password in any Drupal login form. 

But if you do it to your username? Baffled. You've stumped Drupal.

It's kinda fun. 

Run CI/CD with preview environments anywhere with self-hosted Git runners.

GitHub Actions and BitBucket Pipelines are amazing. You can control what is run using yaml files in your codebase. 

You can run just about any command, and they provide a really powerful interface for browsing jobs and logs.

Many people are unaware, you can also control where your scripts are run. If you setup a tool called a Git Runner, you can run Git Actions anywhere, including from your local machine.

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!

Introducing Operations Site Runner: a self-hosted CI/CD platform using GitHub Actions and DDEV.

I've been building and designing automation systems for almost 20 years. I built DevShop on top of Aegir to implement continuous integration and quality control over 10 years ago.

Running CI systems is hard. Really hard. There needs to be an active task runner. A dashboard. API integrations. Tooling. Network Access. It can be incredibly complicated. In the Enterprise? Forget it.

I've been imagining a new system for many years, and here it is.

New Composer plugin "Remote Bin Scripts" makes it easy to install 3rd party tools.

Recently we finished a project that was being moved to Pantheon.

We created a couple custom scripts for pushing data into the pantheon environment, and for pulling data down for continuous integration runs.

The scripts require the Terminus CLI tool created by Pantheon to interact with it's service.

Terminus is a composer project, but it's dependencies don't align with the latest Drupal sites. It's best to install it as a phar file and run it that way.

Introducing Site and Site Manager Modules: Tools for tracking your Drupal sites.

In our line of work, we often deal with many different websites. One of my clients, Vardot, is responsible for over 100 websites. To ensure each site is running smoothly, they needed a tool to keep track of all of them in one place, and hired me to build a "Drupal Support Dashboard", or DSD.

Site Audit 4: Track your Drupal sites into the 4th Dimension

The Site Audit module is a classic. It will reach 10 years old in June of 2023. It gives you a detailed report of your Drupal site in the web admin, providing a nice pass-fail display for review. It has a drush command that renders the report to the terminal in HTML, text, or JSON.

Earlier this year, we started a new project that resulted in a few new features for Site Module, launching the 4.x version branch. 

Site Audit module backported to Drupal 7 to soften landing of Drupal 7 upgraders.

After my presentation on Site Audit 4, I was approached by an audience member, Irina Zaks of Fibonacci Web Studio.

It turns out, the Site Audit module never had a web interface in Drupal 7. It was a drush-only tool that could output HTML, but there was no code ever written to display the audit in the site.

Hello World, Again.

Hi, all. Been a while. Five years since I posted a blog. I can't lie. It's been rough.

I have much to discuss, from my mental health condition to my open source projects. It's really hard for me to publish things when my life is in disarray, but now is the time to rebuild.

Over the next few weeks I am going to start writing regularly, both on technical and personal subjects. I've got some exciting new modules, new services like training, and tons of helpful Drupal information that I'd like to share.

Announcing Provision 4: Leaving the Aegir Nest

As we head into DrupalCon week I've got something big to announce. With the blessing of the Aegir core maintainers, I am taking the 4.x branch of Provision I have been working on and I am separating it from the Aegir Project.

Provision 4 will still power Aegir. We are working on a patch to Hostmaster that will allow us to run a different command other than Drush, allowing Provision4 to become the primary back-end to Aegir 4. This means it will also be able to power the current generation DevShop.

Newest version of DevShop eases Drupal update and release process.

In just a few hours, the first serious critical security update for Drupal since "Drupalgeddon" will be released.

To make this update easier for DevShop users, we've pushed out a new release with 2 features that allow you to update your sites without ever leaving your web browser: "Update, Commit & Push" and "Tag a Release".

"Commit & Push"

The "Update Drupal" button has been available in DevShop for some time, but now you can automatically commit the results by checking a box.

Presenting Provision 4.x CLI Developer Sneak Peek at DrupalNYC

I presented at the first Drupal NYC Meetup of the year!

I've been hard at work building a new Provision: the command-line interface for Aegir. We are moving off Drush commands into our own CLI built in Symfony. The tool is finally a working MVP, so I figured it's time to spread the word! 

First I give a bit of background on the Aegir project and my goals for the project which can be summed up in one word: easy.

Cultivating the Aegir Community at DrupalGovCon17

UPDATESlides and Video of the session are now available.

Every time there is a big DrupalCamp or Con we submit sessions thinking we will talk about our open source hosting and testing platform, DevShop. The specific theme for each talk usually aligns with whatever the latest features are, or is just a general (boring) overview of the features.

Aegir on Docker: Faster Development, Better Testing, Easier Deployment.

In the last few days We've been able to get Aegir working in a docker container.

See http://github.com/aegir-project/dockerfiles for the code and https://hub.docker.com/r/aegir/hostmaster/ for the images.  There are example docker-compose.yml file in the codebase that you can use to launch aegir really quickly.

Collaborative Configuration with DevShop, Aegir & Ansible Galaxy

With the release of the first beta of DevShop we completed the switch to using Ansible Galaxy Roles, which are open source, collaborative infrastructure. Up until the last alpha release, DevShop installed via it's own custom playbook.

Now, each component of DevShop is broken out into separate Ansible Galaxy Roles, extending Jeff Geerling's playbooks.

Our Mission is Easy Open Source Infrastructure

Software evolves over time as any technology. When people invent new things, they usually launch new businesses for those inventions. They patent them. They protect their intellectual property for as long as they can.

At some point, proprietary technology becomes so prolific, that the need for agreed upon standards becomes necessary. Edison wouldn't have sold nearly as many light bulbs if they didn't standardize the size of the sockets and the shape of the two prongs, among other more important things like voltage.

Think. Drop. Repeat.

Our new slogan says a lot to us.

The name "ThinkDrop" sounded good to me when it first came to me for a few reasons.  

"Think: Drupal!" comes to mind.

But to me, "Drop" also means "Release".

The fastest way to make great software is to quickly iterate through the cycles, releasing early and releasing often, collecting feedback all the way through.

Think. Drop. Repeat.

DevShop Workshop & Sprints at DrupalCon Los Angeles

I'm headed to DrupalCon on Monday morning, and hope to spend most of my time recruiting users and sprinters to DevShop development.

The DrupalCon sprints are an amazing opportunity to work together with people in person. Despite being very remote-oriented, there really is no replacement for face to face work, especially when it comes to complex projects like DevShop.

There are a number of opportunities this week to come learn about devshop.



Bats of a Feather: HubDrop, DevShop, & Aegir at DrupalCon Austin

I'm on the plane headed to my 4th DrupalCon, and this one is looking like a good time.  

So much is happening this year. Drupal 8 is getting closer and closer to release, more and more Drupal businesses and services are being launched, and we continue to develop our Drupal products.

While my session on DevShop wasn't accepted, I am personally involved in a lot of BoF sessions this year.

Introducing HubDrop.org: bridging the gap between Drupal.org and GitHub

Introducing HubDrop.org

This project is simply something I wanted to do. No one paid for it. I built it in my spare time as a way to refine the knowledge I learned over the last few years about Symfony, Vagrant, and Chef. I want to grow this tool, but it takes time and a server, which both == money.

So I'm opening up a GitTip account to raise funding for development of hubdrop.io.

But before I do that, I wanted to formally introduce HubDrop to the Drupal aocmmunity.

Defining "Content": Treating Drupal as a CMF

Time and time again the debate about "what is content" and "what is configuration" comes up. I think not often enough we talk about it in words but not in the intentions of what you are building. This article is just about content, because everything else is just code.

First of all, what is "Content", really? It recently has become crystal clear to me: