Gitlab and Deviniti – journey to the long-term partnership

GitLab

9 June 2021 • 18 min read

    At Deviniti, we want to be a trusted consultant and advisor who can objectively look at the clients’ situation and select tools so that they comply with the requirements and meet the assumed goals of the organization. Our portfolio includes many well-thought-out partnerships, the solutions of which can be an alternative or complement each other perfectly. One of our partners is GitLab. In this article, we will show how many years of effective cooperation result in a number of benefits for everyone.

    GitLab – what exactly is it?

    GitLab is a complete DevOps platform in a single application that supports companies throughout the software development process. It helps teams shorten product lifecycles and increase productivity, which results in a real value for customers. The GitLab platform allows us to perform all tasks in the project, from project planning (e.g. Issue Tracking, Service Desk), through source code management, to the monitoring, CI/CD processes, and security (e.g. SAST and DAST). GitLab is available in the On-Premise and Cloud versions.

    Deviniti as GitLab partner

    In 2016, we saw the great potential of GitLab for the first time, which is why we established a partnership with this company. From the very beginning, Deviniti focused on strong cooperation and development in the GitLab area. Since then, we’ve been continuously one of the key partners in Europe and we’re constantly training new specialists in the DevOps & Cloud team.

    We know that partnership is not only about relationships, but also about continuous improvement of qualifications. As the only company in Poland, we have the status of GitLab Select Partner, which is the highest status in the partnership program, and we have also the GitLab Certified Professional Services certificate. Such a distinction confirms that our team is constantly trained and goes through certifications and courses prepared by GitLab. The fact that GitLab itself redirects to us its clients who need consultations or support in the field of professional GitLab services can also prove their trust in Deviniti.

    Benefits for Clients

    Thanks to our practice and knowledge, customers have the guarantee that our team has the practical experience in the implementation, maintenance and training in the field of GitLab. This additionally confirms the practical experience in implementations on an Enterprise scale in the banking, financial or space industry. As a key partner of GitLab, we work with engineers and specialists who handle the development of applications on a daily basis and help us meet even the biggest challenges during implementation.

    GitLab community in Poland

    At Deviniti, we love sharing knowledge and we like to be close to our clients. As a GitLab partner, we not only consult and implement tools for various organizations, but also actively work for the entire society that wants to develop in the area of DevOps and GitLab.

    In 2019, we organized the first official meetup in Poland devoted to GitLab in Wrocław, attended by over 100 people. During the event, participants could talk directly to the GitLab engineer Grzegorz Bizon who led one of the presentations. The second speaker was a DevOps engineer from Deviniti, who showed us how to create a fully automatic pipeline in GitLab in practice.

    Also in 2019, a few months before COVID-19 appeared, we managed to participate in the last DevOps Days event in Warsaw, where again, at our invitation, the GitLab team came to Poland. Together, we became one of the partners of the event, and one of our engineers had the opportunity to give a short presentation about tips and tricks for improving the effectiveness of DevOps processes.

    We hope that we will soon be able to return to the active organization of events related to DevOps and GitLab, which aim to raise knowledge, skills, and integrate the entire IT community.

    Deviniti with GitLab – the most successful projects

    Over the past few years, we have cooperated with over 100 companies in the field of providing licenses and professional GitLab services, in the areas of:

    • building and implementing a full technology and tool stack for CI/CD, based on GitLab,
    • CI/CD in an on-premises environment, in the cloud, and hybrid models,
    • design, optimization, and maintenance of the GitLab infrastructure,
    • integrating GitLab with development tools such as SonarQube, Artifactory, or Jira,
    • hosting GitLab in on-premises, cloud or hybrid infrastructure.

    Jira & GitLab integration as a part of DevOps process

    As mentioned earlier, in Deviniti, we believe in long-term partnerships. Our specialists in the field of GitLab and Atlassian solutions join forces and knowledge, and thus well-integrated tools facilitate work in many teams and companies. So let’s take a look at a short description of the implementation of Jira and GitLab integration.

    Problem and client background

    The client has already implemented the business process of delivering new versions of the systems to the implementation environments. It’s a unified process, with some minor exceptions, for all systems within the scope of this project. The technical process of delivering new versions is very varied and mostly manual. Half of the systems are containerized.

    After the analysis, we determined that the most problematic are:

    • differentiated delivery methods for new versions,
    • a mix of containerized and non-containerized systems,
    • manual implementation of new versions,
    • lack of consistency in code storage.

    These problems make the process of delivering new versions of systems time-consuming and costly. Additionally, they slow down the process of releasing new functionalities of systems.

    The aim of the project was to automate and standardize the technical process of delivering new versions of the systems. This process must also be integrated with the existing business process that is implemented in Jira. As part of the project, the client also received support in the transformation to containerized systems.

    Proposed solution

    The proposed solution consists of the CI/CD tool (GitLab), which carries out the technical process of delivering new versions of systems to target environments. In order to implement appropriate security policies, we decided to divide the target environments into 2 groups:

    • Non-Production,
    • Production.

    The following diagram shows the components of the solution. GitLab, as a central tool for implementing a continuous flow of changes, is integrated with the Jira business tool. GitLab is common in all environments. The system performs tasks through the GitLab Runner module, which is installed on separate servers and placed in the target environment. The authorization will take place through integration with the LDAP server.

    GitLab uses an external secrets repository of sensitive data (HasiCorp Vault) such as: passwords, users, keys, etc. There is a separate Vault for each target environment group, which will be integrated with the LDAP (AD) server for user authentication and authorization. As part of the continuous change pipeline, code analysis will also be performed.  For each environment, we will implement the same continuous change pipeline with different steps that will be performed depending on the environment. Docker container images will be stored in the Nexus repository.

    The assumption of the solution is the fact that systems are containerized and the target environment is a Kubernetes (K8s) cluster that forms Linux servers. As part of the project, some of systems will operate on the K8s cluster. This solution also support containerized Systems running on Windows servers and non-containerized Systems.

    How we integrated GitLab and Jira – the result

    GitLab needs to send feedback after executing the CI/CD Pipeline to Jira in order to update task statuses in Jira. We assumed that integration must use REST APIs in both tools.

    Jira task status change requests can be made in Jira in many different ways. We decided to create a plugin as it is the best solution in this case. It allows for simple updating when changing functionality, it’s easy to code and debug.

    The customized plugin uses predefined endpoints in Jira that respond to a change in the status of a Deployment task and issue REST API objects for updates to Deployment and Release tasks.

    DevOps solutions – key takeaway

    GitLab is a comprehensive platform that helps automate DevOps processes. Thanks to the possibility of integration with other tools, GitLab adapts to the style of work of each company and supports the natural workflow, making it even more effective. GitLab is not a rigid tool – it is a platform that is constantly evolving thanks to the community of engineers, practitioners, programmers, consultants, and clients.

    DevOps tools aren’t just limited to managing repositories. Discover the galaxy of DevOps tools on our website and see how else we can make DevOps processes even more effective. Find out more:

    1. 5 tips for a well-prepared API
    2. DevOps tools comparison: GitLab vs. Azure DevOps
    3. Application migration: a step by step guide
    [contact-form-7 404 "Not Found"]