{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/helm/issues/2759","repository_url":"https://api.github.com/repos/kubernetes/helm","labels_url":"https://api.github.com/repos/kubernetes/helm/issues/2759/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/helm/issues/2759/comments","events_url":"https://api.github.com/repos/kubernetes/helm/issues/2759/events","html_url":"https://github.com/kubernetes/helm/issues/2759","id":247566202,"node_id":"MDU6SXNzdWUyNDc1NjYyMDI=","number":2759,"title":"Feature: Better Dependency Management Specification","user":{"login":"apeschel","id":567739,"node_id":"MDQ6VXNlcjU2NzczOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/567739?v=4","gravatar_id":"","url":"https://api.github.com/users/apeschel","html_url":"https://github.com/apeschel","followers_url":"https://api.github.com/users/apeschel/followers","following_url":"https://api.github.com/users/apeschel/following{/other_user}","gists_url":"https://api.github.com/users/apeschel/gists{/gist_id}","starred_url":"https://api.github.com/users/apeschel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apeschel/subscriptions","organizations_url":"https://api.github.com/users/apeschel/orgs","repos_url":"https://api.github.com/users/apeschel/repos","events_url":"https://api.github.com/users/apeschel/events{/privacy}","received_events_url":"https://api.github.com/users/apeschel/received_events","type":"User","site_admin":false},"labels":[{"id":778129496,"node_id":"MDU6TGFiZWw3NzgxMjk0OTY=","url":"https://api.github.com/repos/kubernetes/helm/labels/lifecycle/stale","name":"lifecycle/stale","color":"795548","default":false},{"id":269212356,"node_id":"MDU6TGFiZWwyNjkyMTIzNTY=","url":"https://api.github.com/repos/kubernetes/helm/labels/question/support","name":"question/support","color":"cc317c","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2017-08-03T01:20:03Z","updated_at":"2018-06-11T10:34:22Z","closed_at":null,"author_association":"NONE","body":"The dependency management in helm at the moment is extremely rudimentary. There is no protection against duplicated charts dependencies in `requirements.yaml`.\r\n\r\nFor example, the following `requirements.yaml`\r\n\r\n```\r\ndependencies:\r\n- name: postgresql\r\n  version: 0.6.0\r\n  repository: https://kubernetes-charts.storage.googleapis.com/\r\n- name: postgresql\r\n  version: 0.6.0\r\n  repository: https://kubernetes-charts.storage.googleapis.com/\r\n- name: postgresql\r\n  version: 0.5.0\r\n  repository: https://kubernetes-charts.storage.googleapis.com/\r\n- name: postgresql\r\n  version: 0.5.0\r\n  repository: https://example.com\r\n```\r\n\r\nResults in the following:\r\n\r\n```\r\n$helm dependency list .\r\nNAME            VERSION REPOSITORY                                              STATUS\r\npostgresql      0.6.0   https://kubernetes-charts.storage.googleapis.com/       too many matches\r\npostgresql      0.6.0   https://kubernetes-charts.storage.googleapis.com/       too many matches\r\npostgresql      0.5.0   https://kubernetes-charts.storage.googleapis.com/       too many matches\r\npostgresql      0.5.0   https://example.com\r\n```\r\n\r\nAttempting to use this will result in a large amount of chaos.\r\n\r\nPutting conflicting charts into `requirements.yaml` is not something that happens in a normal workflow at the moment, but this is something that will quickly arise with recursive dependency management.\r\n\r\nSome thoughts:\r\n\r\nThere are plenty of examples of dependency managers to use as a reference: npm, pip, ruby gems, etc. It may even make sense to just reuse the dependency manager library from another project.\r\n\r\nThe spec should probably look something like this:\r\n\r\n- Return an error if a single chart lists the same dependency more than once.\r\n- Return an error if two or more charts have different repositories for the same dependency\r\n- Allow version range semantics (eg `>=1.2.7 <1.3.0`) for dependencies\r\n- Return an error if dependency range requirements cannot be met for all subcharts.\r\n\r\nWhat is the right behavior if two subscharts have different dependency versions? EG:\r\n\r\n```\r\ntopchart\r\n├── subchart1\r\n│   ├── postgresql-0.5.0\r\n│   └── redis-0.3.6\r\n└── subchart2\r\n    ├── postgresql-0.6.0\r\n    └── redis-0.4.6\r\n```"},"comment":{"url":"https://api.github.com/repos/kubernetes/helm/issues/comments/396198878","html_url":"https://github.com/kubernetes/helm/issues/2759#issuecomment-396198878","issue_url":"https://api.github.com/repos/kubernetes/helm/issues/2759","id":396198878,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NjE5ODg3OA==","user":{"login":"fejta-bot","id":30488982,"node_id":"MDQ6VXNlcjMwNDg4OTgy","avatar_url":"https://avatars1.githubusercontent.com/u/30488982?v=4","gravatar_id":"","url":"https://api.github.com/users/fejta-bot","html_url":"https://github.com/fejta-bot","followers_url":"https://api.github.com/users/fejta-bot/followers","following_url":"https://api.github.com/users/fejta-bot/following{/other_user}","gists_url":"https://api.github.com/users/fejta-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/fejta-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fejta-bot/subscriptions","organizations_url":"https://api.github.com/users/fejta-bot/orgs","repos_url":"https://api.github.com/users/fejta-bot/repos","events_url":"https://api.github.com/users/fejta-bot/events{/privacy}","received_events_url":"https://api.github.com/users/fejta-bot/received_events","type":"User","site_admin":false},"created_at":"2018-06-11T10:34:22Z","updated_at":"2018-06-11T10:34:22Z","author_association":"NONE","body":"Stale issues rot after 30d of inactivity.\nMark the issue as fresh with `/remove-lifecycle rotten`.\nRotten issues close after an additional 30d of inactivity.\n\nIf this issue is safe to close now please do so with `/close`.\n\nSend feedback to sig-testing, kubernetes/test-infra and/or [fejta](https://github.com/fejta).\n/lifecycle rotten\n/remove-lifecycle stale"}}
{"actor":{"display_login":"fejta-bot"}}