summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvkalintiris <vasilis@netdata.cloud>2024-01-15 18:17:05 +0200
committervkalintiris <vasilis@netdata.cloud>2024-01-16 17:06:36 +0200
commitcbd20eda31f82c14959b407e55971d6c82cd1a5b (patch)
treeb7fc9e3ab1b58bbb46f44beaaf4a2421cae20be3
parent64022cec3624c4a2b6ae2240156f35a6ab493c68 (diff)
Cleanup
-rwxr-xr-xpackaging/dag/images.py3
-rwxr-xr-xpackaging/dag/main.py167
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()