-
Notifications
You must be signed in to change notification settings - Fork 274
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] Make the OpenSearch Release Process more Efficient as well as Accessible and Executable by External Contributors #5171
Comments
Adding @getsaurabh02 @peterzhuamazon @prudhvigodithi @rishabh6788 @dblock @reta @andrross to get some input. |
Thank you for the very thorough analysis of the release workflow! I think we may be mixing two problems:
Of course, if you do (2), then (1) becomes easier, but you have shown that the gap is fairly wide. Would it be possible to add the short list of what the must have's are for (1)? For example, "Access to run jenkins workflows by external community member." would be required, but "Sanity testing is done for all components" can continue being done the same way as today. In my opinion those must have's should be Phase 1, with a clear goal of having a community member manage an X.Y version release. |
Thanks a lot for this very detailed description of the current release process. The suggestions to improve it are sound (and the subjects that @dblock brought in are super relevant). It definitely makes sense to me to start with automating the existing manual steps (at least we could start with OpenSearch Core / Dashboard), there are too many manual approvals (PRs, etc) at the moment which definitely contribute to the time and friction of the release. |
Thanks @gaiksaya this is super deep analysis of the release workflow! Excited to see this coming soon. |
Thank you @gaiksaya for the detailed analysis. I believe it will be super helpful to have a runbook that has details on what jobs are relevant to releasing artifact and at which stage are they useful. Also lists the steps and gotchas we have for building, testing and releasing the artifact. |
Thank you for the feedback everyone.
The must have at this point are:
If everyone agrees I can add these must haves to Thanks for the reminder @reta about merging PRs. We do have an open issue for auto-merging PRs opensearch-project/automation-app#37 that needs to be addressed. For code complete and feature freeze I believe they still depend on the repo maintainers what needs to get in before the mentioned dates. Tracking issues/PRs based on version label can be done but not sure how much of overhead that would be on the release manager instead of trusting on the maintainers to get the changes in. Regarding opensearch-project/automation-app#37 @peterzhuamazon do you think this should be moved to automation-app or we should think of an alternative approach such as automatic-merges workflows? |
Thanks @gaiksaya !
I think we could focus on OpenSearch core first, in many regards this is a blocker for any other non-core component. The way I would envision that (for core only):
With core out of the way, all external components are unblocked (at least with respect to dependencies on core). That would tremendously reduce the amount of manual work we do now. |
Thanks @reta. Trying to avoid going in implementation details but I believe we do have the mentioned steps semi-automated. Just need to link them together. Is it possible for you to link the current workflows that creates those PR from core repo? |
I agree with @rishabh6788 that a runbook or SOP would definitely be helping. Thanks. |
It could be moved to automation-app as a centralized approach. |
Exactly @gaiksaya , they are semi automated but it needs a lot of work to finish this semi automation, let me give you just a few example when it falls short:
The semi automation definitely helps, but last mile is still has to be done manually. AFAIK, this is managed by |
Currently, plugin version updates for the |
Thank you! I added an execution plan in the issue body above. Let me know if it makes sense. Will start creating issues for Milestone 1 for now in respective repositories. |
Overview
As of 2.18.0 release of OpenSearch and OpenSearch-Dashboards, we have most processes in the release automated individually. This includes almost all major release steps such as building, assembling, testing, signing and promoting artifacts. We also have one step release for publishing the artifacts to all the platforms with one click.
However, what we currently lack is the ability to link these automations end-to-end, streamline communication between stakeholders throughout the process and the ability of an external non-amazonian community member to be a release manager.
This issue describes the current process, the gaps as well as an approach to make the release process more efficient and hands-free. It also argues how 1-click release process is not a feasible option for OpenSearch distribution releases.
What is a 1-click release
1-click release terminology came from a universal release process that was introduced for standalone components in the OpenSearch-project. Check the Github issue and the onboarding guide for more details.
TL;DR: When a component is ready to be released, the maintainer of the component repository initiates a release by pushing a tag to the repository. This triggers a 2 person review of the release using a GitHub issue. Once approved, a draft release is created on the GitHub with the release artifacts attached to it. The draft release triggers the component jenkins workflow that helps to sign and publish the release to the right platform.
Analysis
OpenSearch and OpenSearch-Dashboards consist of multiple components which includes core + plugins. As of 2.18.0, we have 24 backend plugins and 15 front-end plugins that are bundled together to form various distributions.
Comparing to the existing 1-click release process where the process only involves publishing to the right platform after the product has been tested and validated, the release process for OpenSearch is fairly complicated.
The overall release process involves a series of steps, including building, assembling, thorough testing, and meeting various criteria across multiple components. A fully automated, one-click release process may be challenging to achieve, but a more realistic and valuable goal would be to create a streamlined release process that any external community member can manage with minimal effort. This approach ensures accessibility and efficiency while still maintaining control and quality.
What we have
Below is the list of all the automation we have w.r.t release:
What we lack
As per the entrance and exit criteria:
Entrance Criteria
Exit Criteria
Overall gaps in the current process:
Approach
uml gist
The above diagram represents an overview of the approach. By closing the gaps in the current process, the OpenSearch release process can be made more hands-free and efficient. At the high level, below changes can go in below phases:
Phase 1: Access to CI system
In order to be facilitate release process smoothly, the release manager needs to be able to view, run and debug the release workflows. This phase will take care of providing the fine grained access control to release specific workflows.
Phase 2: Automate existing manual steps
This includes even the smallest step like creating a pull request to update release manager on the website. The current release documentation is very detailed but contains a lot of information that be easily missed. The steps involved in the release process are minor but important. By automating them, the risk of skipping those steps due to human error can be minimized.
Phase 3: Link the automations end-to-end
With smallest automation in place, we need an orchestrator to link these automations together. It would coordinate and manage various components or workflows to ensure that they work together in a structured and automated manner to achieve the goal. At the high level, this would include coordination between workflows/tasks, dependency management, error handling and recovery, monitoring and reporting, etc.
Conclusion
Given the comprehensive nature of the release process, which spans over two weeks, it isn't feasible to have a fully automated, one-click solution from start to finish for OpenSearch and OpenSearch Dashboards. The distribution release process has been always facilitated by the maintainers of this repo. The process can be enhanced by closing the missing gaps listed above (and more). Keeping in mind the OpenSearch’s move to the Linux Foundation, it should be possible for any LF member or an OpenSearch maintainer to release OpenSearch and OpenSearch-Dashboards in the future.
Next steps
Edit:
Execution Plan
The text was updated successfully, but these errors were encountered: