Exploring DevOps Options

Working with GitLab

John Aven
Hashmap, an NTT DATA Company
5 min readDec 4, 2020

--

Here, at Hashmap, we use GitLab as one of our many version control platforms. Yes, we employ more than one — we are a consulting firm — and as a consulting firm, it pays to be familiar with a plethora of the tools available out there. However, the core of our work is done with GitLab for some fundamental reasons we will discuss below. That aside, we’d like to talk about the basics of using GitLab and some of the cool features.

The Very Basics

GitLab is, well, at the base, just another git repository hosting service. As soon as you venture away from that base level, you start to discover some unique and originating ideas. First off, it offers free private repositories — which is excellent for smaller companies — with approachable pay tiers that can be approached as your company grows. It also has self-hosting options if you don’t want to host your code on their public cloud instance — they run on Google Cloud Platform. As soon as you create a project, you realize some of the menus aren’t like those of its competitors (although they have been catching up). And since you are starting to see similar capabilities, the most basic of these are:

  • Integrated task management (Kanban board with issues, labels, and milestones — much more as your pay grade increases)
  • Baked in CI/CD pipelines that you can either use their shared runners — get started quick — or run on privately hosted Kubernetes clusters on Google Cloud Platform (GKE)
  • Wiki for software and user documentation is a separate git repository that can be edited offline.

These three things enable the basis of most modern software development project management stacks. But wait, there’s more!

Additional Software Development Support

There are so many features in GitLab — and new ones always popping up — but here is a quick synopsis of a few I find the most immediate value in:

Integrated IDE

GitLab has an integrated IDE that supports dozens of languages, with built-in syntax highlighting. This is a handy tool to use in a pinch or for that developer that doesn’t want to deal with setting a more fully feature IDE on their machine (yes — I know some of you still use vi and all of its plugins — not my flavor, but to each their own). Furthermore, the IDE may be a suitable choice for some smaller companies who want to use a simple solution.

Reusable CI/CD Pipelines

How often do you end up recreating — you know, exercising that copypasta skill — the same build and deploy steps in your CI/CD pipelines? Well, GitLab’s CI/CD platform has a solution for this and for many other needs (we’ll discuss these at a later time). To reuse CI/CD pipelines or reuse various pipeline components, the include statement is used:

Oversimplified example with a locally defined sub-pipeline.

Want to learn more? Then please read Sam Kohlleffel’s blog post on building reusable pipelines in GitLab for work we do here internally at Hashmap.

Organizing in Groups

Without understatement, my favorite feature of GitLab is the ability to organize your work in a project structure called Groups. Maybe this is because I am partial to Google Cloud Platform in my own work — or maybe it is a logical structure that lets me organize the numerous repositories we have here at Hashmap. Hashmap is filled with technically savvy individuals in many departments. And to support this, and with our size, we have developed a department hierarchy for managing our code and publically mirrored repositories.

Top Level of our Group organization

This is the current hierarchy at a high level. Within each of the branches, there is further decomposition into other purposefully named subgroups. Each of the main branches has a ‘pocs’ section — this is a section where employees are given control to do their own experimentation, create their own projects as they wish, test out new ideas, learn, and experiment.

While at Hashmap, we have an openness policy that makes all of our internal work open to other Hashmappers, thus allowing internal growth and shared contribution. This isn’t for everyone. In most organizations, there is a necessity for stricter controls — and this level of organization allows this through role-based access control at the group level following the principle of least privilege.

Closing Thoughts

While there are many additional capabilities that GitLab enables, it is not my intent to provide an end-to-end synopsis of GitLab here. Additional blog posts do and/or will cover more of these. Still, you are always welcome to contact us at Hashmap to have additional discussions or contact me through social media for additional discussions. Making the best of your environment in a fit-for-purpose way for YOU is why we are here.

Ready to Accelerate Your Digital Transformation?

At Hashmap, we work with our clients to build better, together.

If you’d like additional assistance in this area, Hashmap offers a range of enablement workshops and consulting service packages as part of our consulting service offerings, and would be glad to work through your specifics in this area.

Feel free to share on other channels and be sure and keep up with all new content from Hashmap here. To listen in on a casual conversation about all things data engineering and the cloud, check out Hashmap’s podcast Hashmap on Tap as well on Spotify, Apple, Google, and other popular streaming apps.

Other Tools and Content You Might Like

John Aven, Ph.D., is the Director of Engineering at Hashmap: providing Data, Cloud, IoT, and AI/ML solutions and consulting expertise across industries with a group of innovative technologists and domain experts accelerating high-value business outcomes for our customers. Be sure and connect with John on LinkedIn and reach out for more perspectives and insight into accelerating your data-driven business outcomes.

--

--

John Aven
Hashmap, an NTT DATA Company

“I’d like to join your posse, boys, but first I’m gonna sing a little song.”