-
Notifications
You must be signed in to change notification settings - Fork 123
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
Helm Repo Release Streams #419
Conversation
519c55c
to
34fb897
Compare
To test:
|
CHANGELOG.md
Outdated
|
||
## main / unreleased | ||
|
||
* [FEATURE] #409 Add support for `configOverride` |
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.
Are these issue numbers or PR numbers? When adding a new PR, should we create an entry at the top or the bottom of the unreleased section?
Here's an entry for my in-flight PR:
* [FEATURE] #409 Add support for `configOverride` | |
* [ENHANCEMENT] #436 Upgrade Stargate to 1.0.11 and add a `preStop` lifecycle hook to improve behavior when reducing the number of Stargate replicas in the presence of live traffic | |
* [FEATURE] #409 Add support for `configOverride` |
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.
It is currently the PR number. The order outside of the category seems less important. We could try and do it by when it was merged in to main, or based on the PR number. What are your thoughts?
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.
For your inflight PR do you want to rebase off of main and update the CHANGELOG there (in the PR)?
Looks good! I added a changelog entry for a PR I have in flight in the form of a "suggestion", and have a couple non-blocking questions. |
d49c8dc
to
d4ad5f5
Compare
Note for developers, the dependencies are not stored in-tree and are explicitly .gitignored. If you want to pull the latest dependencies run the |
@bradfordcp I understand that this PR removes the dependencies from git, but are the charts still using local, filesystem dependencies? My hope was to altogether do away with local dependencies. |
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.
I have done a first pass through the changes. I see that we are still using local dependencies, e.g.,
dependencies:
- name: cass-operator
version: 0.29.0
repository: file://../cass-operator
condition: cass-operator.enabled
I want to altogether avoid local dependencies. I think it is error-prone. I think the charts should be pointing to published versions.
Here is the sort of workflow I am hoping for:
- I update cass-operator chart with new cass-operator image
- I update cass-operator chart version
- I open an PR with cass-operator chart changes
- When the PR is merged, GH Actions publishes the new version of cass-operator chart
- Note that at this point k8ssandra still points at the previous version of cass-operator chart
- I open another PR that updates the k8ssandra chart to point to the new version of cass-operator chart
I'm open to the workflow where we do not support local dependencies at all, but it has a major drawback. That is we can never have changes across chart boundaries within a single PR. In the workflow above I would have to wait for the cass-operator PR to merge before moving on with my changes instead of bundling them into a common PR. Additionally, the release process would have to change a little. We would have to update the dependencies to reference the stable stream when we cut a tag. It's not difficult, but there is extra work / complexity. |
What do you think of a hybrid approach? IE local dependency on the |
I am aware of this. I am not convinced though that it is a drawback though. The versions of k8ssandra's dependencies correspond to what is in main. For example, we k8ssandra depends on version 0.29.0 of cass-operator. If we look in charts/cass-operator/Chart.yaml we should find that the version is 0.29.0. This makes me nervous because we recently had a situation where that dependency did not actually match what was in main despite the versions being the same. Here is the problem I see in this PR. GH Actions runs |
I'm not a fan of that process. Here's what I had in mind:
I don't think we should have another step at all when controlling operator <-> k8ssandra master. What happens with stable releases is different, but otherwise I hope we would always ship the newest operator in the k8ssandra's next channel. The github actions can modify the files automatically in the repository, there's no need for PR step. It means the updated versions can be automatically pushed to the helm streams also to prevent local storage of those files. Obviously, the two exceptions are |
This could definitely happen in a local environment. Fortunately, with this change the compressed dependencies will NOT be committed. As you commit files and push them to the branch PR checks will run. This will regenerate the compressed dependencies with only the files that are committed. The test suite is then run again with the committed files. This could lead to tests failing in the CI environment where they "pass" locally. IMHO that's a win as we would catch the issue before being merged to |
I'm open to removing the logic that rebuilds the dependencies and keeping the helper script if that helps us get the release automation in place. That feels like a mistake as we could end up in a situation where the committed tarballs are out of date (this has already happened). What do you think we should do to move forward? |
Just to clarify to @jsanda's approach, in my ideology this would not require multiple PRs. I'll try to go through some workflows to explain why. Even when using remote-repository by default, it does not mean that the local installation must use (for testing purposes) the remote repository. It's a very simple script to change this to local for testing. However, for development, I think we should automate every possible part. Lets say you're developing changes to reaper-operator and want to test them.
This all should be automated, there's no need for manual PRs to update any of these (and I'd say we shouldn't even allow that). It guarantees that all the dependencies are automatically managed and kept on the correct versions. This is for the development versions obviously - I'd like to keep the stable updates as separate thoughtprocess for now. For stable releases, we can automatically create all those .tar.gz packages that include everything for offline installation also if we want, so remote repositories are not an issue. The above process is not black magic nor even difficult to implement. Neither is the yaml modification script to take local version to use - this is simple in Python. |
Removed binary dependencies from repo Added helper script to pull chart dependencies Started CHANGELOG Added helper scripts to install yq and helm Signed-off-by: Christopher Bradford <christopher.bradford@datastax.com>
fb0e03e
to
b53e74d
Compare
@burmanm Thanks for the detailed write up. I am very interested to learn more about the process you are describing. I think it would be best to pursue that in a separate ticket though. The changes in this PR are definitely a big improvement from where we currently are, so I think it makes sense to go ahead and merge. We can consider additional changes/improvements in follow up tickets. Thanks @bradfordcp! |
* update chart version * Updated workflows for new release streams Removed binary dependencies from repo Added helper script to pull chart dependencies Started CHANGELOG Added helper scripts to install yq and helm Signed-off-by: Christopher Bradford <christopher.bradford@datastax.com> * Bringing in CHANGELOG entry from @jakerobb * Removing binary chart dependencies, again Co-authored-by: John Sanda <john.sanda@gmail.com>
What this PR does:
helm.k8ssandra.io/stable
orhelm.k8ssandra.io/next
..tgz
files from undercharts/*/charts/*.tgz
Chart.yaml
(wraps calls tohelm dep update
in a for loop)This removes the binary dependencies from the repo and gitignores anything locally. K8ssandra developers will be able to regenerate these files with the helper script.
Which issue(s) this PR fixes:
Fixes #439, #203
Checklist
charts/
has changed)