{"id":15334624,"url":"https://github.com/chonton/helmrepo-maven-plugin","last_synced_at":"2026-02-13T00:44:48.134Z","repository":{"id":164586350,"uuid":"639657715","full_name":"chonton/helmrepo-maven-plugin","owner":"chonton","description":"Use Maven repository for helm charts","archived":false,"fork":false,"pushed_at":"2024-12-06T06:35:00.000Z","size":520,"stargazers_count":0,"open_issues_count":11,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-15T03:02:35.005Z","etag":null,"topics":["chart","helm","integration-test","kuberenetes","maven","plugin","repository"],"latest_commit_sha":null,"homepage":"","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/chonton.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":"2023-05-11T23:59:43.000Z","updated_at":"2023-05-19T22:25:11.000Z","dependencies_parsed_at":"2023-11-20T22:26:09.800Z","dependency_job_id":"736e78c1-7b11-46a7-b075-e879ca89ed28","html_url":"https://github.com/chonton/helmrepo-maven-plugin","commit_stats":{"total_commits":19,"total_committers":2,"mean_commits":9.5,"dds":"0.26315789473684215","last_synced_commit":"b9564df34207a7d166fab1cadef25b5dbe564937"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chonton%2Fhelmrepo-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chonton%2Fhelmrepo-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chonton%2Fhelmrepo-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chonton%2Fhelmrepo-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chonton","download_url":"https://codeload.github.com/chonton/helmrepo-maven-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248997083,"owners_count":21195798,"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":["chart","helm","integration-test","kuberenetes","maven","plugin","repository"],"created_at":"2024-10-01T10:08:12.694Z","updated_at":"2026-02-13T00:44:43.113Z","avatar_url":"https://github.com/chonton.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# helmrepo-maven-plugin\n\nUse maven repository to store helm charts. This has three goals:\n\n1. Package helm chart and add as a secondary artifact for build\n2. Upgrade (install) helm chart release(s)\n3. Uninstall helm chart release(s)\n\n# Rationale\n\nDeploy your containers using helm charts to [docker desktop](https://docs.docker.com/desktop/kubernetes/) or\n[minikube](https://minikube.sigs.k8s.io/docs/) for integration testing. Build the containers using\n[docker-maven-plugin](https://dmp.fabric8.io/), [jib](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin),\nor [buildpacks](https://github.com/paketo-buildpacks/maven). Start k8s pods/deployments/services\nduring **pre-integration-test** phase. Use [failsafe](https://maven.apache.org/surefire/maven-failsafe-plugin/) to run\nintegration tests during **integration-test** phase. Capture logs and uninstall k8s pods/deployments/services during the\n**post-integration-test** phase.\n\n# Plugin\n\nPlugin reports available at [plugin info](https://chonton.github.io/helmrepo-maven-plugin/0.0.3/plugin-info.html).\n\n## Upgrade Goal\n\nThe [upgrade](https://chonton.github.io/helmrepo-maven-plugin/0.0.3/upgrade.html) goal binds by default to the\n**pre-integration-test** phase. This goal will execute `helm upgrade --install` for each release. If the release name is\nnot specified, the name will be derived from the chart name.\n\n### Global Configuration\n\n|                  Parameter |          Default          | Description                                                   |\n|---------------------------:|:-------------------------:|:--------------------------------------------------------------|\n|         kubernetes.context |     *kubectl default*     | Name of the kubectl context to use                            |\n| kubernetes.createNamespace |           true            | Create namespaces if not present                              |\n|       kubernetes.namespace | *kubectl context default* | Namespace for un-scoped kubernetes resources                  |\n|                  valueFile |             -             | Yaml values file to be applied during upgrade                 |\n|                  valueYaml |             -             | Global values to be applied during upgrade, formatted as yaml |\n\n### Per-Release Configuration\n\n| Parameter |              Default              | Description                                                                |\n|----------:|:---------------------------------:|:---------------------------------------------------------------------------|\n|     chart |            *required*             | Name of the chart                                                          |\n|      logs |                 -                 | (uninstall only) Capture logs from specified K8s pods                      |\n|      name |     *Un-versioned chart name*     | Name of the release                                                        |\n| namespace |        *global namespace*         | Namespace for un-scoped kubernetes resources                               |\n| nodePorts |                 -                 | (upgrade only) Set Maven property from specified K8s service/port NodePort |\n|   podLogs | *${project.build.directory}/pods* | (uninstall only) Directory to receive pod logs                             |\n|  requires |                 -                 | Comma separated list of releases that must be deployed before this release |\n| valueYaml |                 -                 | Values to be applied to release, formatted as yaml                         |\n|      wait |                300                | Number of seconds to wait for successful deployment                        |\n\n#### Chart Name\n\nA chart name can be any of the following:\n\n1. Maven GAV coordinate: *org.honton.chas:test-reports:1.3.4*\n2. URL: *https://\u0026ZeroWidthSpace;repo.maven.apache.org/maven2/org/honton/chas/test-reports/1.3.4/test-reports-1.3.4.tgz*\n3. Path to an unpacked chart directory: *src/helm/superfantastic*\n4. Path to a packaged chart: *superfantastic-44.12.3.tgz*\n5. Chart reference: *repository/chartname*\n6. OCI registry URL: *oci://example.com/charts/nginx*\n\n#### Service NodePorts\n\nKubernetes has a network mapping of host ports to pod ports. During integration test, we need to use the host port\ninstead of the target port. With NodePort and LoadBalancer service types, the nodePort is unlikely to equal targetPort\nvalue. After each release is upgraded, the **upgrade** goal will set specified maven properties to the assigned nodePort\nvalues.\n\nEach element of *nodeports* is of form \\[*namespace*/]*name*\\[:*port*]. The name is required. The namespace and port are\noptional. The name will match the \n[Service](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#service-v1-core)'s metadata. The port\nwill match either the \n[ServicePort](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#serviceport-v1-core)name or port.\n\n## Uninstall Goal\n\nThe [uninstall](https://chonton.github.io/helmrepo-maven-plugin/0.0.3/uninstall.html) goal binds by default to the\n**post-integration-test** phase. This goal will capture the logs from specified pods and execute `helm uninstall`\nfor each release. Configuration is similar to the **install** goal; except the **valueYaml**, **valueFile**, and\n**nodePorts** parameters are ignored.\n\n### Pod logs\n\nBefore uninstalling a release, this goal captures the logs of any specified pods to the *podLogs* directory.\nEach element of *logs* is of form \\[*namespace*/]*name*. The name is required. The namespace is optional. These are used\nto match the\n[Pod](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#pod-v1-core)'s metadata.\n\n## Template Goal\n\nThe [template](https://chonton.github.io/helmrepo-maven-plugin/0.0.3/template.html) goal binds by default to the\n**verify** phase. This goal will expand the chart source. Content will be\n[filtered](https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html) using maven properties.\nParameters are same as for the `upgrade` goal with the addition of the following:\n\n|   Parameter |             Default             | Description                   |\n|------------:|:-------------------------------:|:------------------------------|\n| templateDir | ${project.build.directory}/helm | Directory for expanded charts |\n\n## Package Goal\n\nThe [package](https://chonton.github.io/helmrepo-maven-plugin/0.0.3/package.html) goal binds by default to the\n**package** phase. This goal will create a helm package from the chart source. Content will be\n[filtered](https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html) using maven properties.\nResulting *.tgz* artifact is attached as a secondary artifact for the build. The helm package will be installed in the\nlocal maven repository during the **install** phase and deployed to the remote maven repository during the **deploy**\nphase.\n\n### Configuration\n\n| Parameter | Default  | Description                                                     |\n|----------:|:--------:|:----------------------------------------------------------------|\n|    attach |   true   | Attach helm package as a secondary artifact of the build        |\n|    filter |   true   | Interpolate chart contents, expanding *${variable}* expressions |\n|   helmDir | src/helm | Directory holding an unpacked chart named ${project.artifactId} |\n\n### Helm Chart Name Limitations\n\nThe chart within helmDir must equal ${project.artifactId}.\n\n## tgz Packaging Extension\n\nThis plugin can also be used as an extension that packages, installs, and deploys the **tgz** packaging type. Just set\nthe top level **\u003cpackaging\u003e** element to **tgz** and\n[register](https://maven.apache.org/guides/mini/guide-using-extensions.html) this plugin as an extension.\n\n# Examples\n\n## Typical Use\n\n```xml\n\n\u003cbuild\u003e\n  \u003cpluginManagement\u003e\n    \u003cplugins\u003e\n      \u003cplugin\u003e\n        \u003cgroupId\u003eorg.honton.chas\u003c/groupId\u003e\n        \u003cartifactId\u003ehelmrepo-maven-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e0.0.3\u003c/version\u003e\n      \u003c/plugin\u003e\n    \u003c/plugins\u003e\n  \u003c/pluginManagement\u003e\n\n  \u003cplugins\u003e\n    \u003cplugin\u003e\n      \u003cgroupId\u003eorg.honton.chas\u003c/groupId\u003e\n      \u003cartifactId\u003ehelmrepo-maven-plugin\u003c/artifactId\u003e\n      \u003cexecutions\u003e\n        \u003cexecution\u003e\n          \u003cgoals\u003e\n            \u003cgoal\u003epackage\u003c/goal\u003e\n            \u003cgoal\u003eupgrade\u003c/goal\u003e\n            \u003cgoal\u003euninstall\u003c/goal\u003e\n          \u003c/goals\u003e\n        \u003c/execution\u003e\n      \u003c/executions\u003e\n      \u003cconfiguration\u003e\n        \u003cvalueYaml\u003e\u003c![CDATA[\nname: globalValue\n]]\u003e\n        \u003c/valueYaml\u003e\n        \u003creleases combine.children=\"append\"\u003e\n          \u003crelease\u003e\n            \u003cchart\u003eorg.honton.chas:test-reports:1.3.4\u003c/chart\u003e\n            \u003cvalueYaml\u003e\u003c![CDATA[\nname: releaseValue\nnested:\n  list:\n  - one\n  - two\n]]\u003e\n            \u003c/valueYaml\u003e\n            \u003cnodePorts\u003e\n              \u003cnodePort\u003e\n                \u003cportName\u003ehttp\u003c/portName\u003e\n                \u003cpropertyName\u003ereport.port\u003c/propertyName\u003e\n                \u003cserviceName\u003etest-reports\u003c/serviceName\u003e\n              \u003c/nodePort\u003e\n            \u003c/nodePorts\u003e\n            \u003clogs\u003e\n              \u003cpod\u003etest\u003c/pod\u003e\n              \u003cpod\u003ereport\u003c/pod\u003e\n            \u003c/logs\u003e\n          \u003c/release\u003e\n          \u003crelease\u003e\n            \u003cname\u003ereport-job\u003c/name\u003e\n            \u003cnamespace\u003ereport\u003c/namespace\u003e\n            \u003crequires\u003etest-reports\u003c/requires\u003e\n            \u003cchart\u003esrc/helm/${project.artifactId}\u003c/chart\u003e\n          \u003c/release\u003e\n        \u003c/releases\u003e\n      \u003c/configuration\u003e\n    \u003c/plugin\u003e\n  \u003c/plugins\u003e\n\u003c/build\u003e\n```\n\n## Use as a packaging extension\n\n```xml\n\n\u003cproject\u003e\n  \u003cmodelVersion\u003e4.0.0\u003c/modelVersion\u003e\n\n  \u003cgroupId\u003ecom.example.helm\u003c/groupId\u003e\n  \u003cartifactId\u003echart\u003c/artifactId\u003e\n  \u003cpackaging\u003etgz\u003c/packaging\u003e\n\n  \u003cbuild\u003e\n    \u003cextensions\u003e\n      \u003cextension\u003e\n        \u003cgroupId\u003eorg.honton.chas\u003c/groupId\u003e\n        \u003cartifactId\u003ehelmrepo-maven-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e0.0.2\u003c/version\u003e\n      \u003c/extension\u003e\n    \u003c/extensions\u003e\n  \u003c/build\u003e\n\n\u003c/project\u003e\n```\n\n# Common Errors\n\n## Incorrectly Named Chart\n\nIf the **package** goal fails with the following error, your chart directory is probably empty.\n\n```text\n[ERROR] Failed to execute goal org.honton.chas:helmrepo-maven-plugin:0.0.3:package (tutorial) on project tutorial: Execution tutorial of goal org.honton.chas:helmrepo-maven-plugin:0.0.3:package failed: archive cannot be empty -\u003e [Help 1]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchonton%2Fhelmrepo-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchonton%2Fhelmrepo-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchonton%2Fhelmrepo-maven-plugin/lists"}