{"id":13646862,"url":"https://github.com/cathive/concourse-chartmuseum-resource","last_synced_at":"2025-09-11T02:38:05.858Z","repository":{"id":40773861,"uuid":"117334212","full_name":"cathive/concourse-chartmuseum-resource","owner":"cathive","description":"interacts with a Chart Museum instance or Harbor (Kubernetes Helm Charts storage)","archived":false,"fork":false,"pushed_at":"2023-06-29T07:27:51.000Z","size":98,"stargazers_count":14,"open_issues_count":3,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-15T00:08:19.564Z","etag":null,"topics":["chartmuseum","ci","concourse","continuous-delivery","continuous-integration","deployment","helm","k8s","kubernetes","packaging","pipeline"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/cathive.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"AUTHORS.md"}},"created_at":"2018-01-13T10:21:12.000Z","updated_at":"2024-09-08T16:37:29.000Z","dependencies_parsed_at":"2024-01-14T09:59:57.185Z","dependency_job_id":"4b073e22-a95b-484d-8e52-db5343cf86d2","html_url":"https://github.com/cathive/concourse-chartmuseum-resource","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/cathive/concourse-chartmuseum-resource","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathive%2Fconcourse-chartmuseum-resource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathive%2Fconcourse-chartmuseum-resource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathive%2Fconcourse-chartmuseum-resource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathive%2Fconcourse-chartmuseum-resource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cathive","download_url":"https://codeload.github.com/cathive/concourse-chartmuseum-resource/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathive%2Fconcourse-chartmuseum-resource/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274568492,"owners_count":25309281,"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","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["chartmuseum","ci","concourse","continuous-delivery","continuous-integration","deployment","helm","k8s","kubernetes","packaging","pipeline"],"created_at":"2024-08-02T01:03:11.028Z","updated_at":"2025-09-11T02:38:05.821Z","avatar_url":"https://github.com/cathive.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# [ChartMuseum](https://github.com/kubernetes-helm/chartmuseum/) Resource for [Concourse CI](https://concourse.ci/)\n\nFetches, verifies and publishes Helm Charts from a running ChartMuseum instance.\n[Harbor](https://goharbor.io/) works as well, since it uses ChartMuseum under the hood.\n\nThis resource works probably best in conjunction with the [Helm resource](https://github.com/linkyard/concourse-helm-resource)\nwhich can be used to perform Helm deployments into Kubernetes clusters.\n\n## Requirements\n\n* A running ChartMuseum instance (this resource has been tested with v0.9.0)\n\n## Installation\n\nAdd a new resource type to your Concourse CI pipeline:\n\n```yaml\nresource_types:\n- name: chartmuseum\n  type: docker-image\n  source:\n    repository: cathive/concourse-chartmuseum-resource\n    tag: latest # For reproducible builds use a specific tag and don't rely on \"latest\".\n```\n\n## Source Configuration\n\n* `server_url`: *Required.* The address of the Chartmuseum/Harbor API. For chartmuseum, this'll be something like `https://chartmuseum.yourdomain.com/api/charts`. For harbor (*which uses chartmuseum but changes the API and path*), this'll be something like `https://harbor.yourdomain.com/api/chartrepo/charts` (*for the default \"library\" project*) or `https://harbor.yourdomain.com/api/chartrepo/\u003cproject name\u003e/charts` for other projects.\n\n* `chart_name`: *Required* The name of the chart to operate upon.\n\n* `version_range`: Optional parameter that can be used to specify a (SemVer) version range\n  that must match when checking for new charts, e.g. `=1.2.0`, `^2.0.0`, `~0.2.3` or `*`.\n\n* `basic_auth_username`: Optional username to be used if your ChartMuseum is username/password protected.\n  If provided, the paramter `basic_auth_password` must also be specified.\n\n* `basic_auth_password`: Optional password to be used if your ChartMuseum is username/password protected.\n  If provided, the paramter `basic_auth_username` must also be specified.\n\n* `harbor_api`: Optional, set to `true` use the Harbor API (*which is different enough to the standard ChartMuseum API not to work*)\n\n## Behavior\n\nThe resource implements all three actions (check, in and out).\n\n### check: Check for new versions of the Helm chart\n\nChecks for new versions of the specified Helm chart.\nIf a semver version range has been specified in the `source`configuration it will be\nhonored when checking new versions.\n\n### in: Fetches the chart and (optionally) verifies it's provenance\n\nPlaces the JSON object that describes the Helm chart into the destination directory\nalong with the package and it's provenance file.\n\nThe basename of these three files will be in the format `${chart_name}-${chart_version}`\nunless overwritten by the parameter `target_basename`.\n\n#### \"in\" Parameters\n\n* `target_basename`: Optional parameter that can be used to change the name of the\n  input files that will be written.\n\n### out: Push an updated version of the Helm chart\n\n#### \"out\" Parameters\n\n* `chart`: *Required* Path to the tgz-archive or a folder that contains the chart to be\n  uploaded. If a folder has been specified instead of a \".tgz\" file, this folder will be\n  packaged up prior to uploading it's contents to the ChartMuseum instance.\n\n* `force`: Optional parameter that can be used to force the upload of the chart,\n  even if the version to be uploaded does already exist on the server. Enforcement\n  only works, if the ChartMuseum server has *not* been started with the\n  `--disable-force-overwrite` flag, though.\n\n* `version`: Optional parameter that can be used to override the \"version\" field in the\n  chart's `Chart.yaml` file. If the override version is stored in a file, you can use the\n  parameter `version_file` instead.\n\n* `version_file`: Optional parameter that points to a file that contains a version string\n  that should be used to override the version specified in the chart's `Chart.yaml` file.\n\n* `sign`: Optional parameter that indicates if the chart package should be signed using a\n  GPG key. If set to `true` either `key_data` or `key_file` must be specified as well.\n\n* `key_data`: If `sign` has been set to `true`, this parameter can be used to pass the\n  key to be used to sign the chart package.\n\n* `key_file`: If `sign` has been set to `true`, this parameter can be used to pass the\n  location of a file that contains the GPG key that shall be used to sign the chart\n  package.\n\n* `key_passphrase`: If `sign` has been set to `true` this parameter can be used to\n  specifcy the passphrase that protects the GPG signing key to be used to sign\n  the chart package.\n\n* `dependency_update`: must be set to `true` if there are any dependencies in the\n   helm chart to be uploaded. This will cause the dependencies to be fetched\n   before the chart is packaged.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcathive%2Fconcourse-chartmuseum-resource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcathive%2Fconcourse-chartmuseum-resource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcathive%2Fconcourse-chartmuseum-resource/lists"}