Skip to content

Commit 9bbd2e2

Browse files
committed
[airbyte-ci]: new check on python certified connector to validate their base image use
1 parent f6e7ab5 commit 9bbd2e2

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

airbyte-ci/connectors/pipelines/pipelines/tests/common.py

+25
Original file line numberDiff line numberDiff line change
@@ -282,3 +282,28 @@ async def _build_connector_acceptance_test(self, connector_under_test_image_tar:
282282
)
283283

284284
return cat_container.with_unix_socket("/var/run/docker.sock", self.context.dagger_client.host().unix_socket("/var/run/docker.sock"))
285+
286+
287+
class CheckBaseImageIsUsed(Step):
288+
title = "Check our base image is used"
289+
290+
async def _run(self, *args, **kwargs) -> StepResult:
291+
is_certified = self.context.connector.metadata.get("supportLevel")
292+
if not is_certified:
293+
self.skip("Connector is not certified, it does not require the use of our base image.")
294+
295+
is_using_base_image = self.context.connector.metadata.get("connectorBuildOptions", {}).get("baseImage")
296+
if not is_using_base_image:
297+
return StepResult(
298+
self,
299+
StepStatus.FAILURE,
300+
stdout="Connector is certified but does not use our base image. Please set connectorBuildOptions.baseImage in the connector metadata.",
301+
)
302+
has_dockerfile = "Dockerfile" in await self.context.get_connector_dir(include="Dockerfile").entries()
303+
if has_dockerfile:
304+
return StepResult(
305+
self,
306+
StepStatus.FAILURE,
307+
stdout="Connector is certified but is still using a Dockerfile. Please remove the Dockerfile and set connectorBuildOptions.baseImage in the connector metadata.",
308+
)
309+
return StepResult(self, StepStatus.SUCCESS, stdout="Connector is certified and uses our base image.")

airbyte-ci/connectors/pipelines/pipelines/tests/python_connectors.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from pipelines.builds import LOCAL_BUILD_PLATFORM
1515
from pipelines.builds.python_connectors import BuildConnectorImage
1616
from pipelines.contexts import ConnectorContext
17-
from pipelines.tests.common import AcceptanceTests
17+
from pipelines.tests.common import AcceptanceTests, CheckBaseImageIsUsed
1818
from pipelines.utils import export_container_to_tarball
1919

2020

@@ -195,6 +195,7 @@ async def run_all_tests(context: ConnectorContext) -> List[StepResult]:
195195
tasks = [
196196
task_group.soonify(IntegrationTests(context).run)(connector_container),
197197
task_group.soonify(AcceptanceTests(context).run)(connector_image_tar_file),
198+
task_group.soonify(CheckBaseImageIsUsed(context).run)(),
198199
]
199200

200201
return step_results + [task.value for task in tasks]

0 commit comments

Comments
 (0)