SDKs overview

GitLab offers a comprehensive set of APIs that allow developers to programmatically interact with its platform, enabling automation of the DevOps lifecycle. To facilitate this interaction, GitLab provides official Software Development Kits (SDKs) and supports a vibrant ecosystem of community-developed libraries across multiple programming languages. These SDKs and libraries abstract the complexities of direct HTTP requests, authentication, and error handling, allowing developers to focus on integrating GitLab functionalities into their applications and scripts.

The GitLab API follows a RESTful architecture, utilizing JSON for request and response bodies, and supports various authentication methods including OAuth 2.0, personal access tokens, and project access tokens GitLab API documentation. This design allows for flexible integration with different client applications and services. SDKs encapsulate these API interactions into language-specific methods and objects, streamlining the development process for tasks like managing repositories, users, projects, CI/CD pipelines, and security scans.

The availability of SDKs in languages such as Ruby, Python, Go, Java, and JavaScript reflects GitLab's commitment to supporting a broad developer audience. These tools are crucial for extending GitLab's capabilities, building custom integrations, and automating repetitive tasks within development and operations workflows.

Official SDKs by language

GitLab maintains official SDKs and client libraries to provide first-party support for interacting with its API. These libraries are typically kept up-to-date with API changes and offer robust, well-tested interfaces.

Language Package/Library Installation Command Maturity Documentation Link
Ruby gitlab gem gem install gitlab Stable GitLab Ruby API Client
Python python-gitlab pip install python-gitlab Stable GitLab Python API Client
Go go-gitlab go get github.com/xanzy/go-gitlab Stable GitLab Go API Client
Java gitlab4j-api Maven: Add dependency for org.gitlab4j:gitlab4j-api Stable GitLab Java API Client
JavaScript @gitlab/gitlab-api (community maintained, but widely used for official projects) npm install @gitlab/gitlab-api or yarn add @gitlab/gitlab-api Stable GitLab JavaScript API Client

Installation

Installing GitLab SDKs typically involves using the respective language's package manager. Below are common installation instructions for the officially supported languages and widely adopted community libraries.

Ruby

gem install gitlab

This command installs the gitlab gem, which provides a Ruby interface to the GitLab API.

Python

pip install python-gitlab

This command uses pip to install python-gitlab, the official Python client for the GitLab API.

Go

go get github.com/xanzy/go-gitlab

The Go client library go-gitlab can be installed using the go get command.

Java

For Java projects, gitlab4j-api is typically managed via Maven or Gradle. Add the following dependency to your pom.xml for Maven:

<dependency>
    <groupId>org.gitlab4j</groupId>
    <artifactId>gitlab4j-api</artifactId>
    <version>X.Y.Z</version> <!-- Replace with the latest version -->
</dependency>

Replace X.Y.Z with the latest version of GitLab4J.

JavaScript (Node.js/Browser)

npm install @gitlab/gitlab-api

Or using Yarn:

yarn add @gitlab/gitlab-api

This installs the @gitlab/gitlab-api package, which is a common JavaScript client for the GitLab API, suitable for both Node.js and browser environments.

Quickstart example

This example demonstrates how to use the python-gitlab SDK to fetch project information from a GitLab instance. Ensure you have installed python-gitlab and have a GitLab Personal Access Token with appropriate permissions.

import gitlab
import os

# Configure GitLab API client
# You can set these environment variables or hardcode them (not recommended for production)
GITLAB_URL = os.environ.get('GITLAB_URL', 'https://gitlab.com')
GITLAB_PRIVATE_TOKEN = os.environ.get('GITLAB_PRIVATE_TOKEN', 'YOUR_PRIVATE_ACCESS_TOKEN')

# Initialize the GitLab API client
gl = gitlab.Gitlab(GITLAB_URL, private_token=GITLAB_PRIVATE_TOKEN)

try:
    # Get a specific project by its ID or path with namespace
    # Replace 'your_group/your_project' with an actual project path
    project_path = 'gitlab-org/gitlab-foss'
    project = gl.projects.get(project_path)

    # Print project details
    print(f"Project Name: {project.name}")
    print(f"Project ID: {project.id}")
    print(f"Description: {project.description}")
    print(f"Web URL: {project.web_url}")
    print(f"Default Branch: {project.default_branch}")

    # Example: List up to 5 issues for the project
    print("\nRecent Issues:")
    issues = project.issues.list(per_page=5, get_all=False)
    if issues:
        for issue in issues:
            print(f"  - Issue #{issue.iid}: {issue.title}")
    else:
        print("  No issues found.")

except gitlab.exceptions.GitlabError as e:
    print(f"Error connecting to GitLab or fetching project: {e}")

To run this example:

  1. Install Python and python-gitlab: pip install python-gitlab.
  2. Create a GitLab Personal Access Token with read_api scope.
  3. Set the GITLAB_PRIVATE_TOKEN environment variable to your token, and optionally GITLAB_URL if not using gitlab.com.
  4. Replace 'gitlab-org/gitlab-foss' with the path of a project you wish to query.
  5. Execute the Python script.

Community libraries

Beyond the officially maintained SDKs, the broader developer community contributes a variety of libraries and tools that integrate with GitLab. These can include clients for less common languages, specialized tools for specific GitLab features, or integrations with other platforms.

  • PowerShell: The GitLab-API PowerShell module allows scripting GitLab interactions within Windows environments. It enables automation of tasks like user management, project manipulation, and CI/CD pipeline control via PowerShell cmdlets.
  • PHP: Libraries such as php-gitlab-api provide a PHP client for the GitLab API, commonly used in web applications and backend services built with PHP frameworks. These libraries offer methods for interacting with various GitLab resources, including repositories, issues, merge requests, and users.
  • Rust: While less mature than clients for other languages, projects like gitlab-rust aim to provide a Rust-idiomatic way to interact with the GitLab API, catering to developers building high-performance or secure applications in Rust.
  • Other Tools: Various command-line tools, browser extensions, and integration platforms (e.g., Tray.io GitLab Connector) also leverage the GitLab API to provide extended functionality or integrate GitLab into diverse workflows. These tools often use the same underlying API endpoints as the SDKs but offer different user interfaces or integration paradigms.

When selecting a community library, developers should consider its maintenance status, documentation quality, and active community support to ensure long-term viability and compatibility with the GitLab API. The GitLab client libraries documentation provides an overview of both official and popular community clients.