Skip to content
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

[Meta] Mechanism to publish the plugin zips to maven repo. #1916

Closed
38 tasks done
prudhvigodithi opened this issue Apr 6, 2022 · 55 comments
Closed
38 tasks done

[Meta] Mechanism to publish the plugin zips to maven repo. #1916

prudhvigodithi opened this issue Apr 6, 2022 · 55 comments
Assignees
Labels
campaign Parent issues of OpenSearch release campaigns. enhancement New Enhancement Meta v2.0.0

Comments

@prudhvigodithi
Copy link
Member

prudhvigodithi commented Apr 6, 2022

Is your feature request related to a problem? Please describe

With current setup the plugins zips that are used as dependencies cannot be downloaded dynamically during runtime, as they are not part of version controlled maven system. Only the respective Java jars are available to download using maven coordinates.
More details on #716

Describe the solution you'd like

Publish the release candidate zips, distribution build zips (snapshots) to maven repo, so that a user who is dependent on the plugin zip, can download using maven coordinates. There needs to be a process implemented for uploading zips to snapshot and release repos

Proposed Solution [1]:
With the current build system the plugin zips are stored under builds/plugins/, these are not stored or ordered in maven folders, so that maven can publish them with right artifactID, groupID and version.

for each plugin use install:install-file to create the maven coordinates and publish them to local file system maven repo, passing the right artifactID, groupID and version along with proper qualifier if required.
Then from local file system publish them to respective snapshot or release repos, adhering to existing workflows.

To achieve this integrate this solution with existing CI.

Proposed Solution [2]: ---> (The chosen one)
Add a gradle sub-project in each component, so that root gradle project can include them, that converts the zips generated inside distribution folder to maven format, then publish them to local maven repo and staging repo, this way all the maven coordinate's (groupID, artifactID, version) generation and other maven heavy lifting is done at component (plugin) level and using CI with already existing code, publish them to maven nexus repo.

Additional context

For Proposed Solution [1]:
Need to come up with an idea to add either a python script, a groovy shared library or a gradle sub tasks for publishing the zips.

Snapshot zips:

Upload the snapshot plugin zips to https://aws.oss.sonatype.org/content/repositories/snapshots/org/opensearch/plugin/
<plugin_name>/-SNAPSHOT/<.zip_file>
Edit the plan https://github.com/prudhvigodithi/opensearch-build/blob/slack-publish-v1/jenkins/opensearch/distribution-build.jenkinsfile#L82 to upload zips to nexus maven repo

Release zips:
The Release candidates will be signed before staging to make sure files are unaltered.

Also there needs to be an additional tags inside the POM as example for the zips pom file
https://aws.oss.sonatype.org/service/local/repositories/releases/content/org/opensearch/common-utils/1.0.0.0/common-utils-1.0.0.0.pom
Create a staging repo nexus-staging:rc-open this will create a new new staging repository on the remote Nexus
Upload zips from the local filesystem to a staging repository using plugin in built deploy-staged-repository
Close the created staging repo nexus-staging:rc-close

For Proposed Solution [2]:
Add the gradle subproject to each repo and include in root project, for the generated zip to get published to local staging maven repo.

Implementation tasks

Associated Issues

Issue with integrating the gradle java custom plugin:

opensearch-plugin-template-java jdk and gradle version version upgrade

Document Create

Campaign Issues:

Associated PR's

With custom plugin:

Plugin design and usage doc

opensearch-plugin-template-java jdk and gradle version version upgrade

opensearch-plugin-template-java add opensearch.pluginzip details to template

Related Plugin Issues

@prudhvigodithi prudhvigodithi added enhancement New Enhancement untriaged Issues that have not yet been triaged labels Apr 6, 2022
@prudhvigodithi prudhvigodithi self-assigned this Apr 6, 2022
@prudhvigodithi prudhvigodithi removed the untriaged Issues that have not yet been triaged label Apr 6, 2022
@dblock
Copy link
Member

dblock commented Apr 6, 2022

Looks like a dup of #716

@prudhvigodithi
Copy link
Member Author

