{"id":15638579,"url":"https://github.com/manusa/helm-java","last_synced_at":"2026-02-07T09:07:36.729Z","repository":{"id":218242424,"uuid":"744815083","full_name":"manusa/helm-java","owner":"manusa","description":"Helm client for Java","archived":false,"fork":false,"pushed_at":"2025-04-09T22:00:50.000Z","size":903,"stargazers_count":40,"open_issues_count":27,"forks_count":11,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-15T05:47:29.734Z","etag":null,"topics":["api","client-library","helm","helm-java","helm-java-client","java"],"latest_commit_sha":null,"homepage":"https://www.marcnuri.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manusa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-18T03:56:13.000Z","updated_at":"2025-04-03T21:54:10.000Z","dependencies_parsed_at":"2024-03-15T05:36:08.905Z","dependency_job_id":"d79e7c69-0382-4caa-bf67-244913da8e28","html_url":"https://github.com/manusa/helm-java","commit_stats":{"total_commits":234,"total_committers":4,"mean_commits":58.5,"dds":"0.43162393162393164","last_synced_commit":"82e6bfefd269732a493e56198747cead6bc9c94a"},"previous_names":["manusa/helm-java"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manusa%2Fhelm-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manusa%2Fhelm-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manusa%2Fhelm-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manusa%2Fhelm-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manusa","download_url":"https://codeload.github.com/manusa/helm-java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249016316,"owners_count":21198832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","client-library","helm","helm-java","helm-java-client","java"],"created_at":"2024-10-03T11:22:06.325Z","updated_at":"2026-02-07T09:07:36.722Z","avatar_url":"https://github.com/manusa.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Helm Client for Java\n\nRun Helm commands directly from Java with this client library without the need for a Helm CLI.\n\nIt allows you to execute Helm commands directly from Java without requiring a separate Helm installation.\nDespite this, it still leverages the native Helm libraries, which are written in Go, to function.\nAs a result, you can expect the same behavior as you would get from using Helm directly.\n\n## Getting started\n\nAdd the dependency to your project:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.marcnuri.helm-java\u003c/groupId\u003e\n  \u003cartifactId\u003ehelm-java\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.15\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nStart using it:\n\n```java\npublic static void main(String... args) {\n  new Helm(Paths.get(\"path\", \"to\", \"chart\")).install().call();\n}\n```\n\nCheck the features section for more examples and documentation.\n\n## Features\n\n### Create\n\nEquivalent of [`helm create`](https://helm.sh/docs/helm/helm_create/).\n\nCreates a chart directory along with the common files and directories used in a chart.\n\n``` java\nHelm.create()\n  // Name of the chart to create\n  .withName(\"test\")\n  // Path to the directory where the new chart directory will be created\n  .withDir(Paths.get(\"/tmp\"))\n  .call();\n```\n\n### Dependency\n\nEquivalent of [`helm dependency`](https://helm.sh/docs/helm/helm_dependency/).\n\nManage a chart's dependencies.\n\n#### Dependency build\n\nEquivalent of [`helm dependency build`](https://helm.sh/docs/helm/helm_dependency_build/).\n\nRebuild the chart's on-disk dependencies (`charts/`) based on the Chart.lock file.\n\n``` java\nnew Helm(Paths.get(\"path\", \"to\", \"chart\")).dependency().build()\n  // Optionally specify a keyring containing public keys (used for verification)\n  .keyring(Paths.get(\"path\", \"to\", \"keyring\"))\n  // Optionally skip refreshing the local repository cache\n  .skipRefresh()\n  // Optionally verify the packages against signatures\n  .verify()\n  // Optionally enable verbose output\n  .debug()\n  .call();\n```\n\n#### Dependency list\n\nEquivalent of [`helm dependency list`](https://helm.sh/docs/helm/helm_dependency_list/).\n\nList the dependencies for the given chart.\n\n``` java\nnew Helm(Paths.get(\"path\", \"to\", \"chart\")).dependency().list()\n  .getDependencies();\n```\n\n#### Dependency update\n\nEquivalent of [`helm dependency update`](https://helm.sh/docs/helm/helm_dependency_update/).\n\nUpdate chart's on-disk dependencies (`charts/`) to mirror the contents of Chart.yaml.\n\n``` java\nnew Helm(Paths.get(\"path\", \"to\", \"chart\")).dependency().update()\n  // Optionally specify a keyring containing public keys (used for verification)\n  .keyring(Paths.get(\"path\", \"to\", \"keyring\"))\n  // Optionally skip refreshing the local repository cache\n  .skipRefresh()\n  // Optionally verify the packages against signatures\n  .verify()\n  // Optionally enable verbose output\n  .debug()\n  .call();\n```\n\n### Get\n\nEquivalent of [`helm get`](https://helm.sh/docs/helm/helm_get/).\n\nThis command consists of multiple subcommands which can be used to get extended information about the release, including:\n\n#### Get values\n\nEquivalent of [`helm get values`](https://helm.sh/docs/helm/helm_get_values/).\n\nDownloads a values file for a given release.\n\n``` java\nString values = Helm.get(\"release-name\").values()\n  // Optionally dump all (computed) values, including those from the chart's default values\n  .allValues()\n  // Optionally get the named release with a specific revision\n  .withRevision(1)\n  // Optionally specify the Kubernetes namespace\n  .withNamespace(\"namespace\")\n  // Optionally specify the path to the kubeconfig file to use for CLI requests\n  .withKubeConfig(Paths.get(\"path\", \"to\", \"kubeconfig\"))\n  // Optionally set the contents of the kubeconfig file as a string (takes precedence over the path)\n  .withKubeConfigContents(\"apiVersion: v1\\nkind: Config\\nclusters:\\n...\")\n  .call();\n```\n\n### Install\n\nEquivalent of [`helm install`](https://helm.sh/docs/helm/helm_install/).\n\nInstalls a chart archive.\n\n``` java\n// Instantiate the command with chart reference\nInstallCommand installCommand = Helm.install(\"chart/reference\");\n// Instatiate the command with chart archive\nInstallCommand installCommand = new Helm(Paths.get(\"path\", \"to\", \"chart\")).install();\nRelease result = installCommand\n  // Name of the release to install\n  .withName(\"release-name\")\n  // Optionally generate a release name (and omit the name parameter)\n  .generateName()\n  // Optionally specify a template for the name generation\n  .withNameTemplate(\"a-chart-{{randAlpha 6 | lower}}\")\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify the Kubernetes namespace to install the release into\n  .withNamespace(\"namespace\")\n  // Optionally create the namespace if not present\n  .createNamespace()\n  // Optionally specify the Kubernetes version used for capabilities and deprecation checks (e.g. \"v1.21.0\", \"1.21.0\")\n  .withKubeVersion(\"v1.21.0\")\n  // Optionally, if set, the installation process deletes the installation on failure\n  .atomic()\n  // Optionally specify a custom description for the release\n  .withDescription(\"the-description\")\n  // Optionally enable the use of development versions too\n  .devel()\n  // Optionally update dependencies if they are missing before installing the chart\n  .dependencyUpdate()\n  // Optionally disable the validation of rendered templates against the Kubernetes OpenAPI Schema\n  .disableOpenApiValidation()\n  // Optionally enable dry run mode to simulate an install\n  .dryRun()\n  // Optionally specify the dry run strategy (client, server, or none). If unset, defaults to client\n  .withDryRunOption(DryRun.CLIENT)\n  // Optionally wait until all Pods are in a ready state, PVCs are bound, Deployments have\n  // minimum (Desired minus maxUnavailable) Pods in ready state and Services have an IP\n  // address (and Ingress if a LoadBalancer) before marking the release as successful.\n  .waitReady()\n  // Optionally specify the time (in seconds) to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300)\n  .withTimeout(int timeout)\n  // Optionally set typed values for the chart (can be repeated)\n  .set(\"key\", \"value\")\n  // Optionally set a chart value from a file's contents (equivalent to --set-file)\n  .setFile(\"key\", Paths.get(\"path\", \"to\", \"file\"))\n  // Optionally add a values (YAML) file to source values for the chart (can specify multiple)\n  .withValuesFile(Paths.get(\"path\", \"to\", \"valuesFile\"))\n  // Optionally specify the path to the kubeconfig file to use for CLI requests\n  .withKubeConfig(Paths.get(\"path\", \"to\", \"kubeconfig\"))\n  // Optionally set the contents of the kubeconfig file as a string (takes precedence over the path)\n  .withKubeConfigContents(\"apiVersion: v1\\nkind: Config\\nclusters:\\n...\")\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally verify certificates of HTTPS-enabled servers using this CA bundle\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally allow insecure plain HTTP connections for the chart download\n  .plainHttp()\n  // Optionally specify a keyring (used for verification)\n  .withKeyring(Paths.get(\"path\", \"to\", \"keyring\"))\n  // Optionally enable verbose output\n  .debug()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  // Optionally skip installation of CRDs\n  .skipCrds()\n  .call();\n```\n\n### Lint\n\nEquivalent of [`helm lint`](https://helm.sh/docs/helm/helm_lint/).\n\nExamine a chart for possible issues.\n\n``` java\nLintResult result = new Helm(Paths.get(\"path\", \"to\", \"chart\")).lint()\n  // Optionally enable strict mode (fail on lint warnings)\n  .strict()\n  // Optionally enable quiet mode (only show warnings and errors) \n  .quiet()\n  .call();\nresult.isFailed(); // true if linting failed\nresult.getMessages(); // list of linting messages\n```\n\n### List\n\nEquivalent of [`helm list`](https://helm.sh/docs/helm/helm_list/).\n\nLists all the releases for a specified namespace (uses current namespace context if namespace not specified).\n\n``` java\nList\u003cRelease\u003e releases = Helm.list()\n  // Optionally specify the Kubernetes namespace to list the releases from\n  .withNamespace(\"namespace\")\n  // Optionally specify the path to the kubeconfig file to use for CLI requests\n  .withKubeConfig(Paths.get(\"path\", \"to\", \"kubeconfig\"))\n  // Optionally set the contents of the kubeconfig file as a string (takes precedence over the path)\n  .withKubeConfigContents(\"apiVersion: v1\\nkind: Config\\nclusters:\\n...\")\n  // Optionally show all releases without any filter applied\n  .all()\n  // Optionally show releases across all namespaces\n  .allNamespaces()\n  // Optionally show deployed releases\n  // If no other option is specified, this will be automatically enabled\n  .deployed()\n  // Optionally show failed releases\n  .failed()\n  // Optionally show pending releases\n  .pending()\n  // Optionally show superseded releases\n  .superseded()\n  // Optionally show uninstalled releases (if 'helm uninstall --keep-history' was used)\n  .uninstalled()\n  // Optionally show releases that are currently being uninstalled\n  .uninstalling()\n  .call();\n```\n\n### Package\n\nEquivalent of [`helm package`](https://helm.sh/docs/helm/helm_package/).\n\nPackage a chart directory into a chart archive.\n\n``` java\nPath result = new Helm(Paths.get(\"path\", \"to\", \"chart\")).package()\n  // Optionally specify a target directory\n  .destination(Paths.get(\"path\", \"to\", \"destination\"))\n  // Optionally enable signing\n  .sign()\n  // Optionally specify a key UID (required if signing)\n  .withKey(\"KEY_UID\")\n  // Optionally specify a keyring (required if signing)\n  .withKeyring(Paths.get(\"path\", \"to\", \"keyring\"))\n  // Optionally specify a file containing the passphrase for the signing key\n  .withPassphraseFile(Paths.get(\"path\", \"to\", \"passphrase\"))\n  .call();\n```\n\n### Push\n\nEquivalent of [`helm push`](https://helm.sh/docs/helm/helm_push/).\n\nUpload a chart to a registry.\n\n``` java\nHelm.push()\n  // Location of the packaged chart (.tgz) to push\n  .withChart(Paths.get(\"path\", \"to\", \"chart\", \"package\"))\n  // URI of the remote registry to push the chart to\n  .withRemote(\"oci://remote-server.example.com:12345\");\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally specify an SSL CA bundle file to verify the HTTPS-enabled registry server certificates\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally use insecure HTTP connections for the chart upload\n  .plainHttp()\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n### Registry\n\nEquivalent of [`helm registry`](https://helm.sh/docs/helm/helm_registry/).\n\nLog in to or log out from a registry.\n\n#### Registry login\n\nEquivalent of [`helm registry login`](https://helm.sh/docs/helm/helm_registry_login/).\n\nLog in to a registry.\n\n``` java\nHelm.registry().login()\n  // The host to log in to.\n  .withHost(\"host\")\n  // Registry username\n  .withUsername(\"username\");\n  // Registry password or identity token.\n  .withPassword(\"password\");\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally specify an SSL CA bundle file to verify the HTTPS-enabled registry server certificates\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally use insecure HTTP connections for the chart upload\n  .plainHttp()\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n#### Registry logout\n\nEquivalent of [`helm registry logout`](https://helm.sh/docs/helm/helm_registry_logout/).\n\nLog out from a registry.\n\n``` java\nHelm.registry().logout()\n  // The host to log out from.\n  .withHost(\"host\")\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n### Repo\n\nEquivalent of [`helm repo`](https://helm.sh/docs/helm/helm_repo/).\n\nAdd, list, remove, update, and index chart repositories.\n\n#### Repo add\n\nEquivalent of [`helm repo add`](https://helm.sh/docs/helm/helm_repo_add/).\n\nAdd a chart repository.\n\n``` java\nHelm.repo().add()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  // Name of the repository to add\n  .withName(\"repo-1\")\n  // URL of the repository to add\n  .withUrl(URI.create(\"https://charts.helm.sh/stable\"))\n  // Optionally specify a username for HTTP basic authentication\n  .withUsername(\"user\")\n  // Optionally specify a password for HTTP basic authentication\n  .withPassword(\"pass\")\n  // Optionally specify an SSL certificate file to identify the HTTPS client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the HTTPS client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally verify certificates of HTTPS-enabled servers using this CA bundle\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  .call()\n```\n\n#### Repo list\n\nEquivalent of [`helm repo list`](https://helm.sh/docs/helm/helm_repo_list/).\n\nList chart repositories.\n\n``` java\nList\u003cRepository\u003e respositories = Helm.repo().list()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  .call();\n```\n\n#### Repo remove\n\nEquivalent of [`helm repo remove`](https://helm.sh/docs/helm/helm_repo_remove/).\n\nRemove one or more chart repositories.\n\n``` java\nHelm.repo().remove()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  // Add a repository name to the list of repos to remove\n  .withRepo(\"repo-1\")\n  // Add another repository name to the list of repos to remove\n  .withRepo(\"repo-2\")\n  .call();\n```\n\n#### Repo update\n\nEquivalent of [`helm repo update`](https://helm.sh/docs/helm/helm_repo_update/).\n\nUpdate information of available charts locally from chart repositories.\n\n``` java\nHelm.repo().update()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  // Add a repository name to the list of repos to remove\n  .withRepo(\"repo-1\")\n  // Add another repository name to the list of repos to remove\n  .withRepo(\"repo-2\")\n  .call();\n```\n\n### Search\n\nEquivalent of [`helm search`](https://helm.sh/docs/helm/helm_search/).\n\nThis command provides the ability to search for Helm charts in various places including the Artifact Hub and the repositories you have added.\n\n#### Repo\n\nEquivalent of [`helm search repo`](https://helm.sh/docs/helm/helm_search_repo/).\n\nSearch repositories for a keyword in charts.\n\n``` java\nList\u003cSearchResult\u003e results = Helm.search().repo()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  // Optionally set the keyword to match against the repo name, chart name, chart keywords, and description.\n  .withKeyword(\"keyword\")\n  // Optionally use regular expressions for searching.\n  .regexp()\n  // Optionally search for development versions too (alpha, beta, and release candidate releases).\n  .devel()\n  // Optionally search using semantic versioning constraints\n  .withVersion(\"\u003e=1.0.0\")\n  .call();\n```\n\n### Show\n\nEquivalent of [`helm show`](https://helm.sh/docs/helm/helm_show/).\n\nShow information about a chart.\n\n#### Show all\n\nEquivalent of [`helm show all`](https://helm.sh/docs/helm/helm_show_all/).\n\nShow **all** information about a chart.\n\n``` java\n// Instantiate the command with chart reference\nShowCommand showCommand = Helm.show(\"chart/reference\");\n// Instatiate the command with chart archive\nShowCommand showCommand = new Helm(Paths.get(\"path\", \"to\", \"chart\")).show();\nString result = showCommand.all()\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally specify an SSL CA bundle file to verify the HTTPS-enabled registry server certificates\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally use insecure HTTP connections for the chart upload\n  .plainHttp()\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n#### Show chart\n\nEquivalent of [`helm show chart`](https://helm.sh/docs/helm/helm_show_chart/).\n\nShow the chart's definition.\n\n``` java\nString result = new Helm(Paths.get(\"path\", \"to\", \"chart\")).show()\n  .chart()\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally specify an SSL CA bundle file to verify the HTTPS-enabled registry server certificates\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally use insecure HTTP connections for the chart upload\n  .plainHttp()\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n#### Show CRDs\n\nEquivalent of [`helm show crds`](https://helm.sh/docs/helm/helm_show_crds/).\n\nShow the chart's CRDs.\n\n``` java\nString result = new Helm(Paths.get(\"path\", \"to\", \"chart\")).show()\n  .crds()\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally specify an SSL CA bundle file to verify the HTTPS-enabled registry server certificates\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally use insecure HTTP connections for the chart upload\n  .plainHttp()\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n#### Show README\n\nEquivalent of [`helm show readme`](https://helm.sh/docs/helm/helm_show_readme/).\n\nShow the chart's README.\n\n``` java\nString result = new Helm(Paths.get(\"path\", \"to\", \"chart\")).show()\n  .readme()\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally specify an SSL CA bundle file to verify the HTTPS-enabled registry server certificates\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally use insecure HTTP connections for the chart upload\n  .plainHttp()\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n#### Show values\n\nEquivalent of [`helm show values`](https://helm.sh/docs/helm/helm_show_values/).\n\nShow the chart's values.\n\n``` java\nString result = new Helm(Paths.get(\"path\", \"to\", \"chart\")).show()\n  .values()\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally specify an SSL CA bundle file to verify the HTTPS-enabled registry server certificates\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally use insecure HTTP connections for the chart upload\n  .plainHttp()\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  .call();\n```\n\n### Template\n\nEquivalent of [`helm template`](https://helm.sh/docs/helm/helm_template/).\n\nThis command renders chart templates locally and displays the output.\n\n``` java\n// Instantiate the command with chart reference\nTemplateCommand templateCommand = Helm.template(\"chart/reference\");\n// Instatiate the command with chart archive\nTemplateCommand templateCommand = new Helm(Paths.get(\"path\", \"to\", \"chart\")).template();\nString result = templateCommand\n  // Optionally specify a name for the release\n  .withName(\"release-name\")\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify the Kubernetes namespace for the release\n  .withNamespace(\"namespace\")\n  // Optionally specify the Kubernetes version used for capabilities and deprecation checks (e.g. \"v1.21.0\", \"1.21.0\")\n  .withKubeVersion(\"v1.21.0\")\n  // Optionally update dependencies if they are missing before installing the chart\n  .dependencyUpdate()\n  // Optionally set values for the chart\n  .set(\"key\", \"value\")\n  // Optionally set a chart value from a file's contents (equivalent to --set-file)\n  .setFile(\"key\", Paths.get(\"path\", \"to\", \"file\"))\n  // Optionally add a values (YAML) file to source values for the chart (can specify multiple)\n  .withValuesFile(Paths.get(\"path\", \"to\", \"valuesFile\"))\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally verify certificates of HTTPS-enabled servers using this CA bundle\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally allow insecure plain HTTP connections for the chart download\n  .plainHttp()\n  // Optionally specify a keyring (used for verification)\n  .withKeyring(Paths.get(\"path\", \"to\", \"keyring\"))\n  // Optionally enable debug mode to print out verbose information\n  .debug()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  // Optionally skip rendering of CRDs\n  .skipCrds()\n  .call();\n```\n\n### Test\n\nEquivalent of [`helm test`](https://helm.sh/docs/helm/helm_test/).\n\nThis command runs the tests for a release.\n\n``` java\nRelease result = Helm.test(\"chart/reference\")\n  // Optionally specify the time (in seconds) to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300)\n  .withTimeout(int timeout)\n  // Optionally specify the Kubernetes namespace\n  .withNamespace(\"namespace\")\n  // Optionally specify the path to the kubeconfig file to use for CLI requests\n  .withKubeConfig(Paths.get(\"path\", \"to\", \"kubeconfig\"))\n  // Optionally set the contents of the kubeconfig file as a string (takes precedence over the path)\n  .withKubeConfigContents(\"apiVersion: v1\\nkind: Config\\nclusters:\\n...\")\n  // Optionally enable verbose output\n  .debug()\n  .call();\n```\n\n### Uninstall\n\nEquivalent of [`helm uninstall`](https://helm.sh/docs/helm/helm_uninstall/).\n\nThis command takes a release name and uninstalls the release.\n\n``` java\nString result = Helm.uninstall(\"chart/reference\")\n  // Optionally enable dry run mode to simulate an uninstall\n  .dryRun()\n  // Optionally prevent hooks from running during uninstallation\n  .noHooks()\n  // Optionally treat \"release not found\" as a successful uninstall\n  .ignoreNotFound()\n  // Optionally remove all associated resources and mark the release as deleted, but retain the release history\n  .keepHistory()\n  // Optionally select the deletion cascading strategy for the dependents. If unset, defaults to background\n  .withCascade(Cascade.BACKGROUND)\n  // Optionally specify the Kubernetes namespace to uninstall the release from\n  .withNamespace(\"namespace\")\n  // Optionally specify the path to the kubeconfig file to use for CLI requests\n  .withKubeConfig(Paths.get(\"path\", \"to\", \"kubeconfig\"))\n  // Optionally set the contents of the kubeconfig file as a string (takes precedence over the path)\n  .withKubeConfigContents(\"apiVersion: v1\\nkind: Config\\nclusters:\\n...\")\n  // Optionally enable verbose output\n  .debug()\n  .call();\n```\n\n### Upgrade\n\nEquivalent of [`helm upgrade`](https://helm.sh/docs/helm/helm_upgrade/).\n\nUpgrades a release to a new version of a chart.\n\n``` java\n// Instantiate the command with chart reference\nUpgradeCommand upgradeCommand = Helm.upgrade(\"chart/reference\");\n// Instatiate the command with chart archive\nUpgradeCommand upgradeCommand = new Helm(Paths.get(\"path\", \"to\", \"chart\")).upgrade();\nRelease result = upgradeCommand\n  // Name of the release to upgrade\n  .withName(\"release-name\")\n  // Optionally specify a version constraint for the chart version to use.\n  .withVersion(\"^1.0.0\")\n  // Optionally specify the Kubernetes namespace to upgrade the release\n  .withNamespace(\"namespace\")\n  // Optionally run an installation if a release by this name doesn't already exist\n  .install()\n  // Optionally specify the Kubernetes version for capabilities checks (only used with install() when release doesn't exist)\n  .withKubeVersion(\"v1.21.0\")\n  // Optionally force resource updates through a replacement strategy\n  .force()\n  // Optionally reset the values to the ones built into the chart when upgrading\n  .resetValues()\n  // Optionally reuse the last release's values and merge in any overrides from the current values when upgrading\n  // Ignored if used in combination with resetValues()\n  .reuseValues()\n  // Optionally reset the values to the ones built into the chart,\n  // apply the last release's values and merge in any overrides from the current values when upgrading\n  // Ignored if used in combination with resetValues() or reuseValues()\n  .resetThenReuseValues()\n  // Optionally, if set, upgrade process rolls back changes made in case of failed upgrade\n  .atomic()\n  // Optionally allow deletion of new resources created in this upgrade when upgrade fails\n  .cleanupOnFail()\n  // Optionally create the release namespace if not present (if install() is set)\n  .createNamespace()\n  // Optionally specify a custom description\n  .withDescription(\"the-description\")\n  // Optionally enable the use of development versions too\n  .devel()\n  // Optionally update dependencies if they are missing before installing the chart\n  .dependencyUpdate()\n  // Optionally disable the validation of rendered templates against the Kubernetes OpenAPI Schema\n  .disableOpenApiValidation()\n  // Optionally enable dry run mode to simulate an install\n  .dryRun()\n  // Optionally specify the dry run strategy (client, server, or none). If unset, defaults to client\n  .withDryRunOption(DryRun.CLIENT)\n  // Optionally wait until all Pods are in a ready state, PVCs are bound, Deployments have\n  // minimum (Desired minus maxUnavailable) Pods in ready state and Services have an IP\n  // address (and Ingress if a LoadBalancer) before marking the release as successful.\n  .waitReady()\n  // Optionally specify the time (in seconds) to wait for any individual Kubernetes operation (like Jobs for hooks) (default 300)\n  .withTimeout(int timeout)\n  // Optionally set typed values for the chart (can be repeated)\n  .set(\"key\", \"value\")\n  // Optionally set a chart value from a file's contents (equivalent to --set-file)\n  .setFile(\"key\", Paths.get(\"path\", \"to\", \"file\"))\n  // Optionally add a values (YAML) file to source values for the chart (can specify multiple)\n  .withValuesFile(Paths.get(\"path\", \"to\", \"valuesFile\"))\n  // Optionally specify the path to the kubeconfig file to use for CLI requests\n  .withKubeConfig(Paths.get(\"path\", \"to\", \"kubeconfig\"))\n  // Optionally set the contents of the kubeconfig file as a string (takes precedence over the path)\n  .withKubeConfigContents(\"apiVersion: v1\\nkind: Config\\nclusters:\\n...\")\n  // Optionally specify an SSL certificate file to identify the registry client\n  .withCertFile(Paths.get(\"path\", \"to\", \"cert\"))\n  // Optionally specify an SSL key file to identify the registry client\n  .withKey(Paths.get(\"path\", \"to\", \"key\"))\n  // Optionally verify certificates of HTTPS-enabled servers using this CA bundle\n  .withCaFile(Paths.get(\"path\", \"to\", \"ca\"))\n  // Optionally skip TLS certificate checks of HTTPS-enabled servers\n  .insecureSkipTlsVerify()\n  // Optionally allow insecure plain HTTP connections for the chart download\n  .plainHttp()\n  // Optionally specify a keyring (used for verification)\n  .withKeyring(Paths.get(\"path\", \"to\", \"keyring\"))\n  // Optionally enable verbose output\n  .debug()\n  // Optionally set the path to the file containing repository names and URLs\n  // Defaults to \"~/.config/helm/repositories.yaml\"\n  .withRepositoryConfig(Paths.get(\"path\", \"to\", \"config\"))\n  // Optionally skip installation of CRDs\n  .skipCrds()\n  .call();\n```\n\n### Version\n\nSimilar to [`helm version`](https://helm.sh/docs/helm/helm_version/).\n\nReturns the version of the underlying Helm library.\n\n``` java\nString version = Helm.version();\n```\n\n## Development\n\n### Project Structure\n\n- Go:\n  - `native`: contains the Go project that creates the native c bindings\n- Java:\n  - `helm-java`: contains the actual Helm Java client library\n  - `lib`: contains the Java modules related to the native c binding libraries\n    - `api`: contains the API for the native interfaces\n    - `darwin-amd64`: contains the Java native access library for darwin/amd64\n    - `darwin-arm64`: contains the Java native access library for darwin/arm64\n    - `linux-amd64`: contains the Java native access library for linux/amd64\n    - `linux-arm64`: contains the Java native access library for linux/arm64\n    - `windows-amd64`: contains the Java native access library for windows/amd64\n\n### Release Process\n\n#### Release to Maven Central\n\nTo release a new version automatically:\n\n```shell\nmake release V=X.Y.Z VS=X.Y\n```\n- `V`: New version to release.\n- `VS`: New SNAPSHOT version for Maven.\n\nTo release a new version manually:\n\n1. Update the version in the `pom.xml` file.\n   ```shell\n   mvn versions:set -DnewVersion=X.Y.Z -DgenerateBackupPoms=false\n   ```\n2. Commit and tag the release with the  `pom.xml` version.\n   ```shell\n   git add .\n   git commit -m \"[RELEASE] vX.Y.Z released\"\n   git tag vX.Y.Z\n   git push origin vX.Y.Z\n   ```\n3. Update the version in the `pom.xml` file to the next snapshot version.\n   ```shell\n   mvn versions:set -DnewVersion=X.Y-SNAPSHOT -DgenerateBackupPoms=false\n   ```\n4. Commit the changes with the following message:\n   ```shell\n   git add .\n   git commit -m \"[RELEASE] v0.0.15 released, prepare for next development iteration\"\n   git push origin master\n   ```\n\n#### Create GitHub Release\n\nOnce the release is published to Maven Central, create a new [GitHub release](https://github.com/manusa/helm-java/releases/new) for the released tag.\n\n### License Headers\n\nWhenever a new file is created, the license header must be added. To add the license header to all files:\n\n```shell\nmake license\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanusa%2Fhelm-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanusa%2Fhelm-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanusa%2Fhelm-java/lists"}