{"id":13547472,"url":"https://github.com/hayorov/helm-gcs","last_synced_at":"2025-12-25T18:26:14.318Z","repository":{"id":38965546,"uuid":"109006561","full_name":"hayorov/helm-gcs","owner":"hayorov","description":"Manage Helm 3 repositories on Google Cloud Storage 🔐 **privately**","archived":false,"fork":false,"pushed_at":"2025-03-20T02:27:41.000Z","size":20103,"stargazers_count":280,"open_issues_count":13,"forks_count":62,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-20T03:33:24.959Z","etag":null,"topics":["bucket","chart","gcs","google-cloud-storage","helm","helm-gcs","helm-plugin","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hayorov.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":"2017-10-31T14:22:00.000Z","updated_at":"2025-03-07T19:52:43.000Z","dependencies_parsed_at":"2023-12-13T23:30:31.807Z","dependency_job_id":"1674df80-5912-43b4-aaa8-d3d75aad0e31","html_url":"https://github.com/hayorov/helm-gcs","commit_stats":null,"previous_names":["nouney/helm-gcs"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hayorov%2Fhelm-gcs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hayorov%2Fhelm-gcs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hayorov%2Fhelm-gcs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hayorov%2Fhelm-gcs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hayorov","download_url":"https://codeload.github.com/hayorov/helm-gcs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246880388,"owners_count":20848853,"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":["bucket","chart","gcs","google-cloud-storage","helm","helm-gcs","helm-plugin","kubernetes"],"created_at":"2024-08-01T12:00:56.581Z","updated_at":"2025-12-25T18:26:14.253Z","avatar_url":"https://github.com/hayorov.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/hayorov/helm-gcs/master/assets/helm-gcs-logo.png\" alt=\"helm-gcs logo\"/\u003e\n\u003c/p\u003e\n\n# helm-gcs\n\n![Helm3 supported](https://img.shields.io/badge/Helm%203-supported-green)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/hayorov/helm-gcs)\n[![Build Status](https://github.com/hayorov/helm-gcs/workflows/release/badge.svg)](https://github.com/hayorov/helm-gcs/releases/latest)\n\n`helm-gcs` is a [helm](https://github.com/kubernetes/helm) plugin that allows you to manage private helm repositories on [Google Cloud Storage](https://cloud.google.com/storage/) aka buckets.\n\n## Installation\n\nInstall the stable version:\n\n```shell\n$ helm plugin install https://github.com/hayorov/helm-gcs.git\n```\n\nUpdate to latest\n\n```shell\n$ helm plugin update gcs\n```\n\nInstall a specific version:\n\n```shell\n$ helm plugin install https://github.com/hayorov/helm-gcs.git --version 0.4.0\n```\n\n## Quick start\n\n```shell\n# Init a new repository\n$ helm gcs init gs://bucket/path\n\n# Add your repository to Helm\n$ helm repo add repo-name gs://bucket/path\n\n# Push a chart to your repository\n$ helm gcs push chart.tar.gz repo-name\n\n# Update Helm cache\n$ helm repo update\n\n# Fetch the chart\n$ helm fetch repo-name/chart\n\n# Remove the chart\n$ helm gcs rm chart repo-name\n```\n\n## Documentation\n\n### Authentification\n\nTo authenticate against GCS you can:\n\n- Use the [application default credentials](https://cloud.google.com/sdk/gcloud/reference/auth/application-default/)\n\n- Use a service account via [`export GOOGLE_APPLICATION_CREDENTIALS=credentials.json` system variable](https://cloud.google.com/docs/authentication/getting-started)\n\n- Use a temporary [OAuth 2.0 access token](https://developers.google.com/identity/protocols/oauth2) via `export GOOGLE_OAUTH_ACCESS_TOKEN=\u003cMY_ACCESS_TOKEN\u003e` environment variable. When used, plugin will ignore other authentification methods.\n\nSee [GCP documentation](https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application) for more information.\n\n### Create a repository\n\nFirst, you need to [create a bucket on GCS](https://cloud.google.com/storage/docs/creating-buckets), which will be used by the plugin to store your charts.\n\nThen you have to initialize a repository at a specific location in your bucket:\n\n```shell\n$ helm gcs init gs://your-bucket/path\n```\n\n\u003e You can create a repository anywhere in your bucket.\n\n\u003e This command does nothing if a repository already exists at the given location.\n\nYou can now add the repository to helm:\n\n```shell\n$ helm repo add my-repository gs://your-bucket/path\n```\n\n### Push a chart\n\nPackage the chart:\n\n```shell\n$ helm package my-chart\n```\n\nThis will create a file `my-chart-\u003csemver\u003e.tgz`.\n\nNow, to push the chart to the repository `my-repository`:\n\n```shell\n$ helm gcs push my-chart-\u003csemver\u003e.tgz my-repository\n```\n\nPush the chart with additional option by providing metadata to the object :\n\n```shell\n$ helm gcs push my-chart-\u003csemver\u003e.tgz my-repository --metadata env=my-env,region=europe-west4\n```\n\nPush the chart with additional option by providing path inside bucket :\n\nThis would allow us to structure the content inside the bucket, and stores at `gs://your-bucket/my-application/my-chart-\u003csemver\u003e.tgz`\n\n```shell\n$ helm gcs push my-chart-\u003csemver\u003e.tgz my-repository --bucketPath=my-application\n```\n\nIf you got this error:\n\n```shell\nError: update index file: index is out-of-date\n```\n\nThat means that someone/something updated the same repository, at the same time as you. You just need to execute the command again or, next time, use the `--retry` flag to automatically retry to push the chart.\n\nOnce the chart is uploaded, use helm to fetch it:\n\n```shell\n# Update local repo cache if necessary\n# $ helm repo update\n\n$ helm fetch my-chart\n```\n\n\u003e This command does nothing if the same chart (name and version) already exists.\n\n\u003e Using `--retry` is highly recommended in a CI/CD environment.\n\n### Remove a chart\n\nYou can remove all the versions of a chart from a repository by running:\n\n```shell\n$ helm gcs remove my-chart my-repository\n```\n\nTo remove a specific version, simply use the `--version` flag:\n\n```shell\n$ helm gcs remove my-chart my-repository --version 0.1.0\n```\n\n\u003e Don't forget to run `helm repo up` after you remove a chart.\n\n## Troubleshooting\n\nYou can use the global flag `--debug`, or set `HELM_GCS_DEBUG=true` to get more informations. Please write an issue if you find any bug.\n\n## Helm versions\n\nStarting from 0.3 helm-gcs works with Helm 3, if you want to use it with Helm 2 please install the latest version that supports it\n\n```shell\nhelm plugin install https://github.com/hayorov/helm-gcs.git --version 0.2.2 # helm 2 compatible\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhayorov%2Fhelm-gcs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhayorov%2Fhelm-gcs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhayorov%2Fhelm-gcs/lists"}