Hey @dblock, since there are two aspects for this maven publish, one for snapshots repo and other for actual release repo, the two repo workflows are not constant, as release repo has more wider process, like pre staging, promoting, signing, additional maven tags and then releasing, so I have created a meta issue #1916 that expands with more details based on the issue #716.
Right now the snapshot zips for maven snapshot repo, does not have an enforced workflow to publish a zip, unlike the actual release repo, so I have separated into two tasks for snapshot plugin zips and release plugin zips and together tracked in #1916.

@dblock
Copy link
Member

dblock commented Apr 6, 2022

The proposal in this issue is attempting to re-create a separate maven publishing process for any set of ZIPs. This may not be what we want.

Each plugin already publishes artifacts to maven. For example, job-scheduler publishes job-scheduler-spi.jar. This is done following these instructions. It seems to make sense to extend the publication of the JAR to include other artifacts, such as the distribution ZIP. This can be accomplished by adding artifact to https://github.com/opensearch-project/job-scheduler/blob/main/spi/build.gradle#L106. Running ./gradlew publishShadowPublicationToStagingRepository will include the artifact in the output in build/local-staging-repo/org/opensearch/opensearch-job-scheduler-spi/2.0.0.0-alpha1-SNAPSHOT (I tried with a dummy file). That output already gets picked up by the distribution process and makes it to maven. The missing parts are 1) assemble (produce ZIP) before publishing, 2) add all the distribution ZIPs created as artifacts. This isn't necessarily trivial (seems to introduce a circular dependency in tasks).

@mch2 @reta have mucked with all of this quite a bit, maybe you have better ideas?

@prudhvigodithi
Copy link
Member Author

Thanks @dblock, more over looks to me your solution is like working backward, with this we need to add this logic across all repo components to have the zips published in same way, but it will ease of not re-doing the mvn publishing process again.

@reta
Copy link
Contributor

reta commented Apr 6, 2022

@dblock I am hesitating a bit to acknowledge that publishing plugin ZIPs to Maven repositories is a good idea (it is certainly possible - no doubts). But from other side - how people are supposed to use it? It looks to me we should align the publishing (at least, of the standard plugins) with the opensearch-plugin tooling: the plugin ZIP (snapshot / release / ...) should end up in the catalog and be downloadable from there.

In scope of this issue, if you need those dependencies in Maven projects - the direct URL to the catalog could be used along with plugin (fe [1]), they should not be only artifacts. Also, it covers well external 3rd party plugins, often hosted on Github and not published to Maven repos (afaik).

Hope I didn't introduce the confusion, what do you think?

[1] https://github.com/maven-download-plugin/maven-download-plugin

@dblock
Copy link
Member

dblock commented Apr 6, 2022

@reta I think as a consumer I would ideally want to do something like this in Gradle:

dependencies {
    opensearchPlugin 'org.opensearch.job-scheduler:2.0-SNAPSHOT'
}

Latest snapshot build job-scheduler-2.0-SNAPSHOT.zip would be downloaded from Maven and automatically installed into an integration test cluster before I run integTest. All this support would be implemented in Gradle in OpenSearch min.

Is this crazy?

Something like maven-download-plugin works well as a middle-ground solution, but @prudhvigodithi it looks like you chose the maven route, I imagine you have a clear idea of how those artifacts will be used?

And yes, #1823 is waaay less work for similar effect where you just download from a latest URL similar to opensearch-project/anomaly-detection#487, "by hand".

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented Apr 6, 2022

Hey @dblock, I see this PR overrides the requirement to download a zip in a maven way, it uses directly GET protocol to download the latest zip, also as suggested by @reta maven-download-plugin download different files on different protocol and this can connect with above change, a user can download straight from URL without giving maven coordinates as

        <uri>https://example.com/file1.zip</uri>
        <uri>https://example.com/file2.zip</uri>
        <uri>https://example.com/file3.zip</uri>
        <!-- and so on -->
    </uris>

So from consumer perspective if we can document this we can skip zips publish to maven, else once its in maven a user can always download using maven coordinates as well as with GET protocols.
@bbarani @peterzhu1992

@dblock
Copy link
Member

dblock commented Apr 6, 2022

