STRG continuously seeks to improve the productivity and quality of its operations by taking advantage of the best software tools and platforms currently available. Nowhere is this more important than with its developer team. Recently, we migrated our software development control system to GitHub. The process required a lot of planning and preparation, but the results are already paying off!
August is a time when most Austrian businesses pretty much shut down for the summer holidays, but the work never lets up here at STRG. On top of our relentless workflow, this year STRG staff carried out a critical internal infrastructure project: re-organizing STRG’s entire developer-data library and migrating it onto the GitHub hosting platform.
“Git” is a “distributed version control system.” It is open-source, free software used by developers to coordinate collaborative programming work. The software can be implemented on a stand-alone network or on a cloud-based hosting service.
The basic concept behind Git is that all different versions of the code are saved, controlled and made accessible to all, so whenever something gets changed, it can be easily reviewed and merged, and whenever there is some SNAFU in the most recent version, a previously stable one can be easily restored. Its “branching” model allows programmers to create or change some feature of the code without changing the main code “tree.”
Today’s software-development systems are increasingly complex and present a high barrier to entry for new developers and contributors. Even for a software-development company as experienced as STRG, it’s nearly impossible for any one person to have the complete overview. STRG needed to reduce this complexity so every programmer can access a resource anytime it’s needed. Processes must become fully automated and streamlined so the developers can focus on their collaborative work and ensure quality.
Before the migration to GitHub could be executed, however, it was necessary to do a bit of housekeeping. STRG’s continuous-improvement enthusiast Jasmin Müller, working as a process manager, took on the challenge: “It’s a standardization process—defining the naming conventions used for each code repository. Over the years, these conventions evolved and resulted in differently named folders hosting similar data. So, this was a great opportunity to analyze our existing data structures. We made a huge Excel sheet containing some 800 repositories.”
Jasmin prepared the migration, researched the preconditions and dependencies, roughly defined the to-dos and ensured that all the actors were on board. After a few planning meetings, the fine tuning was done and a detailed migration plan was created. “The migration plan enabled us to plan our work in JIRA [project-management software] and kept it efficient so that there would be no interruptions to our staff or with our clients’ systems. The developer team only needed a few commands to switch to a new Git source. It went smoothly and easily.”
Not entirely without minor headaches, though. From the outset, it was not clear if all our pipelines would function when the open-source Jenkins CI (continuous integration) tool would be integrated within GitHub. Jenkins is a crucial tool for automating deployment and pipelines. After pushing changes to a repository, Jenkins tests the code, checks to see if it’s properly formatted and whether it has already been deployed to a server. In the end, a way was found to rewire Jenkins to make it work within the GitHub environment.
In addition to integrating the Jenkins CI tool, GitHub also has fully integrated JIRA and transparently references all of the Jira tickets.
“In short, GitHub enhances all the communication and automation that makes agile, collaborative programming possible and assures that it is permanently documented.”
STRG had been using Bitbucket‘s Git platform for several years, however it proved difficult to maintain standardization, as configuration parameters were applied in interfaces. This made it prone to errors: over time, configuration drifts resulted in increased effort when onboarding contributors and often led to permission issues and inconsistencies.
Standardization is critical when a company wants to grow, and this was one of the biggest reasons STRG decided to migrate to GitHub (a Microsoft-subsidiary). GitHub hosts not only the software code but also allows us to apply more automation into the software lifecycle from quality assurance over bundling to shipping and deployments.
“With such a powerful tool I already have a lot of improvements in mind,” says Nils Müller, STRG’s Teamlead and Software Architect. “We are running GitHub’s workflows and actions in our Kubernetes Cluster that is managed with GitOps principles as well as the underlying Google Cloud infrastructure. This enables us to automate development lifecycle tasks in a declarative and easily configurable way.”
After structuring the repositories in the Excel sheet, we generated Infrastructure-as-Code definitions based on this data source. “Instead of laboriously clicking through the GitHub interface to create or rename repositories we were finally able to just write a configuration file and commit it to Git,” says Jasmin Müller. “Now everyone in the company can easily create a pull request on GitHub to add or modify repositories. Terraform helped us to standardize our structure with templates and default parameters.”
Pull requests require a review before they can be merged into the mainline. The merge triggers an action (CI) that lets Terraform reconcile the defined resources, the desired state, against the current state.
In shopping around for Git hosting services, STRG explored GitLab as well. While it includes tons of features, many were not so useful for STRG. GitLab’s all-or-nothing subscription model was too expensive. GitHub costs more than Bitbucket did, but offers a wider range of features that are useful to STRG and that enable us to push automation and standardization to a new level. This, together with increased productivity from its automation, will prove to be a wise investment over the long-term.
GitHub’s security and stability are extremely reliable and its processes are well-maintained, making it a favorite among the open-source community of developers. STRG started implementing DevOps and GitOps principles across the company, and this migration has been a giant step to give our developers more responsibility for the code they create and ship, one step closer to “shift left.”
by Jasmin Müller and Nils Müller