Skip to content

Commit 9271636

Browse files
authored
airbyte-ci: ignore third party connectors on publish (#44025)
1 parent 21ca432 commit 9271636

File tree

4 files changed

+53
-30
lines changed

4 files changed

+53
-30
lines changed

airbyte-ci/connectors/pipelines/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,7 @@ airbyte-ci connectors --language=low-code migrate-to-manifest-only
790790

791791
| Version | PR | Description |
792792
|---------| ---------------------------------------------------------- |------------------------------------------------------------------------------------------------------------------------------|
793+
| 4.32.4 | [#44025](https://github.com/airbytehq/airbyte/pull/44025) | Ignore third party connectors on `publish`. |
793794
| 4.32.3 | [#44118](https://github.com/airbytehq/airbyte/pull/44118) | Improve error handling in live tests. |
794795
| 4.32.2 | [#43970](https://github.com/airbytehq/airbyte/pull/43970) | Make `connectors publish` early exit if no connectors are selected. |
795796
| 4.32.1 | [#41642](https://github.com/airbytehq/airbyte/pull/41642) | Avoid transient publish failures by increasing `POETRY_REQUESTS_TIMEOUT` and setting retries on `PublishToPythonRegistry`. |

airbyte-ci/connectors/pipelines/pipelines/airbyte_ci/connectors/publish/commands.py

+23
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#
22
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
33
#
4+
from __future__ import annotations
5+
6+
from typing import TYPE_CHECKING
47

58
import asyncclick as click
69
from pipelines import main_logger
@@ -15,6 +18,23 @@
1518
from pipelines.helpers.utils import fail_if_missing_docker_hub_creds
1619
from pipelines.models.secrets import Secret
1720

21+
if TYPE_CHECKING:
22+
from typing import Iterable, List
23+
24+
from pipelines.helpers.connectors.modifed import ConnectorWithModifiedFiles
25+
26+
27+
def filter_out_third_party_connectors(
28+
selected_connectors_with_modified_files: Iterable[ConnectorWithModifiedFiles],
29+
) -> List[ConnectorWithModifiedFiles]:
30+
filtered_connectors = []
31+
for connector in selected_connectors_with_modified_files:
32+
if connector.is_third_party:
33+
main_logger.info(f"Skipping third party connector {connector.technical_name} from the list of connectors")
34+
else:
35+
filtered_connectors.append(connector)
36+
return filtered_connectors
37+
1838

1939
@click.command(cls=DaggerPipelineCommand, help="Publish all images for the selected connectors.")
2040
@click_ci_requirements_option()
@@ -90,6 +110,9 @@ async def publish(
90110
python_registry_check_url: str,
91111
) -> bool:
92112

113+
ctx.obj["selected_connectors_with_modified_files"] = filter_out_third_party_connectors(
114+
ctx.obj["selected_connectors_with_modified_files"]
115+
)
93116
if not ctx.obj["selected_connectors_with_modified_files"]:
94117
return True
95118

airbyte-ci/connectors/pipelines/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[tool.poetry]
66
name = "pipelines"
7-
version = "4.32.3"
7+
version = "4.32.4"
88
description = "Packaged maintained by the connector operations team to perform CI for connectors' pipelines"
99
authors = ["Airbyte <[email protected]>"]
1010

airbyte-ci/connectors/pipelines/tests/test_commands/test_groups/test_connectors.py

+28-29
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ def test_get_selected_connectors_by_name_no_file_modification():
3434
modified_files=set(),
3535
)
3636

37-
assert len(selected_connectors) == 1
37+
has_strict_encrypt_variant = any("-strict-encrypt" in c.technical_name for c in selected_connectors)
38+
if has_strict_encrypt_variant:
39+
assert len(selected_connectors) == 2
40+
else:
41+
assert len(selected_connectors) == 1
42+
3843
assert isinstance(selected_connectors[0], ConnectorWithModifiedFiles)
3944
assert selected_connectors[0].technical_name == connector.technical_name
4045
assert not selected_connectors[0].modified_files
@@ -138,7 +143,7 @@ def test_get_selected_connectors_with_modified_and_language():
138143
assert len(selected_connectors) == 2
139144
else:
140145
assert len(selected_connectors) == 1
141-
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
146+
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
142147

143148

144149
def test_get_selected_connectors_with_modified_and_support_level():
@@ -159,7 +164,7 @@ def test_get_selected_connectors_with_modified_and_support_level():
159164
assert len(selected_connectors) == 2
160165
else:
161166
assert len(selected_connectors) == 1
162-
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
167+
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
163168

164169

165170
def test_get_selected_connectors_with_modified_and_metadata_only():
@@ -180,12 +185,16 @@ def test_get_selected_connectors_with_modified_and_metadata_only():
180185
modified_files=modified_files,
181186
)
182187

183-
assert len(selected_connectors) == 1
184-
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
185-
assert selected_connectors[0].modified_files == {
186-
second_modified_connector.code_directory / METADATA_FILE_NAME,
187-
second_modified_connector.code_directory / "setup.py",
188-
}
188+
has_strict_encrypt_variant = any("-strict-encrypt" in c.technical_name for c in selected_connectors)
189+
if has_strict_encrypt_variant:
190+
assert len(selected_connectors) == 2
191+
else:
192+
assert len(selected_connectors) == 1
193+
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
194+
assert selected_connectors[0].modified_files == {
195+
second_modified_connector.code_directory / METADATA_FILE_NAME,
196+
second_modified_connector.code_directory / "setup.py",
197+
}
189198

190199

191200
def test_get_selected_connectors_with_metadata_only():
@@ -205,13 +214,16 @@ def test_get_selected_connectors_with_metadata_only():
205214
metadata_query=None,
206215
modified_files=modified_files,
207216
)
208-
209-
assert len(selected_connectors) == 1
210-
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
211-
assert selected_connectors[0].modified_files == {
212-
second_modified_connector.code_directory / METADATA_FILE_NAME,
213-
second_modified_connector.code_directory / "setup.py",
214-
}
217+
has_strict_encrypt_variant = any("-strict-encrypt" in c.technical_name for c in selected_connectors)
218+
if has_strict_encrypt_variant:
219+
assert len(selected_connectors) == 2
220+
else:
221+
assert len(selected_connectors) == 1
222+
assert selected_connectors[0].technical_name == second_modified_connector.technical_name
223+
assert selected_connectors[0].modified_files == {
224+
second_modified_connector.code_directory / METADATA_FILE_NAME,
225+
second_modified_connector.code_directory / "setup.py",
226+
}
215227

216228

217229
def test_get_selected_connectors_with_metadata_query():
@@ -306,19 +318,6 @@ def click_context_obj(in_memory_secret_store):
306318
"command, command_args",
307319
[
308320
(connectors_test_command.test, []),
309-
(
310-
connectors_publish_command.publish,
311-
[
312-
"--spec-cache-gcs-credentials",
313-
'{"foo": "bar"}',
314-
"--spec-cache-bucket-name",
315-
"test",
316-
"--metadata-service-gcs-credentials",
317-
'{"foo": "bar"}',
318-
"--metadata-service-bucket-name",
319-
"test",
320-
],
321-
),
322321
(connectors_build_command.build, []),
323322
],
324323
)

0 commit comments

Comments
 (0)