Once ZIPs are published to maven the URL will be changing every time, you'll need to be able to resolve something like https://aws.oss.sonatype.org/service/local/repositories/snapshots/content/org/opensearch/opensearch-job-scheduler-spi/2.0.0.0-alpha1-SNAPSHOT/opensearch-job-scheduler-spi-2.0.0.0-alpha1-20220406.220005-79.zip (here's the jar published today). So the solution in that PR doesn't work. It does look like maven-download-plugin does this, but I've never used it in gradle.

@reta
Copy link
Contributor

reta commented Apr 6, 2022

@reta I think as a consumer I would ideally want to do something like this in Gradle:

dependencies {
    opensearchPlugin 'org.opensearch.job-scheduler:2.0-SNAPSHOT'
}

Latest snapshot build job-scheduler-2.0-SNAPSHOT.zip would be downloaded from Maven and automatically installed into an integration test cluster before I run integTest. All this support would be implemented in Gradle in OpenSearch min.

Is this crazy?

No, it is not, but:

  • what about Maven / SBT / ... build tools?
  • where the opensearch-plugin downloads plugins from?

Something like maven-download-plugin works well as a middle-ground solution, but @prudhvigodithi it looks like you chose the maven route, I imagine you have a clear idea of how those artifacts will be used?

There are plenty of projects which use this route (publishing ZIP/TAR/...), it is on the table for sure and it works. BUT that would mean, very likely, we have to ask all external plugin authors to do that for their plugins (and as such, they would have to look for publishing options).

@prudhvigodithi
Copy link
Member Author

@dblock I dont see date format is added to zips with current setup, the plugins are just dumped as regular files without date, so you are saying if we add ./gradlew publishShadowPublicationToStagingRepository it will add date as well to the zip, just like it adds for jar ?, but gradle should always pull the latest if we pass org.opensearch.job-scheduler:2.0-SNAPSHOT even though there are multiple date formatted zips, also I guess it would be better to add plugins under https://aws.oss.sonatype.org/content/repositories/snapshots/org/opensearch/plugin/

@dblock
Copy link
Member

dblock commented Apr 6, 2022

@dblock I dont see date format is added to zips with current setup, the plugins are just dumped as regular files without date, so you are saying if we add ./gradlew publishShadowPublicationToStagingRepository it will add date as well to the zip, just like it adds for jar ?, but gradle should always pull the latest if we pass org.opensearch.job-scheduler:2.0-SNAPSHOT even though there are multiple date formatted zips, also I guess it would be better to add plugins under https://aws.oss.sonatype.org/content/repositories/snapshots/org/opensearch/plugin/

Yes, it will add the date to the file name, that's how maven works for snapshots. Take a look at https://aws.oss.sonatype.org/service/local/repositories/snapshots/content/org/opensearch/opensearch-job-scheduler-spi/2.0.0.0-alpha1-SNAPSHOT/, that's all the artifacts for many snapshot builds. To find out what the latest one is, maven looks in this file. Regardless of how you publish to maven, SNAPSHOT builds will end up having a date/time in the filename. While you can disable it, there's no folder called "latest", so you'd have hard time getting a direct download URL to the latest build.

When we publish a final released version of 2.0, there's only 1, so maven doesn't need to append the date or anything.

@dblock
Copy link
Member

dblock commented Apr 6, 2022

> > Is this crazy?

No, it is not, but:

  • what about Maven / SBT / ... build tools?

Maven could use maven-download-plugin, etc. Either way we're only debating whether ZIPs are published like JARs in maven, or they are published as ZIPs somewhere else. We can do both and let people decide what they like.

  • where the opensearch-plugin downloads plugins from?

It piggybacks on maven repository resolution 100%. It's effectively a fancy wrapper over (the equivalent of) maven-download-plugin, a syntax sugar that knows to install the plugin into an OpenSearch cluster before running integ tests.

But maybe that's just over-engineering ...

@reta
Copy link
Contributor

reta commented Apr 6, 2022

@dblock sounds good, as far as different tools pull ZIPs consistently using same conventions, we could use Maven as the distribution mechanism.

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented Apr 7, 2022

