{"id":50188217,"url":"https://github.com/mridang/semantic-release-helm","last_synced_at":"2026-05-25T11:07:09.068Z","repository":{"id":311784618,"uuid":"1044844455","full_name":"mridang/semantic-release-helm","owner":"mridang","description":"A plugin for semantic-release to simplify releasing Helm charts","archived":false,"fork":false,"pushed_at":"2026-01-13T02:19:30.000Z","size":308,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-13T05:51:10.656Z","etag":null,"topics":["helm","helm-charts","helm-docs","helm-release","release-automation","semantic-release","semantic-release-plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/mridang.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-26T09:41:02.000Z","updated_at":"2026-01-09T05:59:32.000Z","dependencies_parsed_at":"2026-01-09T09:08:55.845Z","dependency_job_id":null,"html_url":"https://github.com/mridang/semantic-release-helm","commit_stats":null,"previous_names":["mridang/semantic-release-helm"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/mridang/semantic-release-helm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mridang%2Fsemantic-release-helm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mridang%2Fsemantic-release-helm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mridang%2Fsemantic-release-helm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mridang%2Fsemantic-release-helm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mridang","download_url":"https://codeload.github.com/mridang/semantic-release-helm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mridang%2Fsemantic-release-helm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33471612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T06:32:55.349Z","status":"ssl_error","status_checked_at":"2026-05-25T06:32:35.322Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["helm","helm-charts","helm-docs","helm-release","release-automation","semantic-release","semantic-release-plugin"],"created_at":"2026-05-25T11:07:04.005Z","updated_at":"2026-05-25T11:07:09.051Z","avatar_url":"https://github.com/mridang.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Semantic Release - Helm\n\nA [semantic-release](https://github.com/semantic-release/semantic-release)\nplugin to automatically package and publish Helm charts to an\nOCI-compliant registry or publish them to GitHub Pages.\n\nThis plugin automates the final step of a Helm chart release workflow.\nIt updates the `version` in your `Chart.yaml` file, validates and templates\nyour chart, regenerates the chart `README.md` via `helm-docs`, packages the\nchart into a `.tgz`, and after `semantic-release` publishes a new Git tag,\nit pushes the packaged chart either to your configured OCI registry or to\nGitHub Pages. This eliminates the need for manual commands or scripts, ensuring\nyour Helm charts are always up-to-date and published consistently.\n\n## Why?\n\nAutomating the release of a Helm chart involves more than just creating a Git tag.\nFor a new version to be consumable, it must be validated, packaged, and pushed\nto a chart registry. This final synchronization step is a common point of friction\nin an otherwise automated pipeline.\n\nWithout this plugin, developers typically face one of two issues:\n\n- **Manual Helm Workflow:** The most common method is manually running\n  `helm lint`, `helm package`, and `helm push`. This adds toil and\n  creates opportunities for mistakes or skipped steps.\n- **Incomplete Automation:** Other existing plugins may bump the version in\n  `Chart.yaml`, but they often stop there. They do not handle linting,\n  templating, regenerating docs, or pushing to OCI/GitHub Pages. This leaves\n  a manual gap in the release process.\n- **Missing Validation:** Many pipelines skip running `helm lint` and\n  `helm template`, which can allow broken charts to be released. This\n  results in consumers discovering issues after the release, rather than\n  catching them during CI.\n\nThis plugin provides a lightweight and direct solution by running Helm and\nhelm-docs inside Docker. Instead of relying on ad-hoc scripts, it ensures\nthat after `semantic-release` successfully creates a new release, your Helm\nchart is linted, templated, documented, packaged, and immediately published\nto your target registry.\n\n## Installation\n\nInstall using NPM with the following command:\n\n```sh\nnpm install --save-dev @mridang/semantic-release-helm\n```\n\n## Usage\n\nTo use this plugin, add it to your semantic-release configuration file\n(e.g., `.releaserc.js`, `release.config.js`, or in your `package.json`).\n\nThe plugin’s `prepare` step modifies your `Chart.yaml`, regenerates\nthe `README.md` file, and packages the chart. For these changes to be\nincluded in the release commit, the plugin should be placed **before**\n`@semantic-release/git` and `@semantic-release/github` in the `plugins` array.\n\n\u003e [!IMPORTANT]\n\u003e This plugin updates the `version` field in your `Chart.yaml` file during the\n\u003e `prepare` step. For this change to be included in your release commit,\n\u003e you **must** configure the `@semantic-release/git` plugin to add\n\u003e `Chart.yaml` (and optionally `README.md`) to its `assets` array.\n\n### Example Configuration (`.releaserc.js`)\n\n```javascript\nmodule.exports = {\n  branches: ['main', 'next'],\n  plugins: [\n    '@semantic-release/commit-analyzer',\n    [\n      '@mridang/semantic-release-helm',\n      {\n        chartPath: 'charts/app',\n        ociRepo: 'oci://ghcr.io/my-org/charts',\n        ociUsername: process.env.OCI_USERNAME,\n        ociPassword: process.env.OCI_PASSWORD,\n        ociInsecure: false,\n        helmImage: 'alpine/helm:3.15.2',\n        docsImage: 'jnorwood/helm-docs:v1.14.2',\n        docsArgs: ['--template-files', 'README.md'],\n        githubPages: true,\n      },\n    ],\n    '@semantic-release/release-notes-generator',\n    '@semantic-release/changelog',\n    '@semantic-release/github',\n    [\n      '@semantic-release/git',\n      {\n        assets: [\n          'charts/app/Chart.yaml',\n          'charts/app/README.md',\n          'CHANGELOG.md',\n        ],\n        message:\n          'chore(release): ${nextRelease.version} [skip ci]\\n\\n${nextRelease.notes}',\n      },\n    ],\n  ],\n};\n```\n\n### Configuration Options\n\nAll options are case-sensitive and lowercased in the JSON configuration.\n\n- **`chartPath` (string, required):**\n  Path to the chart directory containing `Chart.yaml`.\n\n- **`ociRepo` (string, optional):**\n  The target OCI repository (e.g., `oci://ghcr.io/my-org/charts`).\n  When configured, the packaged chart will be pushed to this repository.\n\n- **`ociUsername` (string, optional):**\n  Username for authenticating with the OCI registry. If not provided,\n  anonymous push will be attempted (not recommended).\n\n- **`ociPassword` (string, optional):**\n  Password or token for authenticating with the OCI registry.\n\n- **`ociInsecure` (boolean, optional):**\n  If `true`, allows pushing to insecure HTTP registries. Default: `false`.\n\n- **`helmImage` (string, optional):**\n  Custom Docker image for running Helm commands. Default:\n  `alpine/helm:3.15.2`.\n\n- **`docsImage` (string, optional):**\n  Custom Docker image for running helm-docs. Default:\n  `jnorwood/helm-docs:v1.14.2`.\n\n- **`docsArgs` (array of strings, optional):**\n  Additional arguments for helm-docs. Default:\n  `['--template-files', 'README.md']`.\n\n- **`githubPages` (boolean, optional):**\n  If `true`, the packaged chart will also be pushed to the `gh-pages` branch\n  of the repository, making it available as a Helm chart repo over GitHub Pages.\n\n## OCI Registry Publishing\n\nWhen you provide `ociRepo`, the plugin will package your chart into a `.tgz`\nand execute `helm push` to the specified OCI-compliant registry. Credentials\nare taken from `ociUsername` and `ociPassword`. This enables direct integration\nwith container registries such as GitHub Container Registry (`ghcr.io`),\nAmazon ECR, or Docker Hub (if they support OCI artifacts).\n\n## GitHub Pages Publishing\n\nIf `githubPages` is enabled, the plugin will push the packaged chart to the\n`gh-pages` branch of the repository. This is useful if you want to host\nyour Helm charts via GitHub Pages as a traditional Helm chart repository.\nConsumers can then add your repo with:\n\n```sh\nhelm repo add my-org https://my-org.github.io/my-repo/\n```\n\n## Known Issues\n\n- None.\n\n## Useful links\n\n- **[Helm](https://helm.sh/):** The Kubernetes package manager.\n- **[helm-docs](https://github.com/norwoodj/helm-docs):** Tool for automatically generating chart documentation.\n\n## Contributing\n\nIf you have suggestions for how this plugin could be improved, or\nwant to report a bug, open an issue — we’d love all and any\ncontributions.\n\n## License\n\nApache License 2.0 © 2024 Mridang Agarwalla\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmridang%2Fsemantic-release-helm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmridang%2Fsemantic-release-helm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmridang%2Fsemantic-release-helm/lists"}