GitLab
This page contains the setup guide and reference information for the Gitlab Source connector.
Prerequisites
- Gitlab instance or an account at Gitlab
- Start date (Optional)
- GitLab Groups (Optional)
- GitLab Projects (Optional)
For Airbyte Cloud:
- Personal Access Token (see personal access token)
- OAuth
For Airbyte Open Source:
- Personal Access Token (see personal access token)
Setup guide
Step 1: Set up GitLab
Create a GitLab Account or set up a local instance of GitLab.
Airbyte Open Source additional setup steps
Log into GitLab and then generate a personal access token. Your token should have the read_api
scope, that Grants read access to the API, including all groups and projects, the container registry, and the package registry.
Step 2: Set up the GitLab connector in Airbyte
For Airbyte Cloud:
- Log into your Airbyte Cloud account.
- In the left navigation bar, click Sources. In the top-right corner, click + new source.
- On the source setup page, select GitLab from the Source type dropdown and enter a name for this connector.
- Click
Authenticate your GitLab account
by selecting Oauth or Personal Access Token for Authentication. - Log in and Authorize to the GitLab account.
- API URL - The URL to access you self-hosted GitLab instance or
gitlab.com
(default). - Start date (Optional) - The date from which you'd like to replicate data for streams.
- Groups (Optional) - List of GitLab group IDs, e.g.
airbytehq
for single group,airbytehq another-repo
for multiple groups. - Projects (Optional) - List of GitLab projects to pull data for, e.g.
airbytehq/airbyte
. - Click Set up source.
Note: You can specify either Group IDs or Project IDs in the source configuration. If both fields are blank, the connector will retrieve a list of all the groups that are accessible to the configured token and ingest as normal.
For Airbyte Open Source:
- Authenticate with Personal Access Token.
Supported sync modes
The Gitlab Source connector supports the following sync modes:
Supported Streams
This connector outputs the following streams:
- Branches
- Commits (Incremental)
- Issues (Incremental)
- Group Issue Boards
- Pipelines (Incremental)
- Jobs
- Projects
- Project Milestones
- Project Merge Requests (Incremental)
- Users
- Groups
- Group Milestones
- Group and Project members
- Tags
- Releases
- Deployments
- Group Labels
- Project Labels
- Epics (only available for GitLab Ultimate and GitLab.com Gold accounts)
- Epic Issues (only available for GitLab Ultimate and GitLab.com Gold accounts)
Additional information
GitLab source works with GitLab API v4. It can also work with self-hosted GitLab API v4.
Performance considerations
Gitlab has the rate limits, but the Gitlab connector should not run into Gitlab API limitations under normal usage. Please create an issue if you see any rate limit issues that are not automatically retried successfully.
Build instructions
Build your own connector image
This connector is built using our dynamic built process.
The base image used to build it is defined within the metadata.yaml file under the connectorBuildOptions
.
The build logic is defined using Dagger here.
It does not rely on a Dockerfile.
If you would like to patch our connector and build your own a simple approach would be:
- Create your own Dockerfile based on the latest version of the connector image.
FROM airbyte/source-gitlab:latest
COPY . ./airbyte/integration_code
RUN pip install ./airbyte/integration_code
# The entrypoint and default env vars are already set in the base image
# ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
# ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]
Please use this as an example. This is not optimized.
- Build your image:
docker build -t airbyte/source-gitlab:dev .
# Running the spec command against your patched connector
docker run airbyte/source-gitlab:dev spec
Customizing our build process
When contributing on our connector you might need to customize the build process to add a system dependency or set an env var.
You can customize our build process by adding a build_customization.py
module to your connector.
This module should contain a pre_connector_install
and post_connector_install
async function that will mutate the base image and the connector container respectively.
It will be imported at runtime by our build process and the functions will be called if they exist.
Here is an example of a build_customization.py
module:
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
# Feel free to check the dagger documentation for more information on the Container object and its methods.
# https://dagger-io.readthedocs.io/en/sdk-python-v0.6.4/
from dagger import Container
async def pre_connector_install(base_image_container: Container) -> Container:
return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value")
async def post_connector_install(connector_container: Container) -> Container:
return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value")
Changelog
Version | Date | Pull Request | Subject |
---|---|---|---|
1.8.2 | 2023-10-13 | 31377 | Use our base image and remove Dockerfile |
1.8.1 | 2023-10-12 | 31375 | Mark start_date as optional, migrate groups and projects to array |
1.8.0 | 2023-10-12 | 31339 | Add undeclared fields to streams schemas, validate date/date-time format in stream schemas |
1.7.1 | 2023-10-10 | 31210 | Added expired access_token handling, while checking the connection |
1.7.0 | 2023-08-08 | 27869 | Add Deployments stream |
1.6.0 | 2023-06-30 | 27869 | Add shared_runners_setting field to groups |
1.5.1 | 2023-06-24 | 27679 | Fix formatting |
1.5.0 | 2023-06-15 | 27392 | Make API URL an optional parameter in spec. |
1.4.2 | 2023-06-15 | 27346 | Partially revert changes made in version 1.0.4, disallow http calls in cloud. |
1.4.1 | 2023-06-13 | 27351 | Fix OAuth token expiry date. |
1.4.0 | 2023-06-12 | 27234 | Skip stream slices on 403/404 errors, do not fail syncs. |
1.3.1 | 2023-06-08 | 27147 | Improve connectivity check for connections with no projects/groups |
1.3.0 | 2023-06-08 | 27150 | Update stream schemas |
1.2.1 | 2023-06-02 | 26947 | New field name added to Pipelines and PipelinesExtended stream schema |
1.2.0 | 2023-05-17 | 22293 | Preserve data in records with flattened keys |
1.1.1 | 2023-05-23 | 26422 | Fix error 404 Repository Not Found when syncing project with Repository feature disabled |
1.1.0 | 2023-05-10 | 25948 | Introduce two new fields in the Projects stream schema |
1.0.4 | 2023-04-20 | 21373 | Accept api_url with or without scheme |
1.0.3 | 2023-02-14 | 22992 | Specified date formatting in specification |
1.0.2 | 2023-01-27 | 22001 | Set AvailabilityStrategy for streams explicitly to None |
1.0.1 | 2023-01-23 | 21713 | Fix missing data issue |
1.0.0 | 2022-12-05 | 7506 | Add OAuth2.0 authentication option |
0.1.12 | 2022-12-15 | 20542 | Revert HttpAvailability changes, run on cdk 0.15.0 |
0.1.11 | 2022-12-14 | 20479 | Use HttpAvailabilityStrategy + add unit tests |
0.1.10 | 2022-12-12 | 20384 | Fetch groups along with their subgroups |
0.1.9 | 2022-12-11 | 20348 | Fix 403 error when syncing EpicIssues stream |
0.1.8 | 2022-12-02 | 20023 | Fix duplicated records issue for Projects stream |
0.1.7 | 2022-12-01 | 19986 | Fix GroupMilestones stream schema |
0.1.6 | 2022-06-23 | 13252 | Add GroupIssueBoards stream |
0.1.5 | 2022-05-02 | 11907 | Fix null projects param and container_expiration_policy |
0.1.4 | 2022-03-23 | 11140 | Ingest All Accessible Groups if not Specified in Config |
0.1.3 | 2021-12-21 | 8991 | Update connector fields title/description |
0.1.2 | 2021-10-18 | 7108 | Allow all domains to be used as api_url |
0.1.1 | 2021-10-12 | 6932 | Fix pattern field in spec file, remove unused fields from config files, use cache from CDK |
0.1.0 | 2021-07-06 | 4174 | Initial Release |