Hey @dblock, I have tested the idea to work backward from individual repo, to be able to add assembled zip's also to maven format just like how the jars are added. I was able to do this Draft. Please check the following implementation steps

  1. Directly publishing the plugins zips in to current maven repo(the place where the jars are published ), would cause some problem, as it appends with -spi suffix, but the distribution zip (actual plugin does not create this way), we should actually separate the maven coordinates for the plugins, rather that having same maven articatID, groupID and version just like the jar files. Example taking the zip as default and passing it as another zip artifact in line

Screen Shot 2022-04-07 at 12 58 22 PM

  1. Now separating out the maven coordinates for plugin Zips, Since we are using shadow plugin to publish, as per the functionality it will publish both the sourcesJar and the javadocJar (along with the shadowjars), along with the zip ----> we need to remove those 2 jars as it will duplicate the sourcesJar and the javadocJar,
    Example if seen the below screenshot, we are seeing the sourcesJar and the javadocJar are pushed twice

Screen Shot 2022-04-07 at 12 45 20 PM

  1. Since we dont need those sourcesJar and the javadocJar files for zip's, and we since we also cant exclude in with shadow publishing, I have added a quick shortcut, to clean them using find cli, this will not update the metadata.xml file generate for the local repo.

Screen Shot 2022-04-07 at 12 49 28 PM

Now with this a user should be able to download opensearch-job-scheduler plugin zip with maven coordinates as

  <groupId>org.opensearch.plugin</groupId>
  <artifactId>opensearch-job-scheduler</artifactId>
  <version>2.0.0.0-alpha1-SNAPSHOT</version>

The above values of groupId, artifactId, version are all inherited from default job-scheduler build system, as all heavy lifting is already been done here.
@bbarani @peterzhuamazon @reta

@reta
Copy link
Contributor

reta commented Apr 7, 2022

Thanks for the update @prudhvigodithi ,

Now separating out the maven coordinates for plugin Zips, Since we are using shadow plugin to publish, as per the functionality it will publish both the sourcesJar and the javadocJar (along with the shadowjars), along with the zip ----> we need to remove those 2 jars as it will duplicate the sourcesJar and the javadocJar,
Example if seen the below screenshot, we are seeing the sourcesJar and the javadocJar are pushed twice

I think there should be a way to strip those artifacts (javadoc and sources) from ZIP publishing without CLI scripting. May be we should strip them by default and only configure with JAR publisher?

@dblock
Copy link
Member

dblock commented Apr 7, 2022

I like the draft! I obviously dislike the custom elimination of sources and jar, which is hopefully something that can be disabled in shadow. Then, job scheduler has this spi vs. non-spi build gradle so this may be muddying the waters. Should this be going into root buld.gradle? Should this be in the distribution gradle? A new subfolder dedicated to publishing the zip to maven?

I think you should iterate on a PR into job-scheduler for this and let's see if we can merge something?

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented Apr 8, 2022

@reta, yes we can directly push them with jar, then all the zips, jar javadoc and sources jars's will be under same maven location, which could confuse users to use those zip plugins, hence I wanted to separate the maven location for plugin zips, there already exists plugin prefix.

ya thats a good point @reta I have this question as well, do we actually use these javadoc and sources jars's ? @dblock @bbarani @reta
If not we dont need to publish them, I see for example opensearch-ml-client does not have these javadoc and sources jars's (it depends on app to app as well).

@dblock I liked the idea for a new subfolder, let me explore this and yes my idea was 1st once we have the job-scheduler working, then we can have the same implementation for other components as well. 👍

@reta
Copy link
Contributor

reta commented Apr 8, 2022

ya thats a good point @reta I have this question as well, do we actually use these javadoc and sources jars's ?

they are useful for developers (for example if you develop a plugin which depends on another plugin), so it is better to have them published.

@dblock I liked the idea for a new subfolder, let me explore this and yes my idea was 1st once we have the job-scheduler working, then we can have the same implementation for other components as well.

We could actually follow the other projects and publish ZIPs as -distribution artifacts, fe [1]

[1] https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.9.v20180320/

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented Apr 8, 2022

