Skip to content

Commit b25671b

Browse files
fix: Add run_command function to build.py
Co-Authored-By: Aaron <AJ> Steers <[email protected]>
1 parent ba09434 commit b25671b

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

airbyte_cdk/utils/docker/build.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,68 @@
1818
logger = logging.getLogger("airbyte-cdk.utils.docker.build")
1919

2020

21+
def run_command(
22+
connector_dir: Path,
23+
tag: str = "dev",
24+
platform: str = "linux/amd64",
25+
no_verify: bool = False,
26+
verbose: bool = False,
27+
) -> int:
28+
"""Run the build command with the given arguments.
29+
30+
Args:
31+
connector_dir: Path to the connector directory.
32+
tag: Tag to apply to the built image.
33+
platform: Platform to build for.
34+
no_verify: Whether to skip verification of the built image.
35+
verbose: Whether to enable verbose logging.
36+
37+
Returns:
38+
Exit code (0 for success, non-zero for failure).
39+
"""
40+
set_up_logging(verbose)
41+
42+
if not verify_docker_installation():
43+
logger.error("Docker is not installed or not running. Please install Docker and try again.")
44+
return 1
45+
46+
if not connector_dir.exists():
47+
logger.error(f"Connector directory not found: {connector_dir}")
48+
return 1
49+
50+
try:
51+
metadata = read_metadata(connector_dir)
52+
logger.info(f"Connector: {metadata.dockerRepository}")
53+
logger.info(f"Version: {metadata.dockerImageTag}")
54+
except (FileNotFoundError, ValueError) as e:
55+
logger.error(f"Error reading connector metadata: {e}")
56+
return 1
57+
58+
try:
59+
if metadata.connectorBuildOptions and metadata.connectorBuildOptions.baseImage:
60+
image_name = build_from_base_image(connector_dir, metadata, tag, platform)
61+
else:
62+
image_name = build_from_dockerfile(connector_dir, metadata, tag, platform)
63+
64+
if not no_verify:
65+
if verify_image(image_name):
66+
logger.info(f"Build completed successfully: {image_name}")
67+
return 0
68+
else:
69+
logger.error(f"Built image failed verification: {image_name}")
70+
return 1
71+
else:
72+
logger.info(f"Build completed successfully (without verification): {image_name}")
73+
return 0
74+
75+
except Exception as e:
76+
logger.error(f"Error building Docker image: {e}")
77+
if verbose:
78+
import traceback
79+
logger.error(traceback.format_exc())
80+
return 1
81+
82+
2183
def set_up_logging(verbose: bool = False) -> None:
2284
"""Set up logging configuration.
2385

0 commit comments

Comments
 (0)