hackathon-0x0b Flash Mob 🐳

Showing new features on a demo platform painlessly

Today’s method

Currently, when we want to show the upcoming version of a product or new features for a demo, if these features are not already fully available on the code repository, and so existing in a packaged version of the product, it’s a bit painful.

We have to create a dedicated demo platform, by compiling the specific product locally, building packages and installing them manually on a dedicated Virtual Machine.

Currently, this Virtual Machine has to be created by our sysadmin team, so we can’t manage it by ourselves. We have to ask them for a new VM, with new accesses, domain name, etc. We are not self-reliant, and it is annoying for us and the sysadmin team to have to go through all this process everytime we want to test or demonstrate a new feature.

Our Revolutionary method

What we are offering in this hackathon makes this process dramatically simpler.

The only thing you need to do is to create a mob branch (a sandbox branch used to share code among ourselves at R&D) with the code containing the feature you want to demonstrate, and add two tags in the commit message :

  • MobHost: which is the name of the website you connect to to demonstrate the new feature,
  • mobproduct: which is the product you want to launch (GeoSafe, GeoReach…).

You can now push this branch in code review, and the magic happens. 🪄🎩

What’s behind the rainbow 🌈

We asked our sysadmin to create a VM called Moby, dedicated to demos, and the rest is automatically done by Buildbot and Kubernetes.

When the commit containing the two tags is built on Buildbot, the presence of the tag triggers the following steps:

  1. put the compiled code inside a container,
  2. create the right Apache configuration inside this container to access the product website,
  3. push the image to our Docker image repository.

On the Moby VM, we installed k3s, which is a light version of Kubernetes. The Docker image is automatically pulled from our Docker image repository, and the container is launched by k3s. We configured it to automatically direct the url <MobHost>.moby.rdvm to the corresponding container MobHost. The product to demonstrate is automatically started on the container launch, with the web interface accessible.

And that’s it, your Flash mob is set, you have your demo platform. Now the ball is in the Sales court to present our beautiful updates! 🤩

Author Avatar

Antoine Debroye