Cool, thanks for the info @reta
I found something, I actually dont see these javadoc and sources jars's for opensearch-job-scheduler as well, but I so see them on my local when I build them.

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented Apr 8, 2022

I see whats happening so this block of code eliminates from uploading them :)
So I guess its useful @reta but looks like the main jar is itself built with all dependancies, please correct me if i'm wrong
@dblock @reta

@reta
Copy link
Contributor

reta commented Apr 8, 2022

@dblock @prudhvigodithi since I am lacking the context here, sorry for possible derailing, but using custom made scripts for publishing artifacts is not what the community (since we are discussing the plugins) would expect: gradle publish (and its variations) should be enough and the only way (imho)

@mch2
Copy link
Member

mch2 commented Apr 8, 2022

Wanted to chime in with a few callouts & questions.

@dblock @prudhvigodithi since I am lacking the context here, sorry for possible derailing, but using custom made scripts for publishing artifacts is not what the community (since we are discussing the plugins) would expect: gradle publish (and its variations) should be enough and the only way (imho)

Agree 100%. This stems from a current limitation with our signing process not wired into gradle. So the build system builds and pushes the artifacts that are then after the fact picked up, signed, and promoted with these scripts.

I see whats happening so this block of code eliminates from uploading them :)

We've had an issue out for killing this script for a while. We should be pushing directly from gradle publish. It doesn't look like we are signing every snapshot build so we don't have the limitation there. I'm thinking maybe we can update the opensearch publish plugin to automatically give all plugins a task to push snapshots, and they only have to define their maven publication.

As far as placing maven publications in the same group/artifact id with different packaging. I'm hesitant about this because I'm not sure the jars produced by each plugin match the produced plugin zips that are installed today. Job-scheduler-spi vs job-scheduler as an example. Meaning the artifact is inherently different and not simply differentiated by packaging type. If this is the case I think we should treat them as two separate artifacts under the same group ID.

I would also explore updating the publish plugin with a task where all plugins need to specify is the output path of the zip and any plugin specific fields required in the pom (scm etc). That task could then generate the pom and publish in one go. This would make it easier to onboard and less custom logic in each plugin script.

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented Apr 8, 2022

Hey @dblock, @reta, please check this Draft, I have modified to add the zip publish task to root gradle project. With this I see the maven coordinates for zip plugin being created as Example

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.opensearch.plugin</groupId>
  <artifactId>opensearch-job-scheduler</artifactId>
  <version>2.0.0.0-alpha1-SNAPSHOT</version>
  <packaging>zip</packaging>
  <name>OpenSearch Job Scheduler Plugin zip</name>
  <url>https://github.com/prudhvigodithi/job-scheduler.git</url>
  <scm>
    <url>https://github.com/prudhvigodithi/job-scheduler.git</url>
  </scm>
  <inceptionYear>2021</inceptionYear>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>
  <developers>
    <developer>
      <name>OpenSearch</name>
      <url>https://github.com/opensearch-project/job-scheduler</url>
    </developer>
  </developers>
</project>

Since this is added as part of root project, we call a task publishAllPublicationsToStagingRepository that by default checks for all maven publish tasks.
I have also added a flag ext.publish = 'skip', just in case in future if a user wants to disable to publish the zips to maven

So my plan is to get this merged to job-scheduler and with no other code change we should be see job-scheduler plugin zips under nexus maven repo plugin location.

@prudhvigodithi
Copy link
Member Author

As far as placing maven publications in the same group/artifact id with different packaging. I'm hesitant about this because I'm not sure the jars produced by each plugin match the produced plugin zips that are installed today. Job-scheduler-spi vs job-scheduler as an example. Meaning the artifact is inherently different and not simply differentiated by packaging type. If this is the case I think we should treat them as two separate artifacts under the same group ID.

Hey @reta, thats true, we should not use same groupID for different package types, I have separated the zips's as

  <groupId>org.opensearch.plugin</groupId>
  <artifactId>opensearch-job-scheduler</artifactId>
  <version>2.0.0.0-alpha1-SNAPSHOT</version>

@downsrob
Copy link
Contributor

