-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[discuss] new elasticsearch client version management #70431
Comments
Pinging @elastic/kibana-platform (Team:Platform) |
The versioning strategy of the client is slightly different, let me summarize it :)
Once we go in feature freeze and (in this case) the As soon as we are in feature freeze, the client is released on npm as Finally, I would like to mention that the client follows semver and there will never be a breaking change between minor releases, the only thing that might change, but there must be a very good reason, are the helpers and the type definitions, as both of them are still in experimental phase. |
For our For our
|
@elastic/kibana-operations would it be a problem to automate the dependency version update? Do we bump version manually? @delvedor Do you release a new version for every major and minor ES releases? But not for patch?
sounds like a proper use-case for mono-repo 😅 |
Currently, the client strictly follows major and minor releases, but as soon as the clients will be a part of the unified release, also patches will be aligned.
Not sure I follow, can you elaborate? If you install from a tag (
Yes, it will. We must figure out a process that addresses all the issues.
Unfortunately, I don't think this could happen, I cannot release before the stack GA nor before FF. |
Folks, I don't think you realize that by using @ elastic / elasticsearch you notified all members of said repository. |
This won't work because it's pinned to a specific version in the lock file. Today I mentioned that we could utilize Renovate to assist with these bumps, however that is currently only configured to monitor the master branch. Adding additional branches for a single dependency would ultimately result in more noise. Currently the EUI team has a similar approach where after releasing a new version, they create a PR to update Kibana. I would really like to avoid using a Git reference for this dependency in master. I have not verified, but I am sure it wouldn't leverage caching to the degree that NPM packages do, adding needless time to the dependency installation/resolution time. Would a viable option be to publish beta releases to be used ahead of actual stack releases?
The main issue I see with this is that for every release, each tracked branch would have to have it's dependency bumped. It's possible we could write a script to assist with this. Or, it would be part of the process when a new version of |
I spoke with @chandlerprall and it's not exactly the same, unfortunately, as they don't need to follow the stack versioning strictly.
We could do this by hand, it should not be an issue. How do you feel about creating a package on npm just for Kibana? I would like to avoid polluting the official client on npm with too many prereleases, otherwise, the UX for developers choosing a version would be a nightmare. Can our current automation bump versions even if they are prereleases? |
Added
I can understand that, however with npm version selection syntax (
I guess that may be a solution, however I'm afraid of a few things:
I will let @tylersmalley answer this one. |
In a "normal" module, where only the latest version is maintained, yes. But given that the client needs to support 2/3 release lines at the same time, developers might find it useful to visit the npm versions page.
It should not be a problem, you just need to rename the import to
You don't need to. The idea is to have a "public" package, which is
I can easily write a script to handle this process, given that the codebase is the same, it's just a matter of renaming and publishing. |
Ok for me. @elastic/kibana-operations @tylersmalley any objections?
|
I am not opposed to creating
Currently version bumps are done by hand by us. If the package is published ahead of time, we can handle the bump at the same time. We have an open issue to automate this here: #25769 |
@tylersmalley actually I was thinking that you should not use the |
Naming is hard and subjective but I would prefer if
We are looking to tie the releases of the clients into the unified release. So therefor unlikely to be available ahead of time since. I reckon swapping packages at version bump/tagging is in general not something you'd want, given the other packages is the one that went through all the testing.
Nitpick but I would not use |
@delvedor any updates here on this? |
@joshdover I'm waiting for you folks to confirm that this approach works for you :) To recap:
The first one will be used by everyone, while Kibana will depend on the second one, both for pre and normal releases. |
@delvedor It seems we have an agreement on this. |
@tylersmalley Is there a doc describing all the steps to do when bumping a version? |
@restrry @delvedor, I have updated our doc and notified @mistic who has been doing our version bumps of this addition to the process. Apologies for not have already started it, I missed this as being settled, my bad. Is there anything we can do to ensure that the version has been created ahead of time? If it has not been created, is this something we could also do as part of this process? |
I've read the comments on the issue but it was not clear to me what was our chosen strategy to handle this (sorry if I miss os misread something 😃 ). I think in my head it makes sense if we can be always in sync with the package across any tracked branch. I strategy that came up into my mind was trying to use
Once 8.0 got release @tylersmalley @restrry @delvedor @pgayvallet what do you think about this? It probably can be improved but in my head it makes sense and I think it will make our life easier to keep our kibana package.json in sync with the less amount of effort. |
You can't have a npm tag point to a GH branch, if that what you meant? |
Hello! With elastic/elasticsearch-js#1338 the client will start publishing two packages:
The first one is the "normal" distribution and will follow stack releases. The second one will be released as soon as there are new changes in the client, such as new features o new supported APIs.
One of the main reasons why we need the canary package is that there is no other way for Kibana to get the new ES features before feature freeze. @tylersmalley @mistic does this look ok for you? |
@pgayvallet when I said pointing to master I meant @next will always reflect the most update changes we have on that branch which will imply the integration of an automatic release tool like @delvedor I'm okay with that approach. Just one question: if kibana will always depend on |
@mistic |
@delvedor got it, I'm okay with it. \cc @tylersmalley |
The canary package is available on npm 🚀 |
@elastic/kibana-operations there are two new versions of the canary package. How will the upgrade be handled? Is it possible to automate it? |
Updated our renovate config to automatically submit PRs on new |
Are we good here? We've agreed on canary versions and have implemented renovate configuration setup, I think that covers the discussion so far. |
Initial discussion here: #69905 (comment)
In #35508 we are going to introduce the new elastic search (https://github.com/elastic/elasticsearch-js)
This issue is to discuss the possible option to keep each
kibana
branches up to date with the expected client's version.The main problem to solve is that the client is no longer (at least officially) compatible between versions. Meaning that we shouldn't theoretically be using a
7.x
client on our master branche, as it targets8.0
, and we shouldn't have a8.0
client on our7.x
branches.Another thing to take into consideration is that
elastic/elasticsearch-js
follow the stack releases. That means that during the development period of a given version, we can't pin the library to the same version.From the discussion we had with @delvedor and @restrry, the possible options could be
(please edit/fix/improve)
use the last released version of the client on kibana master branch
For example today, we would be using the
7.8.0
version of the client on both kibanamaster
and7.x
branches, as it's the last version of the stack released to this day (and therefor the last pinned version of the client)Pros:
master
and7.x
branches, which should ease backporting a lotCons:
master
without using thetransport.request
workaround.master
use
master
version of the client on kibana master branchWe would be using the master/head version of the client on kibana
master
, and pinned version on our7.x
branch. When a branch is cut from7.x
, we then bump the client version on7.x
.master
is always using themaster
version of the client.Pros:
master
Cons:
7.x
branch is targeting the7.9
version, however the last version of the client is7.8
, as7.9
is not, yet, released. As we can't use client'smaster
on7.x
, we would still be forced to rely ontransport.request
for any potential7.9
ES APIs (at least until FF when the client's version is released, but that would then mean to start developing with transport.request and then modify the feature after FF, which doesn't seems like a great idea)master
and7.x
and cause some tedious backporting in some cases.Questions:
The text was updated successfully, but these errors were encountered: