airbyte-source-gitlab 2.1.1__py3-none-any.whl → 3.0.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.1
2
+ Name: airbyte-source-gitlab
3
+ Version: 3.0.0
4
+ Summary: Source implementation for Gitlab.
5
+ Home-page: https://airbyte.com
6
+ License: MIT
7
+ Author: Airbyte
8
+ Author-email: contact@airbyte.io
9
+ Requires-Python: >=3.9,<3.12
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Requires-Dist: airbyte-cdk (==0.58.8)
16
+ Requires-Dist: vcrpy (==4.1.1)
17
+ Project-URL: Documentation, https://docs.airbyte.com/integrations/sources/gitlab
18
+ Project-URL: Repository, https://github.com/airbytehq/airbyte
19
+ Description-Content-Type: text/markdown
20
+
21
+ # Gitlab source connector
22
+
23
+
24
+ This is the repository for the Gitlab source connector, written in Python.
25
+ For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/gitlab).
26
+
27
+ ## Local development
28
+
29
+ ### Prerequisites
30
+ * Python (~=3.9)
31
+ * Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation)
32
+
33
+
34
+ ### Installing the connector
35
+ From this connector directory, run:
36
+ ```bash
37
+ poetry install --with dev
38
+ ```
39
+
40
+
41
+ ### Create credentials
42
+ **If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/gitlab)
43
+ to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_gitlab/spec.yaml` file.
44
+ Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information.
45
+ See `sample_files/sample_config.json` for a sample config file.
46
+
47
+
48
+ ### Locally running the connector
49
+ ```
50
+ poetry run source-gitlab spec
51
+ poetry run source-gitlab check --config secrets/config.json
52
+ poetry run source-gitlab discover --config secrets/config.json
53
+ poetry run source-gitlab read --config secrets/config.json --catalog sample_files/configured_catalog.json
54
+ ```
55
+
56
+ ### Running unit tests
57
+ To run unit tests locally, from the connector directory run:
58
+ ```
59
+ poetry run pytest unit_tests
60
+ ```
61
+
62
+ ### Building the docker image
63
+ 1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md)
64
+ 2. Run the following command to build the docker image:
65
+ ```bash
66
+ airbyte-ci connectors --name=source-gitlab build
67
+ ```
68
+
69
+ An image will be available on your host with the tag `airbyte/source-gitlab:dev`.
70
+
71
+
72
+ ### Running as a docker container
73
+ Then run any of the connector commands as follows:
74
+ ```
75
+ docker run --rm airbyte/source-gitlab:dev spec
76
+ docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-gitlab:dev check --config /secrets/config.json
77
+ docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-gitlab:dev discover --config /secrets/config.json
78
+ docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-gitlab:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json
79
+ ```
80
+
81
+ ### Running our CI test suite
82
+ You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md):
83
+ ```bash
84
+ airbyte-ci connectors --name=source-gitlab test
85
+ ```
86
+
87
+ ### Customizing acceptance Tests
88
+ Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information.
89
+ If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py.
90
+
91
+ ### Dependency Management
92
+ All of your dependencies should be managed via Poetry.
93
+ To add a new dependency, run:
94
+ ```bash
95
+ poetry add <package-name>
96
+ ```
97
+
98
+ Please commit the changes to `pyproject.toml` and `poetry.lock` files.
99
+
100
+ ## Publishing a new version of the connector
101
+ You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what?
102
+ 1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-gitlab test`
103
+ 2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)):
104
+ - bump the `dockerImageTag` value in in `metadata.yaml`
105
+ - bump the `version` value in `pyproject.toml`
106
+ 3. Make sure the `metadata.yaml` content is up to date.
107
+ 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/gitlab.md`).
108
+ 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention).
109
+ 6. Pat yourself on the back for being an awesome contributor.
110
+ 7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master.
111
+ 8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry.
@@ -0,0 +1,34 @@
1
+ source_gitlab/__init__.py,sha256=Bip0P3F1yGxbb0nNwdTE8i98KtkuTT_MzZbMeSxziBM,1134
2
+ source_gitlab/config_migrations.py,sha256=K6Bg8zh4Zz1U9QlilRyAC1oy8RQJOOsVhh62jVIPTrY,3816
3
+ source_gitlab/run.py,sha256=opjAlKxINNpsekbyOYAAxh25DxI7gTKg5ohJmDwe0q0,403
4
+ source_gitlab/schemas/branches.json,sha256=iQMHidNwdx2g4UgfkeOZPhpG67K--S2jPM-XLBPhJb8,800
5
+ source_gitlab/schemas/commits.json,sha256=2VgI6Ih5lrzzeuIacVNqigM8RwR93u2cEwD21LmEpvU,1676
6
+ source_gitlab/schemas/deployments.json,sha256=GDnm625zWbz4YDTBI4x8_jeuIRcUn5LZLK8tP6ZHewo,5084
7
+ source_gitlab/schemas/epic_issues.json,sha256=TsRZr_YDqzLJCY2lcy-wvpQTlai2UHILaq2IG4f5w8k,5472
8
+ source_gitlab/schemas/epics.json,sha256=XceeYZDyqeqiZsRYhwn472YHh4ZE2fsog_bIOuk_YQI,2790
9
+ source_gitlab/schemas/group_issue_boards.json,sha256=CWr80x0rN0HGg_wI6Bi2ogKCqtRqZONK_0ol2W5R1jk,1687
10
+ source_gitlab/schemas/group_labels.json,sha256=bthJK3U3vUvOfTPQaXINgzQmVba7K1fDeMvl6aCI8GQ,785
11
+ source_gitlab/schemas/group_members.json,sha256=5NbL5GzDrEWyM3RGsQ1Yk30FHaT8N9w99-mUYkVyVXY,1261
12
+ source_gitlab/schemas/group_milestones.json,sha256=qdmCjvcqO5gdMy5Eos8zPvct0wKQkx8qgbk37ZE-Mgg,898
13
+ source_gitlab/schemas/groups.json,sha256=My48VM9tUuuEr-nu6tKweTn5NohVBeze3kk2zJtVdok,4148
14
+ source_gitlab/schemas/issues.json,sha256=47jGc7XXUJuIC99PGfV_ez57VZZSEWiZIf_kgniG2MM,6304
15
+ source_gitlab/schemas/jobs.json,sha256=yX5SnTg8z0iGInFjJ9WDMjD-3l70epwzKn4WrqClV4E,2275
16
+ source_gitlab/schemas/merge_request_commits.json,sha256=WyBDimMVUOaRcL5dOT3DBiu3nV4cGAqJqnc2S2kAKE4,1744
17
+ source_gitlab/schemas/merge_requests.json,sha256=qycpaRi_0l50vLUJflpbIheskeMZ1DQCtT-KHHOsjh0,4388
18
+ source_gitlab/schemas/pipelines.json,sha256=jcI4ucib_OipiXhsjzEUvECX301uHF8sPE7X2PanosY,777
19
+ source_gitlab/schemas/pipelines_extended.json,sha256=IG_RMwdBhJ7rslhVGXQjC_u9CC02Ttvhf4P7H2IesQQ,2041
20
+ source_gitlab/schemas/project_labels.json,sha256=uNvsTB3PiEsyb-iAr4qfCH4swYzoEpnsNjEahgRLqZQ,913
21
+ source_gitlab/schemas/project_members.json,sha256=TACxu3MWiteGh2oy1-MGlGmjPhsN3vHqrdmACT2Bzwo,1263
22
+ source_gitlab/schemas/project_milestones.json,sha256=18lSl2h-IMYkpc13DF86jQ7fODI5yZd4ad6eaiGlicQ,900
23
+ source_gitlab/schemas/projects.json,sha256=V9Plxh9SB-zPxH8wOTSgOhHm4BPb4XS87RqUYN5bf9c,12131
24
+ source_gitlab/schemas/releases.json,sha256=NfDIhLN2DBZhXjhn_5Xbw8PUO2e5KRgeiU8HgjsSoXU,1781
25
+ source_gitlab/schemas/tags.json,sha256=uyRFTJF2d9z2tbIp69NhkJmrRMmaEuHEdSagP99iqjw,771
26
+ source_gitlab/schemas/users.json,sha256=h89E6ZHQWbwU_MhErTZTtfiIZjF6aLAbHZQJ8TCTLY8,496
27
+ source_gitlab/source.py,sha256=_ovomkDxlb62M4PqNczTRk29grlNEsx9Scoy-79eebM,12072
28
+ source_gitlab/spec.json,sha256=0eit0zD-6kdcaNhJ1sAf0ABgIUwnlPV87Sbu3A4JvG0,6132
29
+ source_gitlab/streams.py,sha256=2vjqwHYECUbTj9GQq2WpSK2m9Dy3o_KE0xs6bbRESNw,16122
30
+ source_gitlab/utils.py,sha256=idtKZiT-ILRRtpO0rxPJ1wim-mWN6ewzN_KgLCmogBs,456
31
+ airbyte_source_gitlab-3.0.0.dist-info/METADATA,sha256=tz_KHVfbFGldIeE2mtuYmlrffJuvY6HrrjeZ9szydgI,5231
32
+ airbyte_source_gitlab-3.0.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
33
+ airbyte_source_gitlab-3.0.0.dist-info/entry_points.txt,sha256=sbp4881P3oluHtnFDy4ZCVHDfL5fIkVQhJ7vka_qzTc,55
34
+ airbyte_source_gitlab-3.0.0.dist-info/RECORD,,
@@ -1,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: poetry-core 1.8.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ source-gitlab=source_gitlab.run:run
3
+
@@ -95,12 +95,10 @@ class MigrateStringToArray(ABC):
95
95
 
96
96
 
97
97
  class MigrateGroups(MigrateStringToArray):
98
-
99
98
  migrate_from_key: str = "groups"
100
99
  migrate_to_key: str = "groups_list"
101
100
 
102
101
 
103
102
  class MigrateProjects(MigrateStringToArray):
104
-
105
103
  migrate_from_key: str = "projects"
106
104
  migrate_to_key: str = "projects_list"
@@ -216,6 +216,12 @@
216
216
  },
217
217
  "group_id": {
218
218
  "type": ["null", "integer"]
219
+ },
220
+ "human_readable_end_date": {
221
+ "type": ["null", "string"]
222
+ },
223
+ "human_readable_timestamp": {
224
+ "type": ["null", "string"]
219
225
  }
220
226
  }
221
227
  },
@@ -38,6 +38,17 @@
38
38
  }
39
39
  }
40
40
  }
41
+ },
42
+ "allowed_to_push": {
43
+ "type": ["null", "array"],
44
+ "items": {
45
+ "type": ["null", "object"],
46
+ "properties": {
47
+ "access_level": {
48
+ "type": ["null", "integer"]
49
+ }
50
+ }
51
+ }
41
52
  }
42
53
  }
43
54
  },
@@ -74,6 +85,9 @@
74
85
  "subgroup_creation_level": {
75
86
  "type": ["null", "string"]
76
87
  },
88
+ "enabled_git_access_protocol": {
89
+ "type": ["null", "string"]
90
+ },
77
91
  "emails_disabled": {
78
92
  "type": ["null", "boolean"]
79
93
  },
@@ -153,6 +167,12 @@
153
167
  },
154
168
  "service_access_tokens_expiration_enforced": {
155
169
  "type": ["null", "boolean"]
170
+ },
171
+ "lock_math_rendering_limits_enabled": {
172
+ "type": ["null", "boolean"]
173
+ },
174
+ "math_rendering_limits_enabled": {
175
+ "type": ["null", "boolean"]
156
176
  }
157
177
  }
158
178
  }
@@ -118,6 +118,9 @@
118
118
  },
119
119
  "id": {
120
120
  "type": ["null", "integer"]
121
+ },
122
+ "locked": {
123
+ "type": ["null", "boolean"]
121
124
  }
122
125
  }
123
126
  },
@@ -141,6 +144,12 @@
141
144
  },
142
145
  "username": {
143
146
  "type": ["null", "string"]
147
+ },
148
+ "id": {
149
+ "type": ["null", "integer"]
150
+ },
151
+ "locked": {
152
+ "type": ["null", "boolean"]
144
153
  }
145
154
  }
146
155
  },
@@ -164,6 +173,18 @@
164
173
  },
165
174
  "username": {
166
175
  "type": ["null", "string"]
176
+ },
177
+ "human_readable_end_date": {
178
+ "type": ["null", "string"]
179
+ },
180
+ "human_readable_timestamp": {
181
+ "type": ["null", "string"]
182
+ },
183
+ "id": {
184
+ "type": ["null", "integer"]
185
+ },
186
+ "locked": {
187
+ "type": ["null", "boolean"]
167
188
  }
168
189
  }
169
190
  },
@@ -251,6 +272,15 @@
251
272
  },
252
273
  "group_id": {
253
274
  "type": ["null", "integer"]
275
+ },
276
+ "locked": {
277
+ "type": ["null", "boolean"]
278
+ },
279
+ "human_readable_end_date": {
280
+ "type": ["null", "string"]
281
+ },
282
+ "human_readable_timestamp": {
283
+ "type": ["null", "string"]
254
284
  }
255
285
  }
256
286
  },
@@ -2,233 +2,84 @@
2
2
  "$schema": "https://json-schema.org/draft-07/schema#",
3
3
  "type": "object",
4
4
  "properties": {
5
- "id": {
6
- "type": ["null", "integer"]
7
- },
8
- "iid": {
9
- "type": ["null", "integer"]
10
- },
11
5
  "project_id": {
12
6
  "type": ["null", "integer"]
13
7
  },
14
- "title": {
15
- "type": ["null", "string"]
16
- },
17
- "description": {
8
+ "id": {
18
9
  "type": ["null", "string"]
19
10
  },
20
- "state": {
11
+ "short_id": {
21
12
  "type": ["null", "string"]
22
13
  },
23
14
  "created_at": {
24
15
  "type": ["null", "string"],
25
16
  "format": "date-time"
26
17
  },
27
- "updated_at": {
28
- "type": ["null", "string"],
29
- "format": "date-time"
30
- },
31
- "merged_by": {
32
- "type": ["null", "object"]
33
- },
34
- "merged_at": {
35
- "type": ["null", "string"],
36
- "format": "date-time"
37
- },
38
- "prepared_at": {
39
- "type": ["null", "string"],
40
- "format": "date-time"
41
- },
42
- "closed_by": {
43
- "type": ["null", "object"]
44
- },
45
- "closed_at": {
46
- "type": ["null", "string"],
47
- "format": "date-time"
48
- },
49
- "target_branch": {
50
- "type": ["null", "string"]
51
- },
52
- "source_branch": {
53
- "type": ["null", "string"]
54
- },
55
- "user_notes_count": {
56
- "type": ["null", "integer"]
57
- },
58
- "upvotes": {
59
- "type": ["null", "integer"]
60
- },
61
- "downvotes": {
62
- "type": ["null", "integer"]
63
- },
64
- "author": {
65
- "type": ["null", "object"]
66
- },
67
- "assignees": {
68
- "type": ["null", "array"],
69
- "items": {
70
- "type": "object"
71
- }
72
- },
73
- "assignee": {
74
- "type": ["null", "object"]
75
- },
76
- "reviewers": {
18
+ "parent_ids": {
77
19
  "type": ["null", "array"],
78
20
  "items": {
79
- "type": "object"
21
+ "type": ["null", "string"]
80
22
  }
81
23
  },
82
- "source_project_id": {
83
- "type": ["null", "integer"]
84
- },
85
- "target_project_id": {
86
- "type": ["null", "integer"]
87
- },
88
- "labels": {
89
- "type": ["null", "array"],
90
- "items": {
91
- "type": "string"
92
- }
93
- },
94
- "work_in_progress": {
95
- "type": ["null", "boolean"]
96
- },
97
- "milestone": {
98
- "type": ["null", "object"]
99
- },
100
- "merge_when_pipeline_succeeds": {
101
- "type": ["null", "boolean"]
102
- },
103
- "merge_status": {
104
- "type": ["null", "string"]
105
- },
106
- "sha": {
107
- "type": ["null", "string"]
108
- },
109
- "merge_commit_sha": {
24
+ "title": {
110
25
  "type": ["null", "string"]
111
26
  },
112
- "squash_commit_sha": {
27
+ "message": {
113
28
  "type": ["null", "string"]
114
29
  },
115
- "discussion_locked": {
116
- "type": ["null", "boolean"]
117
- },
118
- "should_remove_source_branch": {
119
- "type": ["null", "boolean"]
120
- },
121
- "force_remove_source_branch": {
122
- "type": ["null", "boolean"]
123
- },
124
- "reference": {
30
+ "author_name": {
125
31
  "type": ["null", "string"]
126
32
  },
127
- "references": {
128
- "type": ["null", "object"]
129
- },
130
- "web_url": {
33
+ "author_email": {
131
34
  "type": ["null", "string"]
132
35
  },
133
- "time_stats": {
134
- "type": ["null", "object"]
135
- },
136
- "squash": {
137
- "type": ["null", "boolean"]
138
- },
139
- "task_completion_status": {
140
- "type": ["null", "object"]
141
- },
142
- "has_conflicts": {
143
- "type": ["null", "boolean"]
144
- },
145
- "blocking_discussions_resolved": {
146
- "type": ["null", "boolean"]
147
- },
148
- "approvals_before_merge": {
149
- "type": ["null", "boolean", "string", "object"]
150
- },
151
- "subscribed": {
152
- "type": ["null", "boolean"]
153
- },
154
- "changes_count": {
155
- "type": ["null", "integer", "string"]
156
- },
157
- "latest_build_started_at": {
158
- "type": ["null", "string"],
159
- "format": "date-time"
160
- },
161
- "latest_build_finished_at": {
36
+ "authored_date": {
162
37
  "type": ["null", "string"],
163
38
  "format": "date-time"
164
39
  },
165
- "first_deployed_to_production_at": {
166
- "type": ["null", "string"],
167
- "format": "date-time"
168
- },
169
- "pipeline": {
170
- "type": ["null", "object"]
171
- },
172
- "head_pipeline": {
173
- "type": ["null", "object", "string", "boolean", "integer"]
174
- },
175
- "diff_refs": {
40
+ "extended_trailers": {
176
41
  "type": ["null", "object"],
177
42
  "properties": {
178
- "base_sha": {
179
- "type": ["null", "string"]
180
- },
181
- "head_sha": {
182
- "type": ["null", "string"]
183
- },
184
- "start_sha": {
185
- "type": ["null", "string"]
43
+ "Cc": {
44
+ "type": ["null", "array"],
45
+ "items": {
46
+ "type": ["null", "string"]
47
+ }
186
48
  }
187
49
  }
188
50
  },
189
- "merge_error": {
190
- "type": ["null", "boolean", "string"]
191
- },
192
- "first_contribution": {
193
- "type": ["null", "boolean"]
51
+ "committer_name": {
52
+ "type": ["null", "string"]
194
53
  },
195
- "user": {
196
- "type": ["null", "object"]
54
+ "committer_email": {
55
+ "type": ["null", "string"]
197
56
  },
198
- "merge_request_iid": {
199
- "type": ["null", "integer"]
57
+ "committed_date": {
58
+ "type": ["null", "string"],
59
+ "format": "date-time"
200
60
  },
201
- "draft": {
202
- "type": ["null", "boolean"]
61
+ "trailers": {
62
+ "type": ["null", "object"]
203
63
  },
204
- "detailed_merge_status": {
64
+ "web_url": {
205
65
  "type": ["null", "string"]
206
66
  },
207
- "squash_on_merge": {
208
- "type": ["null", "boolean"]
209
- },
210
- "merge_user": {
67
+ "stats": {
211
68
  "type": ["null", "object"],
212
69
  "properties": {
213
- "id": {
70
+ "additions": {
214
71
  "type": ["null", "integer"]
215
72
  },
216
- "name": {
217
- "type": ["null", "string"]
218
- },
219
- "username": {
220
- "type": ["null", "string"]
221
- },
222
- "state": {
223
- "type": ["null", "string"]
224
- },
225
- "avatar_url": {
226
- "type": ["null", "string"]
73
+ "deletions": {
74
+ "type": ["null", "integer"]
227
75
  },
228
- "web_url": {
229
- "type": ["null", "string"]
76
+ "total": {
77
+ "type": ["null", "integer"]
230
78
  }
231
79
  }
80
+ },
81
+ "merge_request_iid": {
82
+ "type": ["null", "integer"]
232
83
  }
233
84
  }
234
85
  }
@@ -194,6 +194,9 @@
194
194
  },
195
195
  "web_url": {
196
196
  "type": ["null", "string"]
197
+ },
198
+ "locked": {
199
+ "type": ["null", "boolean"]
197
200
  }
198
201
  }
199
202
  }
@@ -63,6 +63,9 @@
63
63
  },
64
64
  "web_url": {
65
65
  "type": ["null", "string"]
66
+ },
67
+ "locked": {
68
+ "type": ["null", "boolean"]
66
69
  }
67
70
  }
68
71
  },
@@ -123,6 +123,9 @@
123
123
  },
124
124
  "members": {
125
125
  "type": ["null", "string"]
126
+ },
127
+ "cluster_agents": {
128
+ "type": ["null", "string"]
126
129
  }
127
130
  }
128
131
  },
@@ -329,6 +332,15 @@
329
332
  },
330
333
  "packages_size": {
331
334
  "type": ["null", "integer"]
335
+ },
336
+ "container_registry_size": {
337
+ "type": ["null", "integer"]
338
+ },
339
+ "pipeline_artifacts_size": {
340
+ "type": ["null", "integer"]
341
+ },
342
+ "uploads_size": {
343
+ "type": ["null", "integer"]
332
344
  }
333
345
  }
334
346
  },
@@ -492,6 +504,12 @@
492
504
  },
493
505
  "ci_restrict_pipeline_cancellation_role": {
494
506
  "type": ["null", "string"]
507
+ },
508
+ "repository_object_format": {
509
+ "type": ["null", "string"]
510
+ },
511
+ "warn_about_potentially_unwanted_characters": {
512
+ "type": ["null", "boolean"]
495
513
  }
496
514
  }
497
515
  }
source_gitlab/streams.py CHANGED
@@ -339,8 +339,10 @@ class MergeRequests(IncrementalGitlabChildStream):
339
339
 
340
340
 
341
341
  class MergeRequestCommits(GitlabChildStream):
342
+ """Docs: https://docs.gitlab.com/ee/api/merge_requests.html#get-single-merge-request-commits"""
343
+
342
344
  path_list = ["project_id", "iid"]
343
- path_template = "projects/{project_id}/merge_requests/{iid}"
345
+ path_template = "projects/{project_id}/merge_requests/{iid}/commits"
344
346
 
345
347
  def transform(self, record, stream_slice: Mapping[str, Any] = None, **kwargs):
346
348
  super().transform(record, stream_slice, **kwargs)
@@ -1,141 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: airbyte-source-gitlab
3
- Version: 2.1.1
4
- Summary: Source implementation for Gitlab.
5
- Author: Airbyte
6
- Author-email: contact@airbyte.io
7
- Description-Content-Type: text/markdown
8
- Requires-Dist: airbyte-cdk
9
- Requires-Dist: vcrpy ==4.1.1
10
- Provides-Extra: tests
11
- Requires-Dist: requests-mock ~=1.9.3 ; extra == 'tests'
12
- Requires-Dist: pytest ~=6.1 ; extra == 'tests'
13
- Requires-Dist: requests-mock ; extra == 'tests'
14
- Requires-Dist: pytest-mock ; extra == 'tests'
15
-
16
- # Gitlab Source
17
-
18
- This is the repository for the Gitlab source connector, written in Python.
19
- For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.io/integrations/sources/gitlab).
20
-
21
-
22
- **To iterate on this connector, make sure to complete this prerequisites section.**
23
-
24
- From this connector directory, create a virtual environment:
25
- ```
26
- python -m venv .venv
27
- ```
28
-
29
- This will generate a virtualenv for this module in `.venv/`. Make sure this venv is active in your
30
- development environment of choice. To activate it from the terminal, run:
31
- ```
32
- source .venv/bin/activate
33
- pip install -r requirements.txt
34
- ```
35
- If you are in an IDE, follow your IDE's instructions to activate the virtualenv.
36
-
37
- Note that while we are installing dependencies from `requirements.txt`, you should only edit `setup.py` for your dependencies. `requirements.txt` is
38
- used for editable installs (`pip install -e`) to pull in Python dependencies from the monorepo and will call `setup.py`.
39
- If this is mumbo jumbo to you, don't worry about it, just put your deps in `setup.py` but install using `pip install -r requirements.txt` and everything
40
- should work as you expect.
41
-
42
- **If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.io/integrations/sources/gitlab)
43
- to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_gitlab/spec.json` file.
44
- Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information.
45
- See `integration_tests/sample_config.json` for a sample config file.
46
-
47
- **If you are an Airbyte core member**, copy the credentials in Lastpass under the secret name `source gitlab test creds`
48
- and place them into `secrets/config.json`.
49
-
50
- ```
51
- python main.py spec
52
- python main.py check --config secrets/config.json
53
- python main.py discover --config secrets/config.json
54
- python main.py read --config secrets/config.json --catalog integration_tests/configured_catalog.json
55
- ```
56
-
57
-
58
-
59
-
60
- The Airbyte way of building this connector is to use our `airbyte-ci` tool.
61
- You can follow install instructions [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md#L1).
62
- Then running the following command will build your connector:
63
-
64
- ```bash
65
- airbyte-ci connectors --name=source-gitlab build
66
- ```
67
- Once the command is done, you will find your connector image in your local docker registry: `airbyte/source-gitlab:dev`.
68
-
69
- When contributing on our connector you might need to customize the build process to add a system dependency or set an env var.
70
- You can customize our build process by adding a `build_customization.py` module to your connector.
71
- 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.
72
- It will be imported at runtime by our build process and the functions will be called if they exist.
73
-
74
- Here is an example of a `build_customization.py` module:
75
- ```python
76
- from __future__ import annotations
77
-
78
- from typing import TYPE_CHECKING
79
-
80
- if TYPE_CHECKING:
81
- from dagger import Container
82
-
83
-
84
- async def pre_connector_install(base_image_container: Container) -> Container:
85
- return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value")
86
-
87
- async def post_connector_install(connector_container: Container) -> Container:
88
- return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value")
89
- ```
90
-
91
- This connector is built using our dynamic built process in `airbyte-ci`.
92
- The base image used to build it is defined within the metadata.yaml file under the `connectorBuildOptions`.
93
- The build logic is defined using [Dagger](https://dagger.io/) [here](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/pipelines/builds/python_connectors.py).
94
- It does not rely on a Dockerfile.
95
-
96
- If you would like to patch our connector and build your own a simple approach would be to:
97
-
98
- 1. Create your own Dockerfile based on the latest version of the connector image.
99
- ```Dockerfile
100
- FROM airbyte/source-gitlab:latest
101
-
102
- COPY . ./airbyte/integration_code
103
- RUN pip install ./airbyte/integration_code
104
-
105
- ```
106
- Please use this as an example. This is not optimized.
107
-
108
- 2. Build your image:
109
- ```bash
110
- docker build -t airbyte/source-gitlab:dev .
111
- docker run airbyte/source-gitlab:dev spec
112
- ```
113
- Then run any of the connector commands as follows:
114
- ```
115
- docker run --rm airbyte/source-gitlab:dev spec
116
- docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-gitlab:dev check --config /secrets/config.json
117
- docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-gitlab:dev discover --config /secrets/config.json
118
- docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-gitlab:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json
119
- ```
120
-
121
- You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md):
122
- ```bash
123
- airbyte-ci connectors --name=source-gitlab test
124
- ```
125
-
126
- Customize `acceptance-test-config.yml` file to configure tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information.
127
- If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py.
128
-
129
- All of your dependencies should go in `setup.py`, NOT `requirements.txt`. The requirements file is only used to connect internal Airbyte dependencies in the monorepo for local development.
130
- We split dependencies between two groups, dependencies that are:
131
- * required for your connector to work need to go to `MAIN_REQUIREMENTS` list.
132
- * required for the testing need to go to `TEST_REQUIREMENTS` list
133
-
134
- You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what?
135
- 1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-gitlab test`
136
- 2. Bump the connector version in `metadata.yaml`: increment the `dockerImageTag` value. Please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors).
137
- 3. Make sure the `metadata.yaml` content is up to date.
138
- 4. Make the connector documentation and its changelog is up to date (`docs/integrations/sources/gitlab.md`).
139
- 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention).
140
- 6. Pat yourself on the back for being an awesome contributor.
141
- 7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master.
@@ -1,43 +0,0 @@
1
- integration_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- integration_tests/abnormal_state.json,sha256=H8TlXmMxhP4DHDO_mj3WV-dKoG5HqHBDdO-j-0WBNUo,964
3
- integration_tests/acceptance.py,sha256=8eU9iSDbmHyufPvAouJGhPMgPAFTCP8IKIKHLm7u5TE,435
4
- integration_tests/configured_catalog.json,sha256=z8RTRtPh-XhQ6uQTbA0mYtl5FfjfREd3o2ZKf2OPZvA,7694
5
- integration_tests/incremental_catalog.json,sha256=dsQaoDNxejOB9jHXMfqzm-JHN8vUvybwQ3xvl85Lt68,1774
6
- integration_tests/invalid_config.json,sha256=Sl16cmcNBcExldATlJS6gNUT7tSZV_ogmfArpcL3mjw,303
7
- integration_tests/sample_config.json,sha256=UROXW83qtFIkUgi6J86gn1aHgWqwY2n4vKgCfzgZkVQ,169
8
- integration_tests/sample_state.json,sha256=YVhwyZIhGQ3o_pmnWF_Jbs1zj_sRsaTjeId04ny7IHQ,400
9
- source_gitlab/__init__.py,sha256=Bip0P3F1yGxbb0nNwdTE8i98KtkuTT_MzZbMeSxziBM,1134
10
- source_gitlab/config_migrations.py,sha256=ehidh0Cj9qwM5b7mxShnU_w6nyIOviKquNBcqXoxsNY,3818
11
- source_gitlab/run.py,sha256=opjAlKxINNpsekbyOYAAxh25DxI7gTKg5ohJmDwe0q0,403
12
- source_gitlab/source.py,sha256=_ovomkDxlb62M4PqNczTRk29grlNEsx9Scoy-79eebM,12072
13
- source_gitlab/spec.json,sha256=0eit0zD-6kdcaNhJ1sAf0ABgIUwnlPV87Sbu3A4JvG0,6132
14
- source_gitlab/streams.py,sha256=hvAvtdzZxyctduxhvs3EqnsKjhQ4lejRoZ3CYhfORsQ,16013
15
- source_gitlab/utils.py,sha256=idtKZiT-ILRRtpO0rxPJ1wim-mWN6ewzN_KgLCmogBs,456
16
- source_gitlab/schemas/branches.json,sha256=iQMHidNwdx2g4UgfkeOZPhpG67K--S2jPM-XLBPhJb8,800
17
- source_gitlab/schemas/commits.json,sha256=2VgI6Ih5lrzzeuIacVNqigM8RwR93u2cEwD21LmEpvU,1676
18
- source_gitlab/schemas/deployments.json,sha256=GDnm625zWbz4YDTBI4x8_jeuIRcUn5LZLK8tP6ZHewo,5084
19
- source_gitlab/schemas/epic_issues.json,sha256=EevkQgr8Wmr1e0-JmGtHRIzjk_qigIvyoDQTV7iqYMA,5301
20
- source_gitlab/schemas/epics.json,sha256=XceeYZDyqeqiZsRYhwn472YHh4ZE2fsog_bIOuk_YQI,2790
21
- source_gitlab/schemas/group_issue_boards.json,sha256=CWr80x0rN0HGg_wI6Bi2ogKCqtRqZONK_0ol2W5R1jk,1687
22
- source_gitlab/schemas/group_labels.json,sha256=bthJK3U3vUvOfTPQaXINgzQmVba7K1fDeMvl6aCI8GQ,785
23
- source_gitlab/schemas/group_members.json,sha256=5NbL5GzDrEWyM3RGsQ1Yk30FHaT8N9w99-mUYkVyVXY,1261
24
- source_gitlab/schemas/group_milestones.json,sha256=qdmCjvcqO5gdMy5Eos8zPvct0wKQkx8qgbk37ZE-Mgg,898
25
- source_gitlab/schemas/groups.json,sha256=AKxn7Er0l539P3CM7NAAuZs1t-W2bqg5WHz3h6UW2-E,3622
26
- source_gitlab/schemas/issues.json,sha256=ygvmoIGtsSBkx5luFrrpuzj5NjHB5NS4G28eDwiwXNg,5556
27
- source_gitlab/schemas/jobs.json,sha256=yX5SnTg8z0iGInFjJ9WDMjD-3l70epwzKn4WrqClV4E,2275
28
- source_gitlab/schemas/merge_request_commits.json,sha256=VcgYRICw4xoTZgPv-nn63J-hSlbVmdZI1HsaYdhwjEk,5024
29
- source_gitlab/schemas/merge_requests.json,sha256=h7MTis7FkeUzzc1w-McPLgLENS4b1-TBgTzQsqG9ZKI,4319
30
- source_gitlab/schemas/pipelines.json,sha256=jcI4ucib_OipiXhsjzEUvECX301uHF8sPE7X2PanosY,777
31
- source_gitlab/schemas/pipelines_extended.json,sha256=6YT0iinnrSxsN_O-ucmsjie08tMze1dyFzCNFWus6uY,1972
32
- source_gitlab/schemas/project_labels.json,sha256=uNvsTB3PiEsyb-iAr4qfCH4swYzoEpnsNjEahgRLqZQ,913
33
- source_gitlab/schemas/project_members.json,sha256=TACxu3MWiteGh2oy1-MGlGmjPhsN3vHqrdmACT2Bzwo,1263
34
- source_gitlab/schemas/project_milestones.json,sha256=18lSl2h-IMYkpc13DF86jQ7fODI5yZd4ad6eaiGlicQ,900
35
- source_gitlab/schemas/projects.json,sha256=hyfYxWZpl8t03eV6gmXlwiJWy9-wo1BYMUU-zHLPtyo,11641
36
- source_gitlab/schemas/releases.json,sha256=NfDIhLN2DBZhXjhn_5Xbw8PUO2e5KRgeiU8HgjsSoXU,1781
37
- source_gitlab/schemas/tags.json,sha256=uyRFTJF2d9z2tbIp69NhkJmrRMmaEuHEdSagP99iqjw,771
38
- source_gitlab/schemas/users.json,sha256=h89E6ZHQWbwU_MhErTZTtfiIZjF6aLAbHZQJ8TCTLY8,496
39
- airbyte_source_gitlab-2.1.1.dist-info/METADATA,sha256=BbHtNFCLJRksAHqs4c4Nft72DT5K_sywAzyHb2uHP24,7487
40
- airbyte_source_gitlab-2.1.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
41
- airbyte_source_gitlab-2.1.1.dist-info/entry_points.txt,sha256=8E3Ff2-kirIUmA3q9Klx_7xsdjgjw9NMM8qxaRxL3_Y,56
42
- airbyte_source_gitlab-2.1.1.dist-info/top_level.txt,sha256=sjyCsT32VNXvSMgodDBbaoZfMnJrK3ZKYUxdgHec2sQ,32
43
- airbyte_source_gitlab-2.1.1.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- source-gitlab = source_gitlab.run:run
@@ -1,2 +0,0 @@
1
- integration_tests
2
- source_gitlab
File without changes
@@ -1,54 +0,0 @@
1
- [
2
- {
3
- "type": "STREAM",
4
- "stream": {
5
- "stream_state": {
6
- "25157276": {
7
- "created_at": "2121-03-18T12:51:05+00:00"
8
- }
9
- },
10
- "stream_descriptor": {
11
- "name": "commits"
12
- }
13
- }
14
- },
15
- {
16
- "type": "STREAM",
17
- "stream": {
18
- "stream_state": {
19
- "25157276": {
20
- "updated_at": "2121-03-15T16:08:06.041000+00:00"
21
- }
22
- },
23
- "stream_descriptor": {
24
- "name": "issues"
25
- }
26
- }
27
- },
28
- {
29
- "type": "STREAM",
30
- "stream": {
31
- "stream_state": {
32
- "25157276": {
33
- "updated_at": "2121-03-18T12:51:06.319000+00:00"
34
- }
35
- },
36
- "stream_descriptor": {
37
- "name": "merge_requests"
38
- }
39
- }
40
- },
41
- {
42
- "type": "STREAM",
43
- "stream": {
44
- "stream_state": {
45
- "25157276": {
46
- "updated_at": "2121-03-18T12:51:52.007000+00:00"
47
- }
48
- },
49
- "stream_descriptor": {
50
- "name": "pipelines"
51
- }
52
- }
53
- }
54
- ]
@@ -1,16 +0,0 @@
1
- #
2
- # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
- #
4
-
5
-
6
- import pytest
7
-
8
- pytest_plugins = ("connector_acceptance_test.plugin",)
9
-
10
-
11
- @pytest.fixture(scope="session", autouse=True)
12
- def connector_setup():
13
- """This fixture is a placeholder for external resources that acceptance test might require."""
14
- # TODO: setup test dependencies if needed. otherwise remove the TODO comments
15
- yield
16
- # TODO: clean up test dependencies
@@ -1,271 +0,0 @@
1
- {
2
- "streams": [
3
- {
4
- "stream": {
5
- "name": "groups",
6
- "json_schema": {},
7
- "supported_sync_modes": ["full_refresh"],
8
- "source_defined_primary_key": [["id"]]
9
- },
10
- "sync_mode": "full_refresh",
11
- "destination_sync_mode": "overwrite",
12
- "primary_key": [["id"]]
13
- },
14
- {
15
- "stream": {
16
- "name": "projects",
17
- "json_schema": {},
18
- "supported_sync_modes": ["full_refresh"],
19
- "source_defined_primary_key": [["id"]]
20
- },
21
- "sync_mode": "full_refresh",
22
- "destination_sync_mode": "overwrite",
23
- "primary_key": [["id"]]
24
- },
25
- {
26
- "stream": {
27
- "name": "branches",
28
- "json_schema": {},
29
- "supported_sync_modes": ["full_refresh"],
30
- "source_defined_primary_key": [["name"]]
31
- },
32
- "sync_mode": "full_refresh",
33
- "destination_sync_mode": "overwrite",
34
- "primary_key": [["name"]]
35
- },
36
- {
37
- "stream": {
38
- "name": "commits",
39
- "json_schema": {},
40
- "supported_sync_modes": ["full_refresh", "incremental"],
41
- "source_defined_cursor": true,
42
- "default_cursor_field": ["created_at"],
43
- "source_defined_primary_key": [["id"]]
44
- },
45
- "sync_mode": "incremental",
46
- "destination_sync_mode": "append",
47
- "cursor_field": ["created_at"],
48
- "primary_key": [["id"]]
49
- },
50
- {
51
- "stream": {
52
- "name": "group_issue_boards",
53
- "json_schema": {},
54
- "supported_sync_modes": ["full_refresh"],
55
- "source_defined_primary_key": [["id"]]
56
- },
57
- "sync_mode": "full_refresh",
58
- "destination_sync_mode": "overwrite",
59
- "primary_key": [["id"]]
60
- },
61
- {
62
- "stream": {
63
- "name": "issues",
64
- "json_schema": {},
65
- "supported_sync_modes": ["full_refresh", "incremental"],
66
- "source_defined_cursor": true,
67
- "default_cursor_field": ["updated_at"],
68
- "source_defined_primary_key": [["id"]]
69
- },
70
- "sync_mode": "incremental",
71
- "destination_sync_mode": "append",
72
- "cursor_field": ["updated_at"],
73
- "primary_key": [["id"]]
74
- },
75
- {
76
- "stream": {
77
- "name": "jobs",
78
- "json_schema": {},
79
- "supported_sync_modes": ["full_refresh"],
80
- "source_defined_primary_key": [["id"]]
81
- },
82
- "sync_mode": "full_refresh",
83
- "destination_sync_mode": "overwrite",
84
- "primary_key": [["id"]]
85
- },
86
- {
87
- "stream": {
88
- "name": "project_milestones",
89
- "json_schema": {},
90
- "supported_sync_modes": ["full_refresh"],
91
- "source_defined_primary_key": [["id"]]
92
- },
93
- "sync_mode": "full_refresh",
94
- "destination_sync_mode": "overwrite",
95
- "primary_key": [["id"]]
96
- },
97
- {
98
- "stream": {
99
- "name": "group_milestones",
100
- "json_schema": {},
101
- "supported_sync_modes": ["full_refresh"],
102
- "source_defined_primary_key": [["id"]]
103
- },
104
- "sync_mode": "full_refresh",
105
- "destination_sync_mode": "overwrite",
106
- "primary_key": [["id"]]
107
- },
108
- {
109
- "stream": {
110
- "name": "project_members",
111
- "json_schema": {},
112
- "supported_sync_modes": ["full_refresh"],
113
- "source_defined_primary_key": [["id"]]
114
- },
115
- "sync_mode": "full_refresh",
116
- "destination_sync_mode": "overwrite",
117
- "primary_key": [["id"]]
118
- },
119
- {
120
- "stream": {
121
- "name": "group_members",
122
- "json_schema": {},
123
- "supported_sync_modes": ["full_refresh"],
124
- "source_defined_primary_key": [["id"]]
125
- },
126
- "sync_mode": "full_refresh",
127
- "destination_sync_mode": "overwrite",
128
- "primary_key": [["id"]]
129
- },
130
- {
131
- "stream": {
132
- "name": "project_labels",
133
- "json_schema": {},
134
- "supported_sync_modes": ["full_refresh"],
135
- "source_defined_primary_key": [["id"]]
136
- },
137
- "sync_mode": "full_refresh",
138
- "destination_sync_mode": "overwrite",
139
- "primary_key": [["id"]]
140
- },
141
- {
142
- "stream": {
143
- "name": "group_labels",
144
- "json_schema": {},
145
- "supported_sync_modes": ["full_refresh"],
146
- "source_defined_primary_key": [["id"]]
147
- },
148
- "sync_mode": "full_refresh",
149
- "destination_sync_mode": "overwrite",
150
- "primary_key": [["id"]]
151
- },
152
- {
153
- "stream": {
154
- "name": "merge_requests",
155
- "json_schema": {},
156
- "supported_sync_modes": ["full_refresh", "incremental"],
157
- "source_defined_cursor": true,
158
- "default_cursor_field": ["updated_at"],
159
- "source_defined_primary_key": [["id"]]
160
- },
161
- "sync_mode": "incremental",
162
- "destination_sync_mode": "append",
163
- "cursor_field": ["updated_at"],
164
- "primary_key": [["id"]]
165
- },
166
- {
167
- "stream": {
168
- "name": "merge_request_commits",
169
- "json_schema": {},
170
- "supported_sync_modes": ["full_refresh"],
171
- "source_defined_primary_key": [["id"]]
172
- },
173
- "sync_mode": "full_refresh",
174
- "destination_sync_mode": "overwrite",
175
- "primary_key": [["id"]]
176
- },
177
- {
178
- "stream": {
179
- "name": "releases",
180
- "json_schema": {},
181
- "supported_sync_modes": ["full_refresh"],
182
- "source_defined_primary_key": [["name"]]
183
- },
184
- "sync_mode": "full_refresh",
185
- "destination_sync_mode": "overwrite",
186
- "primary_key": [["name"]]
187
- },
188
- {
189
- "stream": {
190
- "name": "deployments",
191
- "json_schema": {},
192
- "supported_sync_modes": ["full_refresh", "incremental"],
193
- "source_defined_cursor": true,
194
- "default_cursor_field": ["updated_at"],
195
- "source_defined_primary_key": [["id"]]
196
- },
197
- "sync_mode": "full_refresh",
198
- "destination_sync_mode": "overwrite",
199
- "primary_key": [["id"]]
200
- },
201
- {
202
- "stream": {
203
- "name": "tags",
204
- "json_schema": {},
205
- "supported_sync_modes": ["full_refresh"],
206
- "source_defined_primary_key": [["name"]]
207
- },
208
- "sync_mode": "full_refresh",
209
- "destination_sync_mode": "overwrite",
210
- "primary_key": [["name"]]
211
- },
212
- {
213
- "stream": {
214
- "name": "pipelines",
215
- "json_schema": {},
216
- "supported_sync_modes": ["full_refresh", "incremental"],
217
- "source_defined_cursor": true,
218
- "default_cursor_field": ["updated_at"],
219
- "source_defined_primary_key": [["id"]]
220
- },
221
- "sync_mode": "incremental",
222
- "destination_sync_mode": "append",
223
- "cursor_field": ["updated_at"],
224
- "primary_key": [["id"]]
225
- },
226
- {
227
- "stream": {
228
- "name": "pipelines_extended",
229
- "json_schema": {},
230
- "supported_sync_modes": ["full_refresh"],
231
- "source_defined_primary_key": [["id"]]
232
- },
233
- "sync_mode": "full_refresh",
234
- "destination_sync_mode": "overwrite",
235
- "primary_key": [["id"]]
236
- },
237
- {
238
- "stream": {
239
- "name": "users",
240
- "json_schema": {},
241
- "supported_sync_modes": ["full_refresh"],
242
- "source_defined_primary_key": [["id"]]
243
- },
244
- "sync_mode": "full_refresh",
245
- "destination_sync_mode": "overwrite",
246
- "primary_key": [["id"]]
247
- },
248
- {
249
- "stream": {
250
- "name": "epics",
251
- "json_schema": {},
252
- "supported_sync_modes": ["full_refresh"],
253
- "source_defined_primary_key": [["iid"]]
254
- },
255
- "sync_mode": "full_refresh",
256
- "destination_sync_mode": "overwrite",
257
- "primary_key": [["iid"]]
258
- },
259
- {
260
- "stream": {
261
- "name": "epic_issues",
262
- "json_schema": {},
263
- "supported_sync_modes": ["full_refresh"],
264
- "source_defined_primary_key": [["epic_issue_id"]]
265
- },
266
- "sync_mode": "full_refresh",
267
- "destination_sync_mode": "overwrite",
268
- "primary_key": [["epic_issue_id"]]
269
- }
270
- ]
271
- }
@@ -1,60 +0,0 @@
1
- {
2
- "streams": [
3
- {
4
- "stream": {
5
- "name": "commits",
6
- "json_schema": {},
7
- "supported_sync_modes": ["full_refresh", "incremental"],
8
- "source_defined_cursor": true,
9
- "default_cursor_field": ["created_at"],
10
- "source_defined_primary_key": [["id"]]
11
- },
12
- "sync_mode": "incremental",
13
- "destination_sync_mode": "append",
14
- "cursor_field": ["created_at"],
15
- "primary_key": [["id"]]
16
- },
17
- {
18
- "stream": {
19
- "name": "issues",
20
- "json_schema": {},
21
- "supported_sync_modes": ["full_refresh", "incremental"],
22
- "source_defined_cursor": true,
23
- "default_cursor_field": ["updated_at"],
24
- "source_defined_primary_key": [["id"]]
25
- },
26
- "sync_mode": "incremental",
27
- "destination_sync_mode": "append",
28
- "cursor_field": ["updated_at"],
29
- "primary_key": [["id"]]
30
- },
31
- {
32
- "stream": {
33
- "name": "merge_requests",
34
- "json_schema": {},
35
- "supported_sync_modes": ["full_refresh", "incremental"],
36
- "source_defined_cursor": true,
37
- "default_cursor_field": ["updated_at"],
38
- "source_defined_primary_key": [["id"]]
39
- },
40
- "sync_mode": "incremental",
41
- "destination_sync_mode": "append",
42
- "cursor_field": ["updated_at"],
43
- "primary_key": [["id"]]
44
- },
45
- {
46
- "stream": {
47
- "name": "pipelines",
48
- "json_schema": {},
49
- "supported_sync_modes": ["full_refresh", "incremental"],
50
- "source_defined_cursor": true,
51
- "default_cursor_field": ["updated_at"],
52
- "source_defined_primary_key": [["id"]]
53
- },
54
- "sync_mode": "incremental",
55
- "destination_sync_mode": "append",
56
- "cursor_field": ["updated_at"],
57
- "primary_key": [["id"]]
58
- }
59
- ]
60
- }
@@ -1,11 +0,0 @@
1
- {
2
- "api_url": "gitlab.com",
3
- "private_token": "private_token-fake",
4
- "start_date": "2021-01-01T00:00:00Z",
5
- "groups": "new-group-airbute",
6
- "projects": "new-group-airbute/new-ci-test-project",
7
- "credentials": {
8
- "auth_type": "access_token",
9
- "access_token": "migrated_from_old_config"
10
- }
11
- }
@@ -1,7 +0,0 @@
1
- {
2
- "api_url": "gitlab.com",
3
- "private_token": "<user`s_private_token>",
4
- "groups": "new-group",
5
- "projects": "new-ci-test",
6
- "start_date": "2021-01-01T00:00:00Z"
7
- }
@@ -1,22 +0,0 @@
1
- {
2
- "commits": {
3
- "25157276": {
4
- "created_at": "2021-03-18T12:51:05+00:00"
5
- }
6
- },
7
- "issues": {
8
- "25157276": {
9
- "updated_at": "2021-03-15T16:08:06.041000+00:00"
10
- }
11
- },
12
- "merge_requests": {
13
- "25157276": {
14
- "updated_at": "2021-03-18T12:51:06.319000+00:00"
15
- }
16
- },
17
- "pipelines": {
18
- "25157276": {
19
- "updated_at": "2021-03-18T12:51:52.007000+00:00"
20
- }
21
- }
22
- }