The other evening I received notification that a project I maintain (poorly, I might add) had a new pull request. This is all quite normal. What was not normal (at least to me) was that the pull request was opened and reviewed without any humans involved at all (at least until I saw it):
I like to install and try out many GitHub Apps. Apps, I think, are a huge success in the GitHub ecosystem. I will try out pretty much anything - and install anything to give it a go (just ask me for recommendations!). In this case I had installed a few bot apps that later would discover my project and work on my code for me. They did this without me explicitly linking them all together, and for some reason this whole interaction both surprised and amused me:
And of course our very own:
Much has been written about how artificial intelligence and automation is going to take all our jobs. I rarely think how this applies to me personally, but here was an example of it. I had installed these bot apps some time ago, and kind of left this repository alone (it has a few users and gets a little activity, but in a world of microservices the ratio of attention to repo is low so I had neglected it).
The whole processes started with dependabot: a service that can be installed as a GitHub App, which then scans my repositories for out of date dependencies and issues pull requests. Well, it found this repo and decided that the httpclient lib was way out of date (it was) and fixed it up for me. Handy. The next novel interaction was via CodeLingo: this is also a GitHub App, but this one reviews code applying standard (or custom) “tenets” to see if rules are being followed, if there are any problems and so on. Of course finally I get a passing build thanks to CodeShip. Let’s zoom in a tiny bit more:
Well, sort of, maybe they can just a bit. Let’s take a look at another bot app I love: Percy.io. Percy is a service (which once again can be installed as an app) which can do intelligent diffs over screen changes that are being proposed in a pull request. I have worked with product managers in the past who spent a lot of time asking for, getting, and then running a white glove over before/after screen shots of parts of an as part of a review (often conducted in a GitHub pull request). Percy can do almost all of that for you (only over ALL of the app, every time), highlighting just the differences:
This still requires a human to “bless” the changes as deliberate (well, at least for now... But not sure how long that will be for).
Thankfully there is still that big “Merge” button, that still requires a human. What a relief.
Actually wait, no, that is going away too. I was watching the Jenkins X and KubeCD project development and noticed that they are including a service called “Tide” which comes out of the Kubernetes ecosystem (they love the nautical metaphors over there!). Tide applies rules (which you can configure) when reviewing pull requests and can even decide to merge them automatically, should it think that is ok:
It isn’t a stretch to imagine next time I will see a change, review and approval and merge/release all before I have picked up my phone and even comprehended what is going on, with no humans. Yikes.
Take a look at CodeShip (free to use) or KubeCD to try out the above!
Additional resources
Read more about automated testing with chatbots and CodeShip
Learn how you can apply AI to continuous delivery
Take a look at more information about opinionated Kubernetes and Jenkins X