The approach we took is to transform DITA to HTML in the browser. This satisfies Docs as Code, in that a build simply takes our DITA source and places it on the server as is. On the server side it's totally static. But on the client side it's dynamic. We use real-time filtering of the source to implement micro-content, for example. Lots of metadata in a topic, and selective display at request time.
I'll give a talk on how we do micro-content at the upcoming ConVex (replacement for DITA N. America and DITA Europe).
We use a minimal subset of DITA -- Only use Topic, don't do specialization, and we don't support some of the more arcane features. (We do support conrefs and keyrefs, though.) We put this together about 8 years ago, when LwDITA was roughly a twinkle in Michael Priestly's eye, so we just did our own subset.
The one thing we cannot do is directly port over to GitHub Pages. GHP doesn't support AJAX, and we use AJAX to get the topic and the transform. I finally need to figure out a workflow between GHP and our system, so we'll see how that goes.