Commit Messages and Automated Releases
Writing software is interesting.
At one level, we write code to build a product, solve problems and make our lives easier. Whilst we’re building a product, we need to communicate to current and future selves and team members about what we’re doing and how our code works.
Some of this communication is directly in code. Our function names, our variable names, our class names, our comments, and the list goes on.
Review Bots - GCP
As mentioned in a previous post, I decided to deploy to GCP.
Here, I found a few options for running the bot and the model.
Google Kubernetes Engine Google Functions Google Cloud Run I experiemented with all 3 possible deployment targets, using Terraform to deploy the infrastructure.
GKE Configuring GKE in GCP is a really nice experience.
It was quite straight forward to setup the cluster with a couple of terraform resources - google_container_cluster and google_container_node_pool.
Review Bots - The Code
Great. I have some Machine Learning models to categorise Pull Requests. But, how do I build a bot?
Do I make a Github Action or a Github Application?
How could I implement it?
Well, part of the motivation for this was to make these bots simple to use and manage across many repositories.
If I made a Github Action, I’d need to create a workflow in every repository. But, if I used a Github Application, I could install it once and it could be run on every repo!
Review Bots - The Tech
Now that I had some ideas about what I wanted to build, I needed to make some technology decisions.
At my day job, I use Azure a lot. It would be easier to look there, but I wanted to learn some AI/ML. I had also used some AWS at work and personally, but I didn’t have any experience with GCP.
I did some research to compare the AI/ML features of AWS, Azure and GCP and ended up choosing GCP.
Review Bots - The Idea
Review Bots - The Idea I’ve been writing code and building solutions in IT for a while now.
It was relatively simple when I worked by myself; it was only me. I had my own expectations about how to implement a feature, or fix a bug. I did consider my future self, and future developers who may pick up the project.
However, I didn’t have someone else reviewing my code, or the size of my changes.