-
Notifications
You must be signed in to change notification settings - Fork 226
Add config inheritance to image resolution #859
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR extends the images-resolve-inherits script to support config field inheritance from parent images, in addition to the existing dependency inheritance. Child config values override parent values, matching the established pattern for dependency inheritance.
Key changes:
- Config fields are now merged from parent images during inheritance resolution
- Child config values take precedence over parent values when keys conflict
- Documentation updated to reflect config inheritance behavior
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
### What Update README to document the `inherit` field for custom builds. Replace verbose example that specified all deps with a minimal example that inherits from `latest` and overrides only `stellar-rpc`. ### Why The `inherit` field reduces boilerplate for custom builds by allowing users to extend existing image tags and override only specific dependencies. The field was added in the following pr but I forgot to update the docs: - #857 Dependent on: - #859 Close #856
# Description Add three GitHub Actions workflows that build and test quickstart images on pull requests. Each workflow targets a different base image: testing, nightly, and nightly-next. The workflows build stellar-core from the PR branch and run quickstart built-in tests that check that the network is up, and other software components are ingesting and syncing, and that someone can do some payments (this happens via friendbot). This change is an experiment to see if we get useful feedback about potential breakages to other downstream systems earlier in the development life cycle. The workflows only target pull requests and not push because the quick start repository already runs nightly builds of all software components' default branches. The intent with running this on pull requests is that the repo does have long-lived pull requests from time to time. The goal is to give developers working on Stellar Core earlier feedback if changes they're making are likely to break downstream systems. Failures in these builds, should not block merges. As we figure out how to best tune the build an to evaluate if it's value, if failures occur, they can be ignored, but would appreciate a comment in [this slack channel](https://stellarfoundation.slack.com/archives/C09AY3FHCN6). The protocol default version config parameter in the change will be able to disappear after: - stellar/quickstart#859 There is no issue for this change, but it was discussed prior [here](https://stellarfoundation.slack.com/archives/C09AY3FHCN6/p1764674707236829). cc @sisuresh @anupsdf <!--- Describe what this pull request does, which issue it's resolving (usually applicable for code changes). ---> # Checklist - [x] Reviewed the [contributing](https://github.com/stellar/stellar-core/blob/master/CONTRIBUTING.md#submitting-changes) document - [x] Rebased on top of master (no merge commits) - [ ] ~Ran `clang-format` v8.0.0 (via `make format` or the Visual Studio extension)~ - [ ] ~Compiles~ - [ ] ~Ran all tests~ - [ ] ~If change impacts performance, include supporting evidence per the [performance document](https://github.com/stellar/stellar-core/blob/master/performance-eval/performance-eval.md)~
What
Extend the images-resolve-inherits script to merge config fields from parent images. Child config values override parent values, matching the existing behavior for deps.
Why
Allow images to inherit configuration from parent images, reducing duplication in images.json when child images share common config with their parents. The only config that exists, the only parameter that exists in config today, is the protocol_version_default. It's really helpful to not have to keep updating that and any downstream systems that I want to test against core.
Close #856