Shopify / Shopify/shipit-engine
Feature request: Config inheritance
Nobody has claimed this yet.
- Dominant language
- Ruby
- Stars
- 1.5k
- Forks
- 154
- Avg merge
- 2h 26m
- Merged PRs (30d)
- 3
Description
ShipIt currently implements replacement config files on a per-environment basis. This is useful when configuration is significantly different between environments.
When configuration differences are limited between environments, this can result in significant duplication. It would be useful for the more specific files to be able to contain an inheritance directive to reduce this duplication. This might look something like this:
shipit.production.yml:
inherit_from: shipit.yml
machine:
environment:
PUBLIC: true
shipit.yml:
machine:
environment:
PUBLIC: false
deploy:
override:
- ./some_deployment_process.sh ${PUBLIC}
...more shared stuff...
We'd be willing to contribute this upstream if it has a reasonable change of being merged. I'm looking for in-principle approval of a feature like this from a maintainer.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with app/models/shipit/deploy_spec/file_system.rb, especially the replacement-config handling linked in the issue, and read the configuration examples in README.md. Determine how an environment-specific file could inherit shared values and how conflicts or nested configuration should behave. Done means the inheritance semantics are agreed with maintainers and documented or tested end to end.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ruby
- Domain
- devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100