{"action":"created","issue":{"url":"https://api.github.com/repos/semantic-release/semantic-release/issues/553","repository_url":"https://api.github.com/repos/semantic-release/semantic-release","labels_url":"https://api.github.com/repos/semantic-release/semantic-release/issues/553/labels{/name}","comments_url":"https://api.github.com/repos/semantic-release/semantic-release/issues/553/comments","events_url":"https://api.github.com/repos/semantic-release/semantic-release/issues/553/events","html_url":"https://github.com/semantic-release/semantic-release/pull/553","id":280852769,"number":553,"title":"Shareable config","user":{"login":"pvdlg","id":3250552,"avatar_url":"https://avatars0.githubusercontent.com/u/3250552?v=4","gravatar_id":"","url":"https://api.github.com/users/pvdlg","html_url":"https://github.com/pvdlg","followers_url":"https://api.github.com/users/pvdlg/followers","following_url":"https://api.github.com/users/pvdlg/following{/other_user}","gists_url":"https://api.github.com/users/pvdlg/gists{/gist_id}","starred_url":"https://api.github.com/users/pvdlg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pvdlg/subscriptions","organizations_url":"https://api.github.com/users/pvdlg/orgs","repos_url":"https://api.github.com/users/pvdlg/repos","events_url":"https://api.github.com/users/pvdlg/events{/privacy}","received_events_url":"https://api.github.com/users/pvdlg/received_events","type":"User","site_admin":false},"labels":[{"id":780659131,"url":"https://api.github.com/repos/semantic-release/semantic-release/labels/core","name":"core","color":"bfd4f2","default":false},{"id":239250070,"url":"https://api.github.com/repos/semantic-release/semantic-release/labels/feature","name":"feature","color":"0052cc","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-12-10T22:38:12Z","updated_at":"2017-12-21T19:20:32Z","closed_at":null,"author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/semantic-release/semantic-release/pulls/553","html_url":"https://github.com/semantic-release/semantic-release/pull/553","diff_url":"https://github.com/semantic-release/semantic-release/pull/553.diff","patch_url":"https://github.com/semantic-release/semantic-release/pull/553.patch"},"body":"Fix #549\r\n\r\n#### Global plugin options\r\nCurrently users are forced to redefined all plugin in the pipeline to define a plugin options. That creates a lengthy option object and its error prone.\r\nIn addition several plugin uses the same options (i.e. `githubUrl`).\r\n\r\nIt's now possible to defined options directly under the `release` property, that will be passed to each plugins.\r\nIt's still possible to define options within the plugin definition to have it passed only to a specific plugin instance.\r\n\r\n#### Shareable config\r\nAdds the options `extends`, which can be defined via configuration file or CLI arguments to a single path or an array of paths of shareable configuration.\r\nA shareable configuration is a file or a module that can be loaded with `require`.\r\nOptions is defined by merging in the following order of priority:\r\n- CLI/API\r\n- Configuration file\r\n- Shareable configuration (from right to left)\r\n\r\nOptions set in a shareable configuration can be unset by setting it to `null` or `undefined` in the main configuration file. If a default value applies to this property it will be used.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/semantic-release/semantic-release/issues/comments/353435228","html_url":"https://github.com/semantic-release/semantic-release/pull/553#issuecomment-353435228","issue_url":"https://api.github.com/repos/semantic-release/semantic-release/issues/553","id":353435228,"user":{"login":"pvdlg","id":3250552,"avatar_url":"https://avatars0.githubusercontent.com/u/3250552?v=4","gravatar_id":"","url":"https://api.github.com/users/pvdlg","html_url":"https://github.com/pvdlg","followers_url":"https://api.github.com/users/pvdlg/followers","following_url":"https://api.github.com/users/pvdlg/following{/other_user}","gists_url":"https://api.github.com/users/pvdlg/gists{/gist_id}","starred_url":"https://api.github.com/users/pvdlg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pvdlg/subscriptions","organizations_url":"https://api.github.com/users/pvdlg/orgs","repos_url":"https://api.github.com/users/pvdlg/repos","events_url":"https://api.github.com/users/pvdlg/events{/privacy}","received_events_url":"https://api.github.com/users/pvdlg/received_events","type":"User","site_admin":false},"created_at":"2017-12-21T19:20:32Z","updated_at":"2017-12-21T19:20:32Z","author_association":"OWNER","body":"Here is an example to what could be done with shareable configs: https://github.com/shroudedcode/semantic-release-apm/issues/4#issuecomment-353409057\r\n\r\nIdeally when that is merge we could create an `apm-config` that would serve as an example. It would include:\r\n- the config itself\r\n- unit test of the config (using the `verifyConditions`) of each plugin\r\n- integration tests with a release end to end\r\n\r\nWe might also consider making public the `semantic-release` API to load the config and run the `verifyConditions` pipeline. That would make shareable config unit test a lot easier."}}
{"actor":{"display_login":"pvdlg"}}