Welcome back to our “Let’s stack .io up!” series of blog posts where we illuminate the components of our techie stack!
Today, I’ll showcase GitLab, our go-to tool for orchestrating developments and releases.
Initially focusing on version control, GitLab has evolved to encompass many features, including continuous integration and delivery (CI/CD), project management, and security scanning.
Our Initial Needs
When our SaaS platform embarked on its journey, establishing a solid foundation for collaboration, version control, and automated deployment was important.
We needed a tool to manage our code efficiently while seamlessly integrating with CI/CD pipelines. The goal was to be able to reduce friction as much as possible to be able to ship code in production efficiently daily.
We briefly explored other options, but after a successful proof of concept with Gitlab pipelines paired with our infra-as-code tool, Pulumi (which will be the topic of another blog post), we decided to go for it.
A Fun Twist
At the start of our GitLab journey, we got invited by GitLab to a friendly competition. The challenge? To log the most steps in three weeks, injecting a healthy dose of fun and fitness into our tech-centric world. Although we didn’t emerge victorious in the step-counting race, the GitLab team surprised us with a delightful consolation prize – custom GitLab socks that I still rock today!
How We Use GitLab
GitLab has become the backbone of our development process, playing a pivotal role in enabling collaboration and ensuring the reliability of our releases. Our Git repositories are managed through GitLab’s version control system, providing a centralized location for code collaboration and review. Our Git process is simple and barebone: every code change is done through a feature branch and reviewed by at least one but often two developers before merging into the main branch.
The integrated CI/CD pipelines then automate our build, test, and deployment processes, seamlessly deploying versions to our three platforms (dev, staging, prod) after successfully passing all tests. GitLab allows these platforms to operate and manage their specificities in the pipelines through variables.
Lastly, we use GitLab’s feature flag ability to roll out new features before they are ready to be used by our customers and toggle them dynamically for specific tenants. The flag allows us to test the feature, minimize potential issues, and control the release. It can also be used to activate beta features for specific customers selectively.
In the competitive landscape of SaaS development, selecting the right tools is crucial for success. GitLab has proven to be a perfect companion for our day-to-day life and platform. We use it in every DevOps process phase: code management and review to deployment and platform operation. As we continue to evolve and innovate, GitLab remains a crucial component in our journey towards efficient, collaborative, and automated software development – and the source of some fashionable GitLab socks!
Come along with us on this exciting adventure, and stay tuned to unravel more tools from our stack in the upcoming episodes of “Let’s stack .io up!”