@prudhvigodithi dB looks to be blocking that PR until all plugins get this change in to avoid adding custom logic to the default build script, but that would mean introducing a custom build script in every plugin, then changing the default build script and then removing the custom build script from each plugin. I would prefer to only add the publishing zip task for plugins with the default build script, and then once all plugins have onboarded, the default build script can change to introduce the change without requiring an interim build script for all plugins.

@dblock
Copy link
Member

dblock commented May 18, 2022

What @downsrob is proposing works fine as well - get all plugins to onboard without adding a custom build script, then change the default to enable it for everyone.

@prudhvigodithi
Copy link
Member Author

Hey @dblock @downsrob, if I understood correct, 1st make sure all plugins use the gradle plugin opensearch.pluginzip (make all changes in build,.gradle file as per document) without executing the task publishPluginZipPublicationToZipStagingRepository and then make change to default build.sh to add publishPluginZipPublicationToZipStagingRepository, is that what the suggestion is ? if this is the case, the zip's wont be published, as the task publishPluginZipPublicationToZipStagingRepository should be called out to ensure the zips are published.

@dblock
Copy link
Member

dblock commented May 18, 2022

Hey @dblock @downsrob, if I understood correct, 1st make sure all plugins use the gradle plugin opensearch.pluginzip (make all changes in build,.gradle file as per document) without executing the task publishPluginZipPublicationToZipStagingRepository and then make change to default build.sh to add publishPluginZipPublicationToZipStagingRepository, is that what the suggestion is ?

Yes

if this is the case, the zip's wont be published, as the task publishPluginZipPublicationToZipStagingRepository should be called out to ensure the zips are published.

i am not sure i understand what you’re saying :) once you’ve added the task to the default build.sh without conditionals it will work for all plugins

Note that the default script is still used for older versions, so we may not be able to modify it after all

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented May 18, 2022

I'm fine until all plugins are onboarded to use opensearch.pluginzip and then include in default build.sh file (Each plugin team should test publishPluginZipPublicationToZipStagingRepository locally and merge the PR), but the catch here is the plugins team should also backport the changes to older versions if not it would break the old versions when the default build.sh is called that has new added task publishPluginZipPublicationToZipStagingRepository.
The other better way is create a build.sh file to each plugin and manage the assemble and publish tasks, this could be a starting point for this change, but it would benefit long term as each plugin team can manage the set of tasks to run during build process and we can keep the generic default build.sh for infrastructure automations, thoughts? @downsrob @dblock @bbarani @peterzhuamazon

@downsrob
Copy link
Contributor

If you want a published zip of the older versions anyways, say, for BWC testing, then I can see the merit in backporting the task to all versions and moving on. However, it seems natural that eventually the default build.sh would no longer encompass all versions, if not from this change, maybe the next. What do you think about versioning the default script on the infra side?

@dblock
Copy link
Member

dblock commented May 18, 2022

If you want a published zip of the older versions anyways, say, for BWC testing, then I can see the merit in backporting the task to all versions and moving on. However, it seems natural that eventually the default build.sh would no longer encompass all versions, if not from this change, maybe the next. What do you think about versioning the default script on the infra side?

That's proposed in #1975, add your comments there.

I want to make sure we don't try to solve the kitchen sink at the same time, so maybe cloning the default build script for your plugin is the most expedient path?

@prudhvigodithi
Copy link
Member Author

prudhvigodithi commented Jul 8, 2022

Starting with release 2.1.0, we now have plugin zips in maven repo
Moving forward plugin zips can be fetched for dependencies using maven coordinates.
alerting
anomaly-detection
asynchronous-search
reports-scheduler
index-management
job-scheduler
k-NN
performance-analyzer
security
sql
observability
cross-cluster-replication
ml-commons

Thank you

@prudhvigodithi
Copy link
Member Author

Closing this META as associated tasks are marked as complete, please feel free to re-open this issue if required. :)
Thank you

@dblock @CEHENKLE @bbarani

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
campaign Parent issues of OpenSearch release campaigns. enhancement New Enhancement Meta v2.0.0
Projects
None yet
Development

No branches or pull requests

8 participants