The layers of DevOps — Build system

Gábor Szabó
Daily Standup
Published in
2 min readApr 24, 2018

There is this new client of mine that has a very successful business, but they still release software after the compiled and created a release on the desktop computer of on of the developers.

Something I managed to eradicate in my first real job back in 1994.

How do you get from here to some reasonable level of automation?

  • Luckily they already us Git for version control so we probably won’t need to tackle that issue, but who knows. Do they use it in a way that makes it easy to create builds or is there some strange thing going on? Do they have one single Git repository or many small ones? Do they use branches? We’ll find it out.
  • Start by setting up a machine running Jenkins. For this we need a machine, possibly support from the sysadmin team. It can be any machine local or in the cloud, physical or VPS, but it must be able to access the Version Control System which might limit the location of it as we probably won’t want to create a hole in the Firewall of the company.
  • Create a Jenkins project that will notice every push to the central Git repository. If this can be done by a trigger that’s great. If not then let Jenkins poll the server. (For the former we need to enable the server running the Git repository to be able to reach our Jenkins server which might be problematic if Jenkins sits on our private network.) This will create a working directory with the specific version of the project checked out on the Jenkins server. (Well, actually we could set up other servers that will act as workers for Jenkins, but for now we stick to one machine.) Here we’ll need help from the people who have admin rights on the Git repository.
  • Create a command line tool, a script, a collection commands that can compile the code if it is necessary. This will already require a lot of interaction with the developers and potentially it will need some work on their part to change they way the code works. Earlier they might have relied on features of their IDE or some other GUI-based tool that might not be available on the command line. For this we’ll need to figure out if the Operating System the compilation requires can be the same we used for the Jenkins server or something else. For example, do we need Mac OSX for a OSX or iOS based project? Do we need a Windows machine for something? For this we might need to set up another machine as the worker machine of Jenkins.

Image from here.

--

--