Gitlab Tutorials:

What Is Gitlab:

Gitlab is a single application that covers entire devops life-cycle. Git-lab is a total project management tool, where your code can live and your team can organize things ,work on ideas create issues. It is similar to GitHub when you compared in perspective of version control. But gitlab is not only used for version control. It does more. Gitlab allows you to manage project very well and work with larger teams or smaller teams or individual. Gitlab is a great visual management tool to manage entire devops lifecycle. it is a single interface to handle whole devops lifecyle continuation integration, continuous delivery. We can integrate all individual tools with gitlab that we are using in devops lifecyle like docker,kubernetes, jira,github…… in this blog we will cover all the gitlab tutorials.

gitlab tutorials decoding devops

Features Of Gitlab:

Source Code Management:

GitLab supports version control system like git. In gitlab you can create your branches,you can do pull requests and checkout the code. Gitlab provides commit graphs and reporting tools about collaborators’ work.

Powerful Branching:

A branch in Git contains the entire history that precedes it. It’s also created or moved towards instantly and easily shared. In gitlab we can view a list of the latest commits, merges, comments, and team members on your project.
Gitlab extends the base functionality of protected branches and choose which users can push or merge to a protected branch. In GitLab, you can quickly create a new branch from an issue on the issue tracker. It will include the issue number and title automatically, making it easy to track which branch belongs to which issue.

Code Review:

When a project requires multiple sign-offs, GitLab Enterprise Edition enables you to make sure every merge request is approved by one or more people. Merge request approvals allow you to set the number of necessary approvals and predefine a list of approvers that will need to approve every merge request in a project, and in-turn improve your code’s quality. In GitLab, to ensure strict code review, you can require a specific number of approvals on a merge request by different users before being able to merge it. You can undo an approval by removing it after the fact.

Web IDE:

In Gitlab we can contribute to projects faster by using the Web IDE to avoid context switching in our local development environment. The Web IDE is integrated with merge requests and GitLab CI so that you can resolve feedback, fix failing tests and preview changes live with client side evaluation without leaving the Web IDE.

Built-in and custom project templates:

When creating a new project, you can choose to kick-start your project from a predefined template that already has some working example code and CI preconfigured. In addition, you can define a custom project templates by assigning a group. Child projects of this group are available as templates when creating a new project.

Threaded Discussions:

Collaborate with threaded discussions in issues, merge requests, and epics.

Granular user roles and flexible permissions:

Manage access and permissions with five different user roles and settings for external users. Set permissions according to people’s role, rather than either read or write access to a repository.

Multiple LDAP / AD server support:

Link multiple LDAP servers to GitLab for authentication and authorization

Various authentication mechanisms:

GitLab can integrate with most of the authentication and authorization providers

Filterable System Activity:

View system activity to see a history of changes to issues, merge requests, and epics.

Jira Integration:

To ensure that developers in GitLab and project managers in JIRA remain in tune, GitLab integrates with JIRA and provides the necessary tooling to fill that gap

Time Tracking:

Time Tracking in GitLab lets your team add estimates and record time spent on issues and merge requests.

Agile Portfolio Management:

Plan and track strategies, initiatives, and features with multi-level epics that collect issues together.
Able to capture and track future features, capabilities, and work in a consolidated and organized list which enables the team to organize, prioritize, accept, plan and start work on relevant items.

Continuous Integration (CI):

GitLab has built-in Continuous Integration/Continuous Delivery, for free, no need to install it separately. Use it to build, test, and deploy your website (GitLab Pages) or webapp. The job results are displayed on merge requests for easy access. You can make your pipelines run on a schedule in a cron-like environment.

CI/CD for external repo:

Connect your projects hosted on external services (like GitHub or Bitbucket) and leverage the power of GitLab CI/CD pipelines to build, test, and deploy your applications easily

Run CI/CD jobs on Windows:

GitLab Runner supports Windows and can run jobs natively on this platform. You can automatically build, test, and deploy Windows-based projects by leveraging PowerShell or batch files.

Run CI/CD jobs on macOS:

GitLab Runner supports macOS and can run jobs natively on this platform. You can automatically build, test, and deploy for macOS based projects by leveraging shell scripts and command line tools.

Minimal CI/CD configuration:

GitLab CI/CD requires less configuration for your pipelines than other similar setups like Jenkins.

Container Registry:

GitLab Container Registry is a secure and private registry for Docker images. It allows for easy upload and download of images from GitLab CI. It is fully integrated with Git repository management.
GitLab ships with its own Container Registry, Docker CI Runner, and is ready for a complete CI/CD container workflow. There is no need to install, configure, or maintain additional plugins.
Supports storage and retreival of Docker style containers.

Continuous Delivery (CD):

GitLab has built-in Continuous Integration/Continuous Delivery, for free, no need to install it separately. Use it to build, test, and deploy your website (GitLab Pages) or webapp. The job results are displayed on merge requests for easy access.
With GitLab CI/CD you can create a new environment for each one of your branches, speeding up your development process. Spin up dynamic environments for your merge requests with the ability to preview your branch in a live environment.

Kubernetes Configuration:

Easily deploy different environments, like Staging and Production, to different Kubernetes clusters. This allows to enforce strict data separation.
Install Helm Tiller, Nginx Ingress, Prometheus and GitLab Runner directly into your cluster from the GitLab Web UI with one click.
Quickly and easily view the pod logs of an app deployed to Kubernetes
you can Add your existing Kubernetes cluster to your project, and easily access it from your CI/CD pipelines to host Review Apps and to deploy your application.

Metrics:

GitLab collects and displays performance metrics for deployed apps, leveraging Prometheus. Developers can determine the impact of a merge and keep an eye on their production systems, without leaving GitLab
GitLab allows engineers to seamlessly create service level indicator alerts and be notified of any desired events, all within the same workflow where they write their code.
GitLab comes out of the box enabled for Prometheus monitoring with extensive instrumentation, making it easy to ensure your GitLab deployment is responsive and healthy.

Logging:

To maintain the integrity of your code, GitLab Enterprise Edition Premium gives admins the ability to view any modifications made within the GitLab server in an advanced audit log system, so you can control, analyze and track every change.
we can Forward your logs to a central system.
Quickly and easily view the pod logs of an app deployed to Kubernetes.

Advantages of GitLab CI/CD?

Integrated: GitLab CI/CD is part of GitLab, enabling a single conversation from planning to deployment (and beyond)
Open source: CI/CD is a part of both the open source GitLab Community Edition and the proprietary GitLab Enterprise Edition
Scalable: Tests run distributed on separate machines of which you can add as many as you want
Optimized for delivery: multiple stages, manual deploy gates, environments, and variables