diff options
author | vkalintiris <vasilis@netdata.cloud> | 2024-01-15 18:17:05 +0200 |
---|---|---|
committer | vkalintiris <vasilis@netdata.cloud> | 2024-01-16 17:06:36 +0200 |
commit | cbd20eda31f82c14959b407e55971d6c82cd1a5b (patch) | |
tree | b7fc9e3ab1b58bbb46f44beaaf4a2421cae20be3 | |
parent | 64022cec3624c4a2b6ae2240156f35a6ab493c68 (diff) |
Cleanup
-rwxr-xr-x | packaging/dag/images.py | 3 | ||||
-rwxr-xr-x | packaging/dag/main.py | 167 |
2 files changed, 19 insertions, 151 deletions
diff --git a/packaging/dag/images.py b/packaging/dag/images.py index 521af66068..824b7cd43a 100755 --- a/packaging/dag/images.py +++ b/packaging/dag/images.py @@ -66,7 +66,8 @@ def build_alpine_3_18(client, platform): return ctr -def build_alpine_3_19(client, platform): + +def build_alpine_3_19(client, platform: dagger.Platform): ctr = client.container(platform=platform).from_("alpine:3.19") pkgs = [pkg for pkg in _ALPINE_COMMON_PACKAGES] diff --git a/packaging/dag/main.py b/packaging/dag/main.py index a8e5eba5c5..387632082b 100755 --- a/packaging/dag/main.py +++ b/packaging/dag/main.py @@ -25,10 +25,12 @@ SUPPORTED_PLATFORMS = [ "linux/riscv64", ] + def netdata_installer(enable_ml=True, enable_ebpf=False, enable_go=False): cmd = [ "./netdata-installer.sh", "--disable-telemetry", + "--disable-logsmanagement" ] if not enable_ebpf: @@ -50,110 +52,32 @@ def netdata_installer(enable_ml=True, enable_ebpf=False, enable_go=False): return cmd -def container_from_image(client, platform, image, use_package_builder): - if use_package_builder: - ctr = client.container(platform=platform).from_("netdata/package-builders:" + image) - else: - ctr = image.build(client, platform=platform) - - return ctr - - -def build_image_for_platform(client, platform, image, use_package_builder): +def build_image_for_platform(client, image_name, platform: dagger.Platform, ctr : dagger.Container): repo_path = str(Path(__file__).parent.parent.parent) - cmake_build_release_path = os.path.join(repo_path, "cmake-build-release") - tag = platform.replace('/', '_') + '_' + image.cli_name + exclude_dirs = exclude=["build", "fluent-bit/build"] - externaldeps_cache = client.cache_volume(f"{tag}-externaldeps") - fluent_bit_cache = client.cache_volume(f"{tag}-fluent_bit_build") + tag = image_name + "_" + str(platform).replace('/', '_') - ctr = container_from_image(client, dagger.Platform(platform), image, use_package_builder) + externaldeps_cache = client.cache_volume(f"{tag}-externaldeps") source = ( - ctr.with_directory("/netdata", client.host().directory(repo_path), exclude=[ - f"{cmake_build_release_path}/*", - "fluent-bit/build", - ]) + ctr.with_directory("/netdata", client.host().directory(repo_path), exclude=exclude_dirs) .with_mounted_cache("/netdata/externaldeps", externaldeps_cache) - .with_mounted_cache("/netdata/fluent-bit/build", fluent_bit_cache) - .with_env_variable('CFLAGS', '-Wall -Wextra -g -O0') + .with_env_variable('NETDATA_CMAKE_OPTIONS', '-DCMAKE_BUILD_TYPE=Debug') ) - return source - - enable_ml = image.cli_name != "centos7" + enable_ml = "centos7" not in image_name build_task = source.with_workdir("/netdata").with_exec(netdata_installer(enable_ml=enable_ml)) shell_cmd = "/opt/netdata/usr/sbin/netdata -W buildinfo | tee /opt/netdata/buildinfo.log" buildinfo_task = build_task.with_exec(["sh", "-c", shell_cmd]) build_dir = buildinfo_task.directory('/opt/netdata') - artifact_dir = os.path.join(Path.home(), f'ci/{tag}-netdata') + artifact_dir = os.path.join(Path.home(), f'ci/{tag}') output_task = build_dir.export(artifact_dir) return output_task - -def build_images(client, platforms: List[str], images: List[str], use_package_builder): - tasks = [] - - for platform in platforms: - for image in images: - print(f"Building {platform=}, {image}") - task = build_image_for_platform(client, platform, image, use_package_builder) - tasks.append(task) - - return tasks - - -def validate_platforms(ctx, param, value): - valid_platforms = set(SUPPORTED_PLATFORMS) - input_platforms = set(value) - if not input_platforms.issubset(valid_platforms): - raise click.BadParameter(f"Unsupported platforms: {input_platforms - valid_platforms}") - return value - - -def validate_images(ctx, param, value): - if isinstance(value, str): - raise click.BadParameter(f"Expected OCI list but got a single string: {value}") - - images = set() - - for v in value: - added = False - - for img in oci_images.SUPPORTED_IMAGES: - if v != img.cli_name: - continue - - images.add(img) - added = True - break - - if not added: - raise click.BadParameter(f"Unsupported OCI image: {v}") - - return images - - -def help_command(): - msg = """Build the agent with dagger. - - The script supports building the following images: - - {} - - for the following platforms: - - {} -""" - image_list = ', '.join([str(img) for img in sorted(list(oci_images.SUPPORTED_IMAGES))]) - platform_list = ', '.join(sorted(SUPPORTED_PLATFORMS)) - - return msg.format(image_list, platform_list) - - def run_async(func): """ Decorator to create an asynchronous runner for the main function. @@ -163,75 +87,18 @@ def run_async(func): return wrapper -@click.command(help=help_command()) -@click.option( - "--platforms", - "-p", - multiple=True, - default=["linux/x86_64"], - show_default=True, - callback=validate_platforms, - type=str, - help='Space separated list of platforms to build for.', -) -@click.option( - "--images", - "-i", - multiple=True, - default=["debian12"], - show_default=True, - callback=validate_images, - type=str, - help="Space separated list of images to build.", -) -@click.option( - "--concurrent", - "-c", - is_flag=True, - default=False, - show_default=True, - help="Build the specified images concurrently." -) -@click.option( - "--use-package-builders", - is_flag=True, - default=False, - show_default=True, - help="Use package builder from helper images." -) -@click.option( - "--all-images", - is_flag=True, - default=False, - show_default=True, - help="Build all images." -) @run_async -async def main(platforms, images, concurrent, use_package_builders, all_images): +async def main(): repo_path = str(Path(__file__).parent.parent.parent) - cmake_build_release_path = os.path.join(repo_path, "cmake-build-release") + + platform = dagger.Platform("linux/x86_64") config = dagger.Config(log_output=sys.stdout) async with dagger.Connection(config) as client: - await oci_images.static_build(client, repo_path) + ctr = oci_images.build_debian_12(client, platform) + ctr = build_image_for_platform(client, "debian_12", platform, ctr) + await ctr + # await oci_images.static_build(client, repo_path) - # platforms = list(platforms) if platforms else SUPPORTED_PLATFORMS - # images = list(images) if images else oci_images.SUPPORTED_IMAGES - # use_package_builder = True - - # if all_images: - # images = oci_images.SUPPORTED_IMAGES - - # config = dagger.Config(log_output=sys.stdout) - # async with dagger.Connection(config) as client: - # tasks = build_images(client, platforms, images, use_package_builders) - - # if concurrent: - # await asyncio.gather(*tasks) - # else: - # for task in tasks: - # await task - - if __name__ == '__main__': main() |