{"action":"created","issue":{"url":"https://api.github.com/repos/adobe/helix-shared/issues/11","repository_url":"https://api.github.com/repos/adobe/helix-shared","labels_url":"https://api.github.com/repos/adobe/helix-shared/issues/11/labels{/name}","comments_url":"https://api.github.com/repos/adobe/helix-shared/issues/11/comments","events_url":"https://api.github.com/repos/adobe/helix-shared/issues/11/events","html_url":"https://github.com/adobe/helix-shared/issues/11","id":386062096,"node_id":"MDU6SXNzdWUzODYwNjIwOTY=","number":11,"title":"Configuration Format and Behavior","user":{"login":"trieloff","id":39613,"node_id":"MDQ6VXNlcjM5NjEz","avatar_url":"https://avatars3.githubusercontent.com/u/39613?v=4","gravatar_id":"","url":"https://api.github.com/users/trieloff","html_url":"https://github.com/trieloff","followers_url":"https://api.github.com/users/trieloff/followers","following_url":"https://api.github.com/users/trieloff/following{/other_user}","gists_url":"https://api.github.com/users/trieloff/gists{/gist_id}","starred_url":"https://api.github.com/users/trieloff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trieloff/subscriptions","organizations_url":"https://api.github.com/users/trieloff/orgs","repos_url":"https://api.github.com/users/trieloff/repos","events_url":"https://api.github.com/users/trieloff/events{/privacy}","received_events_url":"https://api.github.com/users/trieloff/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2018-11-30T06:57:16Z","updated_at":"2018-11-30T07:52:51Z","closed_at":null,"author_association":"NONE","body":"It looks like we need to have another discussion about our configuration format and how configuration behaves. What we have at the moment, looks like this:\r\n\r\n- users create a `helix-config.yaml` which will be loaded and denormalized into `.hlx/strains.json`\r\n- the `helix-config.yaml` contains a number of top-level (global) definitions and a map of `strains`\r\n- each defined strain takes default values from:\r\n  - the global definitions\r\n  - the command line options\r\n  - the \"default\" strain\r\n  - application defaults\r\n  - (the exact precedence rules differ from property to property)\r\n\r\nOur developer needs include:\r\n- the ability to start developing without any configuration file at all\r\n- the ability to quickly generate testable strains for code or content branches that are under development\r\n- the ability to quickly and conveniently switch between strains in simulator and production\r\n- the assurance that none of the above will break a published site\r\n- the ability to do all of the above in a fully automated fashion on a CI system (e.g. generate and deploy a new strain for a new branch)\r\n\r\nSite administration needs also include:\r\n- the ability to define content mount points\r\n- the ability to pass through traffic to another CMS (proxy strains)\r\n\r\nFurthermore, we should establish:\r\n- automated validation of configuration files that is independent from loading them\r\n- detailed and generated documentation for all configuration properties"},"comment":{"url":"https://api.github.com/repos/adobe/helix-shared/issues/comments/443121010","html_url":"https://github.com/adobe/helix-shared/issues/11#issuecomment-443121010","issue_url":"https://api.github.com/repos/adobe/helix-shared/issues/11","id":443121010,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0MzEyMTAxMA==","user":{"login":"trieloff","id":39613,"node_id":"MDQ6VXNlcjM5NjEz","avatar_url":"https://avatars3.githubusercontent.com/u/39613?v=4","gravatar_id":"","url":"https://api.github.com/users/trieloff","html_url":"https://github.com/trieloff","followers_url":"https://api.github.com/users/trieloff/followers","following_url":"https://api.github.com/users/trieloff/following{/other_user}","gists_url":"https://api.github.com/users/trieloff/gists{/gist_id}","starred_url":"https://api.github.com/users/trieloff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trieloff/subscriptions","organizations_url":"https://api.github.com/users/trieloff/orgs","repos_url":"https://api.github.com/users/trieloff/repos","events_url":"https://api.github.com/users/trieloff/events{/privacy}","received_events_url":"https://api.github.com/users/trieloff/received_events","type":"User","site_admin":false},"created_at":"2018-11-30T07:52:51Z","updated_at":"2018-11-30T07:52:51Z","author_association":"NONE","body":"## Proposal: Other complex configuration objects can be defined in a `definitions` container and re-used\r\n\r\nIn order to make writing configurations easier and to enable re-use of configuration settings, we introduce a `definitions` container at the top level of the `helix-config.yaml` that can hold re-usable definitions like this:\r\n\r\n```yaml\r\ndefinitions:\r\n  strains:\r\n    base: &basestrain\r\n      code: /acapt/default/https---github-com-adobe-project-helix-io-git--master--\r\n      sticky: false\r\n    \r\n  origins:\r\n    publish: &publish\r\n      address: 192.168.0.1\r\n      name: publish\r\n      use_ssl: false\r\n```"}}
{"actor":{"display_login":"trieloff"}}