{"id":13677000,"url":"https://github.com/chartmuseum/helm-push","last_synced_at":"2025-10-30T07:22:25.106Z","repository":{"id":31989824,"uuid":"129789275","full_name":"chartmuseum/helm-push","owner":"chartmuseum","description":" Helm plugin to push chart package to ChartMuseum","archived":false,"fork":false,"pushed_at":"2024-08-13T21:47:29.000Z","size":969,"stargazers_count":675,"open_issues_count":78,"forks_count":170,"subscribers_count":15,"default_branch":"main","last_synced_at":"2024-11-20T02:34:14.029Z","etag":null,"topics":["chartmuseum","helm","helm-plugin","kubernetes"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/chartmuseum.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":"2018-04-16T18:38:47.000Z","updated_at":"2024-11-13T21:03:51.000Z","dependencies_parsed_at":"2023-02-10T18:01:20.323Z","dependency_job_id":"235e9c21-f322-4af0-930e-5ca8ab2ceb0a","html_url":"https://github.com/chartmuseum/helm-push","commit_stats":{"total_commits":109,"total_committers":32,"mean_commits":3.40625,"dds":0.6788990825688073,"last_synced_commit":"01df7514026df6462728fd4e3772eac46825c148"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chartmuseum%2Fhelm-push","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chartmuseum%2Fhelm-push/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chartmuseum%2Fhelm-push/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chartmuseum%2Fhelm-push/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chartmuseum","download_url":"https://codeload.github.com/chartmuseum/helm-push/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251483858,"owners_count":21596613,"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":["chartmuseum","helm","helm-plugin","kubernetes"],"created_at":"2024-08-02T13:00:35.630Z","updated_at":"2025-10-30T07:22:20.072Z","avatar_url":"https://github.com/chartmuseum.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# helm cm-push plugin\n\u003cimg align=\"right\" src=\"https://github.com/helm/chartmuseum/raw/main/logo.png\"\u003e\n\n[![GitHub Actions status](https://github.com/chartmuseum/helm-push/workflows/build/badge.svg)](https://github.com/chartmuseum/helm-push/actions?query=workflow%3Abuild)\n\nHelm plugin to push chart package to [ChartMuseum](https://github.com/helm/chartmuseum)\n\n## Install\nBased on the version in `plugin.yaml`, release binary will be downloaded from GitHub:\n\n```\n$ helm plugin install https://github.com/chartmuseum/helm-push\nDownloading and installing helm-push v0.10.1 ...\nhttps://github.com/chartmuseum/helm-push/releases/download/v0.10.1/helm-push_0.10.1_darwin_amd64.tar.gz\nInstalled plugin: cm-push\n```\n\n## Usage\nStart by adding a ChartMuseum-backed repo via Helm CLI (if not already added)\n```\n$ helm repo add chartmuseum http://localhost:8080\n```\nFor all available plugin options, please run\n```\n$ helm cm-push --help\n```\n\n### Pushing a directory\nPoint to a directory containing a valid `Chart.yaml` and the chart will be packaged and uploaded:\n```\n$ cat mychart/Chart.yaml\nname: mychart\nversion: 0.3.2\n```\n```\n$ helm cm-push mychart/ chartmuseum\nPushing mychart-0.3.2.tgz to chartmuseum...\nDone.\n```\n\n### Pushing with a custom version\nThe `--version` flag can be provided, which will push the package with a custom version:\n\n```\n$ helm cm-push mychart/ --version=\"1.2.3\" chartmuseum\nPushing mychart-1.2.3.tgz to chartmuseum...\nDone.\n```\n\nIf you want to enable something like `--version=\"9.9.9-dev1\"`, which you intend to push regularly, you will need to run your ChartMuseum server with `ALLOW_OVERWRITE=true`.\n\n### Push .tgz package\nThis workflow does not require the use of `helm package`, but pushing .tgzs is still supported:\n```\n$ helm cm-push mychart-0.3.2.tgz chartmuseum\nPushing mychart-0.3.2.tgz to chartmuseum...\nDone.\n```\n\n### Force push\nIf your ChartMuseum install is configured with `ALLOW_OVERWRITE=true`, chart versions will be automatically overwritten upon re-upload.\n\nOtherwise, unless your install is configured with `DISABLE_FORCE_OVERWRITE=true` (ChartMuseum \u003e v0.7.1), you can use the `--force`/`-f` option to to force an upload:\n```\n$ helm cm-push --force mychart-0.3.2.tgz chartmuseum\nPushing mychart-0.3.2.tgz to chartmuseum...\nDone.\n```\n\n### Pushing directly to URL\nIf the second argument provided resembles a URL, you are not required to add the repo prior to push:\n```\n$ helm cm-push mychart-0.3.2.tgz http://localhost:8080\nPushing mychart-0.3.2.tgz to http://localhost:8080...\nDone.\n```\n\n## Context Path\n\nIf you are running ChartMuseum behind a proxy that adds a route prefix, for example:\n```\nhttps://my.chart.repo.com/helm/v1/index.yaml -\u003e http://chartmuseum-svc/index.yaml\n```\n\nYou can use the `--context-path=` option or `HELM_REPO_CONTEXT_PATH` env var in order for the plugin to construct the upload URL correctly:\n```\nhelm repo add chartmuseum https://my.chart.repo.com/helm/v1\nhelm cm-push --context-path=/helm/v1 mychart-0.3.2.tgz chartmuseum\n```\n\nAlternatively, you can add `serverInfo.contextPath` to your index.yaml:\n```\napiVersion: v1\nentries:{}\ngenerated: \"2018-08-09T11:08:21-05:00\"\nserverInfo:\n  contextPath: /helm/v1\n```\n\nIn ChartMuseum server (\u003e0.7.1) this will automatically be added to index.yaml if the `--context-path` option is provided.\n\n## Authentication\n### Basic Auth\nIf you have added your repo with the `--username`/`--password` flags (Helm 2.9+), or have added your repo with the basic auth username/password in the URL (e.g. `https://myuser:mypass@my.chart.repo.com`), no further setup is required.\n\nThe plugin will use the auth info located in `~/.helm/repository/repositories.yaml` (for Helm 2) or `~/.config/helm/repositories.yaml` (for Helm 3) in order to authenticate.\n\nIf you are running ChartMuseum with `AUTH_ANONYMOUS_GET=true`, and have added your repo without authentication, the plugin recognizes the following environment variables for basic auth on push operations:\n```\n$ export HELM_REPO_USERNAME=\"myuser\"\n$ export HELM_REPO_PASSWORD=\"mypass\"\n```\n\nWith this setup, you can enable people to use your repo for installing charts etc. without allowing them to upload to it.\n\n### Token\n\n*ChartMuseum token-auth is currently in progress. Please see [auth-server-example](https://github.com/chartmuseum/auth-server-example) for more info.*\n\nAlthough ChartMuseum server does not define or accept a token format (yet), if you are running it behind a proxy that accepts access tokens, you can provide the following env var:\n```\n$ export HELM_REPO_ACCESS_TOKEN=\"\u003ctoken\u003e\"\n```\n\nThis will result in all basic auth options above being ignored, and the plugin will send the token in the header:\n```\nAuthorization: Bearer \u003ctoken\u003e\n```\n\nIf you require a custom header to be used for passing the token, you can the following env var:\n```\n$ export HELM_REPO_AUTH_HEADER=\"\u003cmyheader\u003e\"\n```\n\nThis will then be used in place of `Authorization: Bearer`:\n```\n\u003cmyheader\u003e: \u003ctoken\u003e\n```\n\n#### Token config file (~/.cfconfig)\nFor users of [Managed Helm Repositories](https://codefresh.io/codefresh-news/introducing-managed-helm-repositories/) (Codefresh), the plugin is able to auto-detect your API key from `~/.cfconfig`. This file is managed by [Codefresh CLI](https://codefresh-io.github.io/cli/).\n\nIf detected, this API key will be used for token-based auth, overriding basic auth options described above.\n\nThe format of this file is the following:\n\n```\ncontexts:\n  default:\n    name: default\n    token: \u003ctoken\u003e\ncurrent-context: default\n```\n\n### TLS Client Cert Auth\n\nChartMuseum server does not yet have options to setup TLS client cert authentication (please see [chartmuseum#79](https://github.com/helm/chartmuseum/issues/79)).\n\nIf you are running ChartMuseum behind a frontend that does, the following options are available:\n\n```\n--ca-file string    Verify certificates of HTTPS-enabled servers using this CA bundle [$HELM_REPO_CA_FILE]\n--cert-file string  Identify HTTPS client using this SSL certificate file [$HELM_REPO_CERT_FILE]\n--key-file string   Identify HTTPS client using this SSL key file [$HELM_REPO_KEY_FILE]\n--insecure          Connect to server with an insecure way by skipping certificate verification [$HELM_REPO_INSECURE]\n```\n\n## Custom Downloader\nThis plugin also defines the `cm://` protocol that you may specify when adding a repo:\n```\n$ helm repo add chartmuseum cm://my.chart.repo.com\n```\n\nThe only real difference with this vs. simply using http/https, is that the environment variables above are recognized by the plugin and used to set the `Authorization` header appropriately. As in, if you do not add your repo in this way, you are unable to use token-based auth for GET requests (downloading index.yaml, chart .tgzs, etc).\n\nBy default, `cm://` translates to `https://`. If you must use `http://`, you can set the following env var:\n```\n$ export HELM_REPO_USE_HTTP=\"true\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchartmuseum%2Fhelm-push","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchartmuseum%2Fhelm-push","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchartmuseum%2Fhelm-push/lists"}