> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# GitLab source for ELT & CDC

> Set up GitLab as a source in Integrate.io ELT & CDC to replicate issues, merge requests, and project data into your warehouse with change data capture.

**GitLab** Inc. is the open-core company that provides GitLab, the DevOps software that combines the ability to develop, secure, and operate software in a single application. ELT & CDC uses the API provided by Gitlab to sync the data. [Gitlab API reference](https://docs.gitlab.com/ee/api/)

|                           |                             |
| :------------------------ | :-------------------------- |
| **Supported Replication** | Full Sync  Incremental Sync |
| **Authentication Type**   | API token                   |

## Collections

| **Collection Name** | **Ful\*\*\*\*l Sync** | **Incremental** **Sync** | **Supports Update** | **Supports Delete** |
| :------------------ | :-------------------- | :----------------------- | :------------------ | :------------------ |
| Branches            | ✔                     | ✔                        | ✖                   | ✖                   |
| Commits             | ✔                     | ✔                        | ✖                   | ✖                   |
| Groups              | ✔                     | ✔                        | ✖                   | ✖                   |
| Issues              | ✔                     | ✔                        | ✖                   | ✖                   |
| Milestones          | ✔                     | ✔                        | ✖                   | ✖                   |
| Projects            | ✔                     | ✔                        | ✖                   | ✖                   |
| Users               | ✔                     | ✔                        | ✖                   | ✖                   |

### Setting up Gitlab for ELT & CDC

#### Requirements

* You need permissions to create access token.

#### Gitlab Source Create Form

<Steps>
  <Step>
    Navigate to user preferences on your Gitlab instance.

    <Frame>
      <img src="https://mintcdn.com/integrateio/SIDFEDRgXpxG0yrn/images/cdc/sources/image-34.png?fit=max&auto=format&n=SIDFEDRgXpxG0yrn&q=85&s=12676c520a50d84eeffcde0935bd8082" alt="GitLab user preferences menu navigation" width="601" height="572" data-path="images/cdc/sources/image-34.png" />
    </Frame>
  </Step>

  <Step>
    Select `Access tokens` in the side panel.

    <Frame>
      <img src="https://mintcdn.com/integrateio/SIDFEDRgXpxG0yrn/images/cdc/sources/image-35.png?fit=max&auto=format&n=SIDFEDRgXpxG0yrn&q=85&s=e6523f02f20e646bd1ea4b7d6e673676" alt="Access Tokens option in the GitLab preferences side panel" width="519" height="720" data-path="images/cdc/sources/image-35.png" />
    </Frame>
  </Step>

  <Step>
    Create a private access token with scopes as shown on the image.

    <Frame>
      <img src="https://mintcdn.com/integrateio/SIDFEDRgXpxG0yrn/images/cdc/sources/image-36.png?fit=max&auto=format&n=SIDFEDRgXpxG0yrn&q=85&s=334a6e51723f364bb24dd6fcca325a37" alt="Creating a GitLab personal access token with required scopes selected" width="1200" height="985" data-path="images/cdc/sources/image-36.png" />
    </Frame>
  </Step>

  <Step>
    Enter acquired private token into the field below.

    <Frame>
      <img src="https://mintcdn.com/integrateio/SIDFEDRgXpxG0yrn/images/cdc/sources/image-37.png?fit=max&auto=format&n=SIDFEDRgXpxG0yrn&q=85&s=97c81243a096c3a0f17991293ad65a19" alt="Private token input field in the Integrate.io GitLab source form" width="904" height="460" data-path="images/cdc/sources/image-37.png" />
    </Frame>

    Fill out the following fields with projects or groups you want to extract the data from. Please note, either groups or projects need to be provided. Filling in `groups` but leaving `projects` empty will sync all group projects, filling in `projects` but leaving `groups` empty will sync selected projects, filling in `groups` and `projects` will sync selected projects of those groups.\
    Each repo path should be space delimited. The project path is relative to your Gitlab domain. For example `integrateio/flydata`.\
    Each group name should be space delimited.

    <Frame>
      <img src="https://mintcdn.com/integrateio/SIDFEDRgXpxG0yrn/images/cdc/sources/image-38.png?fit=max&auto=format&n=SIDFEDRgXpxG0yrn&q=85&s=546587d5f345dd7268a981640415d6b0" alt="Groups and projects input fields in the Integrate.io GitLab source form" width="946" height="406" data-path="images/cdc/sources/image-38.png" />
    </Frame>
  </Step>
</Steps>
