Skip to content

Commit

Permalink
[airbyte-ci]: new check on python certified connector to validate the…
Browse files Browse the repository at this point in the history
…ir base image use (airbytehq#30527)

Co-authored-by: alafanechere <alafanechere@users.noreply.github.com>
  • Loading branch information
2 people authored and ariesgun committed Oct 23, 2023
1 parent dcc98dd commit d8c985c
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 2 deletions.
1 change: 1 addition & 0 deletions airbyte-ci/connectors/pipelines/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@ This command runs the Python tests for a airbyte-ci poetry package.
## Changelog
| Version | PR | Description |
|---------| ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| 2.2.0 | [#30527](https://github.com/airbytehq/airbyte/pull/30527) | Add a new check for python connectors to make sure certified connectors use our base image.
| 2.1.1 | [#31488](https://github.com/airbytehq/airbyte/pull/31488) | Improve `airbyte-ci` start time with Click Lazy load |
| 2.1.0 | [#31412](https://github.com/airbytehq/airbyte/pull/31412) | Run airbyte-ci from any where in airbyte project |
| 2.0.4 | [#31487](https://github.com/airbytehq/airbyte/pull/31487) | Allow for third party connector selections |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,3 +285,29 @@ async def _build_connector_acceptance_test(self, connector_under_test_image_tar:
)

return cat_container.with_unix_socket("/var/run/docker.sock", self.context.dagger_client.host().unix_socket("/var/run/docker.sock"))


class CheckBaseImageIsUsed(Step):
title = "Check our base image is used"

async def _run(self, *args, **kwargs) -> StepResult:
is_certified = self.context.connector.metadata.get("supportLevel") == "certified"
if not is_certified:
self.skip("Connector is not certified, it does not require the use of our base image.")

is_using_base_image = self.context.connector.metadata.get("connectorBuildOptions", {}).get("baseImage") is not None
migration_hint = f"Please run 'airbyte-ci connectors --name={self.context.connector.technical_name} migrate_to_base_image {self.context.pull_request.number}' and commit the changes."
if not is_using_base_image:
return StepResult(
self,
StepStatus.FAILURE,
stdout=f"Connector is certified but does not use our base image. {migration_hint}",
)
has_dockerfile = "Dockerfile" in await (await self.context.get_connector_dir(include="Dockerfile")).entries()
if has_dockerfile:
return StepResult(
self,
StepStatus.FAILURE,
stdout=f"Connector is certified but is still using a Dockerfile. {migration_hint}",
)
return StepResult(self, StepStatus.SUCCESS, stdout="Connector is certified and uses our base image.")
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from dagger import Container, File
from pipelines.airbyte_ci.connectors.build_image.steps.python_connectors import BuildConnectorImages
from pipelines.airbyte_ci.connectors.context import ConnectorContext
from pipelines.airbyte_ci.connectors.test.steps.common import AcceptanceTests
from pipelines.airbyte_ci.connectors.test.steps.common import AcceptanceTests, CheckBaseImageIsUsed
from pipelines.consts import LOCAL_BUILD_PLATFORM, PYPROJECT_TOML_FILE_PATH
from pipelines.dagger.actions import secrets
from pipelines.helpers.utils import export_container_to_tarball
Expand Down Expand Up @@ -228,6 +228,7 @@ async def run_all_tests(context: ConnectorContext) -> List[StepResult]:
tasks = [
task_group.soonify(IntegrationTests(context).run)(connector_container),
task_group.soonify(AcceptanceTests(context).run)(connector_image_tar_file),
task_group.soonify(CheckBaseImageIsUsed(context).run)(),
]

return step_results + [task.value for task in tasks]
Expand Down
2 changes: 1 addition & 1 deletion airbyte-ci/connectors/pipelines/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "pipelines"
version = "2.1.1"
version = "2.2.0"
description = "Packaged maintained by the connector operations team to perform CI for connectors' pipelines"
authors = ["Airbyte <contact@airbyte.io>"]

Expand Down

0 comments on commit d8c985c

Please sign in to comment.