From c93dc735539284db67158397eb8d8dd06dacd4d7 Mon Sep 17 00:00:00 2001
From: Zelin Hao
Date: Wed, 2 Aug 2023 14:03:33 -0700
Subject: [PATCH 1/3] Modify the jenkins job to trigger reporting
Signed-off-by: Zelin Hao
---
.../integ-test.jenkinsfile | 36 +++++++++++--------
jenkins/opensearch/integ-test.jenkinsfile | 7 ++++
2 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/jenkins/opensearch-dashboards/integ-test.jenkinsfile b/jenkins/opensearch-dashboards/integ-test.jenkinsfile
index a7280e73c9..15f3ce2257 100644
--- a/jenkins/opensearch-dashboards/integ-test.jenkinsfile
+++ b/jenkins/opensearch-dashboards/integ-test.jenkinsfile
@@ -1,6 +1,6 @@
-lib = library(identifier: 'jenkins@5.4.1', retriever: modernSCM([
+lib = library(identifier: 'jenkins@jenkins_report', retriever: modernSCM([
$class: 'GitSCMSource',
- remote: 'https://github.com/opensearch-project/opensearch-build-libraries.git',
+ remote: 'https://github.com/zelinh/opensearch-build-libraries.git',
]))
def docker_images = [
@@ -198,22 +198,22 @@ pipeline {
switchUserNonRoot: "${switch_user_non_root}"
)
String closeCommentMessage = "Closing the issue as the Integration Test passed for ${local_component}
Version: ${version}
Distribution: ${distribution}
Architecture: ${architecture}
Platform: ${platform}
Please check the logs: ${RUN_DISPLAY_URL}
*"
- closeGithubIssue(
- repoUrl: buildManifestObj.getRepo("${local_component}"),
- issueTitle: "[AUTOCUT] Integration Test failed for ${local_component}: ${version} ${distribution} distribution",
- closeComment: closeCommentMessage,
- label: "autocut,v${version},integ-test-failure"
- )
+// closeGithubIssue(
+// repoUrl: buildManifestObj.getRepo("${local_component}"),
+// issueTitle: "[AUTOCUT] Integration Test failed for ${local_component}: ${version} ${distribution} distribution",
+// closeComment: closeCommentMessage,
+// label: "autocut,v${version},integ-test-failure"
+// )
}
} catch (e) {
echo "Error running integtest for component ${local_component}, creating Github issue"
String issueBodyMessage = "The integration test failed at distribution level for component ${local_component}
Version: ${version}
Distribution: ${distribution}
Architecture: ${architecture}
Platform: ${platform}
Please check the logs: ${RUN_DISPLAY_URL}
* Steps to reproduce: See https://github.com/opensearch-project/opensearch-build/tree/main/src/test_workflow#integration-tests
* See all log files:
- [With security](https://ci.opensearch.org/ci/dbc/${JOB_NAME}/${version}/${buildId}/${platform}/${architecture}/${distribution}/test-results/${BUILD_NUMBER}/integ-test/${local_component}/with-security/${local_component}.yml) (if applicable)
- [Without security](https://ci.opensearch.org/ci/dbc/${JOB_NAME}/${version}/${buildId}/${platform}/${architecture}/${distribution}/test-results/${BUILD_NUMBER}/integ-test/${local_component}/without-security/${local_component}.yml) (if applicable)
"
- createGithubIssue(
- repoUrl: buildManifestObj.getRepo("${local_component}"),
- issueTitle: "[AUTOCUT] Integration Test failed for ${local_component}: ${version} ${distribution} distribution",
- issueBody: issueBodyMessage,
- label: "autocut,v${version},integ-test-failure"
- )
+// createGithubIssue(
+// repoUrl: buildManifestObj.getRepo("${local_component}"),
+// issueTitle: "[AUTOCUT] Integration Test failed for ${local_component}: ${version} ${distribution} distribution",
+// issueBody: issueBodyMessage,
+// label: "autocut,v${version},integ-test-failure"
+// )
throw new Exception("Error running integtest for component ${local_component}", e)
} finally {
echo "Completed running integtest for component ${local_component}"
@@ -234,6 +234,14 @@ pipeline {
}
post {
always {
+ createTestRunManifest(
+ testManifest: "manifests/${TEST_MANIFEST}",
+ buildManifest: BUILD_MANIFEST_OPENSEARCH,
+ buildManifestDashboards: BUILD_MANIFEST,
+ testRunID: "${env.BUILD_NUMBER}",
+ testType: "integ-test",
+ )
+ sh("cat test-run.yml")
postCleanup()
}
}
diff --git a/jenkins/opensearch/integ-test.jenkinsfile b/jenkins/opensearch/integ-test.jenkinsfile
index bcd6af52d2..920a931c78 100644
--- a/jenkins/opensearch/integ-test.jenkinsfile
+++ b/jenkins/opensearch/integ-test.jenkinsfile
@@ -198,6 +198,13 @@ pipeline {
}
post {
always {
+ createTestRunManifest(
+ testManifest: "manifests/${TEST_MANIFEST}",
+ buildManifest: BUILD_MANIFEST,
+ testRunID: "${env.BUILD_NUMBER}",
+ testType: "integ-test",
+ )
+ sh("cat test-run.yml")
postCleanup()
}
}
From ad2d49708190ec7374be4824370d78e4cf75e0ad Mon Sep 17 00:00:00 2001
From: Zelin Hao
Date: Tue, 22 Aug 2023 17:12:41 -0700
Subject: [PATCH 2/3] Add post stage to create test report manifest
Signed-off-by: Zelin Hao
---
.../component_release_template.md | 1 +
.github/ISSUE_TEMPLATE/release_template.md | 162 ++++--
.github/workflows/link-checker.yml | 5 +-
Pipfile | 2 +-
Pipfile.lock | 7 +-
README.md | 70 +--
RELEASE_PROCESS_OPENSEARCH.md | 543 ++++++++++++++++++
assests/distribution_build_os.png | Bin 0 -> 122341 bytes
docker/ci/config/windows-servercore-setup.ps1 | 227 ++++++++
...opensearch-dashboards.x64.arm64.dockerfile | 103 ++++
...ockylinux8.opensearch.x64.arm64.dockerfile | 4 +-
...uild.windows2019.servercore.x64.dockerfile | 31 +
...lease.centos7.clients.x64.arm64.dockerfile | 14 +-
...opensearch-dashboards.x64.arm64.dockerfile | 0
...ld.centos7.opensearch.x64.arm64.dockerfile | 2 +-
...tos7.performance-test.x64.arm64.dockerfile | 0
jenkins/check-for-build.jenkinsfile | 8 +-
.../perf-test.jenkinsfile | 10 +-
jenkins/docker/docker-build.jenkinsfile | 28 +-
jenkins/gradle/gradle-check.jenkinsfile | 8 +-
...RunNonSecurityPerfTestScript.groovy.legacy | 0
.../perf-test.jenkinsfile | 26 +-
.../bwc-test.jenkinsfile | 1 +
.../distribution-build.jenkinsfile | 74 +--
.../integ-test.jenkinsfile | 58 +-
jenkins/opensearch/benchmark-test.jenkinsfile | 144 +++--
jenkins/opensearch/bwc-test.jenkinsfile | 1 +
.../opensearch/distribution-build.jenkinsfile | 75 +--
jenkins/opensearch/integ-test.jenkinsfile | 32 +-
.../maven-publish-1.3.x.jenkinsfile | 2 +-
manifests/1.3.12/opensearch-1.3.12-test.yml | 69 +++
manifests/1.3.12/opensearch-1.3.12.yml | 127 +++-
.../opensearch-dashboards-1.3.12-test.yml | 52 ++
.../1.3.12/opensearch-dashboards-1.3.12.yml | 40 ++
manifests/1.3.13/opensearch-1.3.13.yml | 16 +
...ensearch-2.10.0-concurrent-search-test.yml | 189 ++++++
manifests/2.10.0/opensearch-2.10.0-test.yml | 133 +++++
.../opensearch-dashboards-2.10.0-test.yml | 82 +++
.../2.10.0/opensearch-dashboards-2.10.0.yml | 43 ++
manifests/3.0.0/opensearch-3.0.0-test.yml | 113 ++++
manifests/3.0.0/opensearch-3.0.0.yml | 25 +
.../opensearch-dashboards-3.0.0-test.yml | 44 +-
.../3.0.0/opensearch-dashboards-3.0.0.yml | 15 +
.../opensearch/1.x/non-os-template-1.1.0.yml | 30 +
.../opensearch-release-notes-1.3.12.md | 41 ++
.../opensearch/deb/debian/postinst | 12 +-
.../deb/debmake_opensearch_install.sh | 3 +-
.../opensearch/rpm/opensearch.rpm.spec | 27 +-
src/build_workflow/build_args.py | 9 +
...un_manifest.py => test_report_manifest.py} | 8 +-
src/report_workflow/README.md | 24 +
src/report_workflow/report_args.py | 2 +-
...st_run_runner.py => test_report_runner.py} | 22 +-
src/run_build.py | 10 +-
src/run_test_report.py | 8 +-
src/sign_workflow/sign_args.py | 2 +-
src/sign_workflow/signer_jar.py | 53 ++
src/sign_workflow/signers.py | 2 +
src/test_workflow/README.md | 26 +-
.../benchmark_test/benchmark_args.py | 17 +-
.../benchmark_test/benchmark_test_cluster.py | 1 +
.../benchmark_test/benchmark_test_suite.py | 14 +-
src/test_workflow/bwc_test/bwc_test_runner.py | 2 +-
tests/jenkins/TestDockerBuild.groovy | 5 +
.../TestOpenSearchDashboardsIntegTest.groovy | 9 +-
tests/jenkins/TestOpenSearchIntegTest.groovy | 43 +-
.../TestRunNonSecBenchmarkTestScript.groovy | 6 +-
.../TestRunSecureBenchmarkTestScript.groovy | 8 +-
tests/jenkins/data/opensearch-3.0.0-build.yml | 23 +
tests/jenkins/data/opensearch-3.0.0-test.yml | 132 +++++
.../perf-test.jenkinsfile.txt | 5 -
.../bwc-test.jenkinsfile.txt | 2 +
.../integ-test.jenkinsfile.txt | 82 ++-
.../opensearch/benchmark-test.jenkinsfile.txt | 131 +++--
.../opensearch/bwc-test.jenkinsfile.txt | 2 +
.../opensearch/integ-test.jenkinsfile.txt | 124 ++--
.../opensearch/perf-test.jenkinsfile.txt | 2 +
.../secure-benchmark-test.jenkinsfile.txt | 139 +++--
tests/test_run_build.py | 57 ++
tests/test_run_test_report.py | 2 +-
tests/tests_build_workflow/test_build_args.py | 8 +
.../tests_manifests/test_test_run_manifest.py | 6 +-
...n_runner.py => test_test_report_runner.py} | 42 +-
tests/tests_sign_workflow/test_signer_jar.py | 61 ++
tests/tests_sign_workflow/test_signers.py | 6 +
.../test_benchmark_test_cluster.py | 2 +
.../test_benchmark_test_suite.py | 24 +-
87 files changed, 3216 insertions(+), 604 deletions(-)
create mode 100644 RELEASE_PROCESS_OPENSEARCH.md
create mode 100644 assests/distribution_build_os.png
create mode 100644 docker/ci/config/windows-servercore-setup.ps1
create mode 100644 docker/ci/dockerfiles/current/build.rockylinux8.opensearch-dashboards.x64.arm64.dockerfile
create mode 100644 docker/ci/dockerfiles/current/build.windows2019.servercore.x64.dockerfile
rename docker/ci/dockerfiles/{current => legacy}/build.centos7.opensearch-dashboards.x64.arm64.dockerfile (100%)
rename docker/ci/dockerfiles/{current => legacy}/build.centos7.opensearch.x64.arm64.dockerfile (99%)
rename docker/ci/dockerfiles/{current => legacy}/test.centos7.performance-test.x64.arm64.dockerfile (100%)
rename tests/jenkins/TestRunNonSecurityPerfTestScript.groovy => jenkins/legacy/TestRunNonSecurityPerfTestScript.groovy.legacy (100%)
rename jenkins/{opensearch => legacy}/perf-test.jenkinsfile (75%)
create mode 100644 manifests/1.3.12/opensearch-1.3.12-test.yml
create mode 100644 manifests/1.3.12/opensearch-dashboards-1.3.12-test.yml
create mode 100644 manifests/1.3.12/opensearch-dashboards-1.3.12.yml
create mode 100644 manifests/1.3.13/opensearch-1.3.13.yml
create mode 100644 manifests/2.10.0/opensearch-2.10.0-concurrent-search-test.yml
create mode 100644 manifests/2.10.0/opensearch-2.10.0-test.yml
create mode 100644 manifests/2.10.0/opensearch-dashboards-2.10.0-test.yml
create mode 100644 manifests/templates/opensearch/1.x/non-os-template-1.1.0.yml
create mode 100644 release-notes/opensearch-release-notes-1.3.12.md
rename src/manifests/{test_run_manifest.py => test_report_manifest.py} (94%)
create mode 100644 src/report_workflow/README.md
rename src/report_workflow/{test_run_runner.py => test_report_runner.py} (88%)
create mode 100644 src/sign_workflow/signer_jar.py
create mode 100644 tests/jenkins/data/opensearch-3.0.0-build.yml
create mode 100644 tests/jenkins/data/opensearch-3.0.0-test.yml
rename tests/tests_report_workflow/{test_test_run_runner.py => test_test_report_runner.py} (79%)
create mode 100644 tests/tests_sign_workflow/test_signer_jar.py
diff --git a/.github/ISSUE_TEMPLATE/component_release_template.md b/.github/ISSUE_TEMPLATE/component_release_template.md
index 02a01df03b..1c06905ea2 100644
--- a/.github/ISSUE_TEMPLATE/component_release_template.md
+++ b/.github/ISSUE_TEMPLATE/component_release_template.md
@@ -33,6 +33,7 @@ If including changes in this release, increment the version on `{{RELEASE_VERSIO
- [ ] Finalize scope and feature set and update [the Public Roadmap](https://github.com/orgs/opensearch-project/projects/1).
- [ ] All the tasks in this issue have been reviewed by the release owner.
- [ ] Create, update, triage and label all features and issues targeted for this release with `v{{RELEASE_VERSION}}`.
+- [ ] Finalize the code and create the the release branch `{{RELEASE_VERSION}}` from the `{{RELEASE_VERSION_X}}` branch.
### CI/CD
diff --git a/.github/ISSUE_TEMPLATE/release_template.md b/.github/ISSUE_TEMPLATE/release_template.md
index 0b254c13a4..b41886651e 100644
--- a/.github/ISSUE_TEMPLATE/release_template.md
+++ b/.github/ISSUE_TEMPLATE/release_template.md
@@ -13,90 +13,130 @@ I noticed that a manifest was automatically created in [manifests/{{ env.VERSION
## This Release Issue
-This issue captures the state of the OpenSearch release, its assignee is responsible for driving the release. Please contact them or @mention them on this issue for help. There are linked issues on components of the release where individual components can be tracked. More details are included in the Maintainers [Release owner](https://github.com/opensearch-project/opensearch-build/blob/main/MAINTAINERS.md#release-owner) section.
+This issue captures the state of the OpenSearch release, its assignee (Release Manager) is responsible for driving the release. Please contact them or @mention them on this issue for help. There are linked issues on components of the release where individual components can be tracked. For more information check the the [Release Process OpenSearch Guide](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md).
-## Release Steps
+
+
-There are several steps to the release process, these steps are completed as the whole release and components that are behind present risk to the release. The release owner completes the tasks in this ticket, whereas component owners resolve tasks on their ticket in their repositories.
+Please refer to the following link for the release version dates: [Release Schedule and Maintenance Policy](https://opensearch.org/releases.html).
-Steps have completion dates for coordinating efforts between the components of a release; components can start as soon as they are ready far in advance of a future release.
+### [Preparation](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#preparation)
-### Component List
+- [ ] [Release manager](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-manager) assigned.
+- [ ] Existence of label in each component repo. For more information check the [release-label](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-label) section.
+- [ ] [Increase the build frequency](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#increase-the-build-frequency).
+- [ ] [Release Issue](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-issue).
-To aid in understanding the state of the release there is a table with status indicating each component state. This is updated based on the status of the component issues.
+### [Campaigns](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#campaigns)
-
-
+- [ ] [Component Release Issue](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#component-release-issue).
+- [ ] [Release Campaigns](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-campaigns).
-### Preparation
+### [Release Branch and Version Increment](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-branch-readiness) - _Ends __REPLACE_RELEASE-minus-14-days__
-- [ ] Assign this issue to a release owner.
-- [ ] Declare a pencils down date for new features to be merged.
-- [ ] __REPLACE_RELEASE-minus-14-days__ is pencils down date for feature freeze.
-- [ ] Update the Campaigns section to include monitoring campaigns during this release.
-- [ ] Update this issue so all `__REPLACE_RELEASE-__` placeholders have actual dates.
-- [ ] Document any new quality requirements or changes.
-- [ ] Finalize scope and feature set and update [the Public Roadmap](https://github.com/orgs/opensearch-project/projects/1).
-- [ ] [Create a release issue in every component repo](https://github.com/opensearch-project/opensearch-plugins/blob/main/META.md#create-an-issue-in-all-plugin-repos) based on [component release issue template](https://github.com/opensearch-project/opensearch-build/blob/main/.github/ISSUE_TEMPLATE/component_release_template.md) and link back to this issue, update Components section with these links.
-- [ ] Ensure the label is created in each component repo for this new version, and the next minor release. [Create a version label](https://github.com/opensearch-project/opensearch-plugins/blob/main/META.md#create-or-update-labels-in-all-plugin-repos)
-- [ ] Ensure that all release issues created above are assigned to an owner in the component team.
-- [ ] Increase the build frequency for the this release from once a day (H 1 * * *) to once every hour (H/60 * * * *) in [jenkinsFile](https://github.com/opensearch-project/opensearch-build/blob/main/jenkins/check-for-build.jenkinsfile).
+- [ ] [Core Release Branch](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#core).
+- [ ] [Core Version Increment](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#core-version-increment).
+- [ ] [Components Release Branch](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#components).
+- [ ] [Components Version Increment](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#components-version-increment).
-### Campaigns
+### [Feature Freeze](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#code-complete-and-feature-freeze) - _Ends __REPLACE_RELEASE-minus-12-days__
-__REPLACE with OpenSearch wide initiatives to improve quality and consistency.__
+- [ ] OpenSearch / OpenSearch-Dashboards core and components teams finalize their features.
-### Release Branch - _Ends __REPLACE_RELEASE-minus-14-days__
+### [Code Complete](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#code-complete-and-feature-freeze) - _Ends __REPLACE_RELEASE-minus-10-days___
-- [ ] Component versions are auto-incremented to {{ env.VERSION }} version.
-- [ ] Plugins team to ensure working CI in component repositories and merge the version increment PRs.
-- [ ] OpenSearch / OpenSearch-Dashboards core cut branch `.` early.
-- [ ] All component repos create `.` branch for the release.
+- [ ] Mark this as done once the [Code Complete](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#code-complete-and-feature-freeze) is reviewed.
+- [ ] Create/Verify pull requests to add each component to relase input [manifests/{{ env.VERSION }}/opensearch-{{ env.VERSION }}.yml](/opensearch-project/opensearch-build/tree/main/manifests/{{ env.VERSION }}/opensearch-{{ env.VERSION }}.yml) and [manifests/{{ env.VERSION }}/opensearch-dashboards-{{ env.VERSION }}.yml](/opensearch-project/opensearch-build/tree/main/manifests/{{ env.VERSION }}/opensearch-dashboards-{{ env.VERSION }}.yml).
-### Feature Freeze - _Ends __REPLACE_RELEASE-minus-12-days__
+### [Release Candidate Creation and Testing](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-candidate-creation-and-testing) - _Ends __REPLACE_RELEASE-minus-6-days___
-- [ ] OpenSearch / OpenSearch-Dashboards core and components teams finalize their features.
-- [ ] Create Jenkins workflows that run daily snapshot builds for [OpenSearch](https://build.ci.opensearch.org/job/distribution-build-opensearch/) and [OpenSearch Dashboards](https://build.ci.opensearch.org/job/distribution-build-opensearch-dashboards/).
-- [ ] Make pull requests to add each component to [manifests/{{ env.VERSION }}/opensearch-{{ env.VERSION }}.yml](/opensearch-project/opensearch-build/tree/main/manifests/{{ env.VERSION }}/opensearch-{{ env.VERSION }}.yml) and [manifests/{{ env.VERSION }}/opensearch-dashboards-{{ env.VERSION }}.yml](/opensearch-project/opensearch-build/tree/main/manifests/{{ env.VERSION }}/opensearch-dashboards-{{ env.VERSION }}.yml) with the corresponding checks.
+- [ ] [Generate Release Candidate](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-candidate).
+- [ ] [Integ Test TAR](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#integ-test-tar).
+- [ ] [Integ Test RPM](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#integ-test-rpm).
+- [ ] [Docker Build and Scan](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#docker-build-and-scan).
+- [ ] [Backwards Compatibility Tests](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#backwards-compatibility-tests).
+- [ ] [Windows Integration Test](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#windows-integration-test).
+- [ ] [Broadcast and Communication](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#broadcast-and-communication).
+- [ ] [Release Candidate Lock](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-candidate-lock).
+
+### [Performance testing validation](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#benchmark-tests) - _Ends __REPLACE_RELEASE-minus-6-days___
-### Code Complete - _Ends __REPLACE_RELEASE-minus-10-days___
+- [ ] Post the benchmark-tests
+- [ ] Longevity tests do not show any issues.
-- [ ] Code Complete: Make sure that the code for this specific version of the release is ready and the branch corresponding to this release has been added to this release version manifest.
-- [ ] Verify pull requests to add each component to [manifests/{{ env.VERSION }}/opensearch-{{ env.VERSION }}.yml](/opensearch-project/opensearch-build/tree/main/manifests/{{ env.VERSION }}/opensearch-{{ env.VERSION }}.yml) and [manifests/{{ env.VERSION }}/opensearch-dashboards-{{ env.VERSION }}.yml](/opensearch-project/opensearch-build/tree/main/manifests/{{ env.VERSION }}/opensearch-dashboards-{{ env.VERSION }}.yml) have been merged.
-- [ ] Gather, review and combine the release notes from components repositories.
+### [Pre Release](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#pre-release) - _Ends __REPLACE_RELEASE-minus-1-days___
-### Release testing - _Ends __REPLACE_RELEASE-minus-6-days___
+- [ ] [Release Labeled Issues](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-labeled-issues).
+- [ ] [Go or No-Go](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#go-or-no-go).
+- [ ] [Promote Repos](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#promote-repos).
+- [ ] [Promote artifacts](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#promote-artifacts).
+- [ ] [Release Notes](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-notes).
-- [ ] Declare a release candidate build, and provide the instructions with the release candidates for teams on testing (__REPLACE_RELEASE-minus-8-days__).
-- [ ] Stop builds for this version of OpenSearch and/or OpenSearch Dashboards in order to avoid accidental commits going in unknowingly. Restart only if necessary else manually run the build workflow and declare new release candidate.
-- [ ] After generate the release candidates, raise PR to lock input manifest refs of both OS and OSD builds with the commit ids from distribution manifest of the release candidates.
-- [ ] Sanity Testing (__REPLACE_RELEASE-minus-8-days__ - __REPLACE_RELEASE-minus-6-days__): Sanity testing and fixing of critical issues found by teams. Teams test their components within the distribution, ensuring integration, backwards compatibility, and perf tests pass.
-- [ ] Publish all test results in the comments of this issue.
+### [Release](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#main-release) - _Ends {__REPLACE_RELEASE-day}_
-### Performance testing validation - _Ends __REPLACE_RELEASE-minus-6-days___
+- [ ] [Maven Promotion](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#maven-promotion).
+- [ ] [Docker Promotion](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#docker-promotion).
+- [ ] [Release Validation](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-validation).
+- [ ] [Collaboration with the Project Management Team](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#collaboration-with-the-project-management-team).
-- [ ] Performance tests do not show a regression.
-- [ ] Longevity tests do not show any issues.
+### [Release Checklist](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-checklist).
-### Release - _Ends {__REPLACE_RELEASE-day}_
+
+Release Checklist
+
-- [ ] Verify [all issues labeled `v{{ env.VERSION }}` in all projects](https://github.com/opensearch-project/project-meta#find-labeled-issues) have been resolved.
-- [ ] Complete [documentation](https://github.com/opensearch-project/documentation-website) for this release.
-- [ ] Author [blog post](https://github.com/opensearch-project/project-website) for this release.
-- [ ] __REPLACE_RELEASE-minus-1-day - Publish this release on [opensearch.org](https://opensearch.org/downloads.html).
-- [ ] __REPLACE_RELEASE-day - Publish a [blog post](https://github.com/opensearch-project/project-website) - release is launched!
+### Pre-Release activities
+- [ ] Promote Repos.
+ - - [ ] OS
+ - - [ ] OSD
+- [ ] Promote Artifacts.
+ - - [ ] Windows
+ - - [ ] Linux Debian
+ - - [ ] Linux RPM
+ - - [ ] Linux TAR
+- [ ] Consolidated Release Notes.
+
+### Release activities
+- [ ] Docker Promotion.
+- [ ] Release Validation part 1.
+ - - [ ] OpenSearch and OpenSearch Dashboard Validation.
+ - - [ ] Validate the native plugin installation.
+- [ ] Merge consolidated release notes PR.
+- [ ] Website and Documentation Changes.
+ - - [ ] Merge staging website PR.
+ - - [ ] Promote the website changes to prod.
+ - - [ ] Add website alert.
+- [ ] Release Validation part 2.
+ - - [ ] Validate the artifact download URL's and signatures.
+- [ ] Release Validation part 3.
+ - - [ ] Trigger the validation build (Search for `Completed validation for <>` in the logs).
+- [ ] Maven Promotion.
+- [ ] Publish blog posts.
+- [ ] Advertise on Social Media.
+- [ ] Post on public slack and Github Release issue.
+
+### Post-Release activities
+- [ ] Release Tags.
+- [ ] Input Manifest Update.
+- [ ] Decrease the Build Frequency.
+- [ ] OpenSearch Build Release notes.
+- [ ] Retrospective Issue.
+- [ ] Helm and Ansible Playbook release.
+- [ ] Upcoming Release Preparation.
-### Post Release
+
+
+
+
+### [Post Release](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#post-release)
-- [ ] Create [release tags](https://github.com/opensearch-project/opensearch-build/blob/main/jenkins/release-tag/release-tag.jenkinsfile) for each component (Jenkins job name: release-tag-creation).
-- [ ] Replace refs in [manifests/{{ env.VERSION }}](/opensearch-project/opensearch-build/tree/main/manifests/{{ env.VERSION }}) with tags and remove checks.
-- [ ] If this is a major or minor version release, stop building previous patch version.
-- [ ] Generate distribution release notes reviewed by PM team for opensearch-build repository.
-- [ ] Increment version for Helm Charts [(sample PR)](https://github.com/opensearch-project/helm-charts/pull/246) for the `{{ env.VERSION }}` release.
-- [ ] Increment version for Ansible Charts [(sample PR)](https://github.com/opensearch-project/ansible-playbook/pull/50) for the `{{ env.VERSION }}` release.
-- [ ] Prepare [for next patch release](https://github.com/opensearch-project/opensearch-plugins/blob/main/META.md#increment-a-version-in-every-plugin) by incrementing patch versions for each component.
-- [ ] Update [this template](https://github.com/opensearch-project/opensearch-build/blob/main/.github/ISSUE_TEMPLATE/release_template.md) with any new or missed steps.
-- [ ] Create an issue for a retrospective, solicit feedback, and publish a summary.
+- [ ] [Release Tags](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#release-tags).
+- [ ] [Input Manifest Update](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#input-manifest-update).
+- [ ] [OpenSearch Build Release notes](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#opensearch-build-release-notes).
+- [ ] [Decrease the Build Frequency](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#decrease-the-build-frequency).
+- [ ] [Retrospective Issue](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#retrospective-issue).
+- [ ] [Helm and Ansible Playbook release](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#helm-and-ansible-playbook-release).
+- [ ] [Upcoming Release Preparation](https://github.com/opensearch-project/opensearch-build/blob/main/RELEASE_PROCESS_OPENSEARCH.md#upcoming-release-preparation).
### Components
@@ -116,4 +156,4 @@ __Replace with links to all component tracking issues.__
| :red_circle: | Missed multiple milestones |
-
+
\ No newline at end of file
diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml
index b00a81b406..a4b7c5ca3d 100644
--- a/.github/workflows/link-checker.yml
+++ b/.github/workflows/link-checker.yml
@@ -1,7 +1,6 @@
---
name: Link Checker
-on:
- push:
+on: [push, pull_request]
permissions:
contents: read
@@ -15,7 +14,7 @@ jobs:
id: lychee
uses: lycheeverse/lychee-action@v1.5.4
with:
- args: --accept=200,403,429 --exclude-mail **/*.html **/*.md **/*.txt **/*.json --exclude-file .lychee.excludes
+ args: --accept=200,403,429 --exclude-mail **/*.html **/*.md **/*.txt **/*.json --exclude-file .lychee.excludes --exclude-path tests/
fail: true
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/Pipfile b/Pipfile
index 9f0798b96c..328cad7677 100644
--- a/Pipfile
+++ b/Pipfile
@@ -30,7 +30,7 @@ sortedcontainers = "~=2.4.0"
cerberus = "~=1.3.4"
psutil = "~=5.8"
atomicwrites = "~=1.4.1"
-validators = "~=0.20.0"
+validators = "*"
yamlfix = "~=1.0.1"
yamllint = "~=1.27.1"
pytablewriter = "~=0.64.2"
diff --git a/Pipfile.lock b/Pipfile.lock
index 8dcb40bfe8..6b78b9f947 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256": "15c704bcb340f5a90f3d3197c5cd791d86549cc1b7adec55998b0263b675e48e"
+ "sha256": "c7967cf4ead64b6ca007013a5dd53dd22a044683b5cc7c2e1dd6c375a91e483d"
},
"pipfile-spec": 6,
"requires": {
@@ -649,10 +649,11 @@
},
"validators": {
"hashes": [
- "sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a"
+ "sha256:002ba1552076535176824e43149c18c06f6b611bc8b597ddbcf8770bcf5f9f5c",
+ "sha256:6ad95131005a9d4c734a69dd4ef08cf66961e61222e60da25a9b5137cecd6fd4"
],
"index": "pypi",
- "version": "==0.20.0"
+ "version": "==0.21.2"
},
"virtualenv": {
"hashes": [
diff --git a/README.md b/README.md
index 4272f8c404..ad250ee2b2 100644
--- a/README.md
+++ b/README.md
@@ -7,33 +7,33 @@
- [Releasing OpenSearch](#releasing-opensearch)
- [Releases and Versions](#releases-and-versions)
- - [Creating a New Version](#creating-a-new-version)
- - [Onboarding a New Plugin](#onboarding-a-new-plugin)
- - [Building and Testing an OpenSearch Distribution](#building-and-testing-an-opensearch-distribution)
- - [Building from Source](#building-from-source)
- - [Assembling a Distribution](#assembling-a-distribution)
- - [Building Patches](#building-patches)
- - [Min snapshots](#min-snapshots)
- - [CI/CD Environment](#cicd-environment)
- - [Build Numbers](#build-numbers)
- - [Latest Distribution Url](#latest-distribution-url)
- - [Testing the Distribution](#testing-the-distribution)
- - [Checking Release Notes](#checking-release-notes)
- - [Signing Artifacts](#signing-artifacts)
- - [PGP](#pgp)
- - [Windows](#windows)
- - [Signing RPM artifacts](#signing-rpm-artifacts)
- - [Making a Release](#making-a-release)
- - [Releasing for Linux](#releasing-for-linux)
- - [Releasing for FreeBSD](#releasing-for-freebsd)
- - [Releasing for Windows](#releasing-for-windows)
- - [Releasing for MacOS](#releasing-for-macos)
- - [Utilities](#utilities)
- - [Checking Out Source](#checking-out-source)
- - [Cross-Platform Builds](#cross-platform-builds)
- - [Sanity Checking the Bundle](#sanity-checking-the-bundle)
- - [Auto-Generating Manifests](#auto-generating-manifests)
- - [Deploying Infrastructure](#deploying-infrastructure)
+ - [Release labels](#release-labels)
+- [Onboarding a New Plugin](#onboarding-a-new-plugin)
+- [Building and Testing an OpenSearch Distribution](#building-and-testing-an-opensearch-distribution)
+ - [Building from Source](#building-from-source)
+ - [Assembling a Distribution](#assembling-a-distribution)
+ - [Building Patches](#building-patches)
+ - [Min snapshots](#min-snapshots)
+ - [CI/CD Environment](#cicd-environment)
+ - [Build Numbers](#build-numbers)
+ - [Latest Distribution Url](#latest-distribution-url)
+ - [Testing the Distribution](#testing-the-distribution)
+ - [Checking Release Notes](#checking-release-notes)
+ - [Signing Artifacts](#signing-artifacts)
+ - [PGP](#pgp)
+ - [Windows](#windows)
+ - [Signing RPM artifacts](#signing-rpm-artifacts)
+- [Making a Release](#making-a-release)
+ - [Releasing for Linux](#releasing-for-linux)
+ - [Releasing for FreeBSD](#releasing-for-freebsd)
+ - [Releasing for Windows](#releasing-for-windows)
+ - [Releasing for MacOS](#releasing-for-macos)
+- [Utilities](#utilities)
+ - [Checking Out Source](#checking-out-source)
+ - [Cross-Platform Builds](#cross-platform-builds)
+ - [Sanity Checking the Bundle](#sanity-checking-the-bundle)
+ - [Auto-Generating Manifests](#auto-generating-manifests)
+- [Deploying Infrastructure](#deploying-infrastructure)
- [Contributing](#contributing)
- [Getting Help](#getting-help)
- [Code of Conduct](#code-of-conduct)
@@ -41,22 +41,22 @@
- [License](#license)
- [Copyright](#copyright)
-## Releasing OpenSearch
+### Releasing OpenSearch
-### Releases and Versions
+Please refer to the [release process document](./RELEASE_PROCESS_OPENSEARCH.md) for detailed information on how to release the OpenSearch and OpenSearch Dashboards software.
+
+
+#### Releases and Versions
The OpenSearch project releases as versioned distributions of OpenSearch, OpenSearch Dashboards, and the OpenSearch plugins. It [follows semantic versioning](https://opensearch.org/blog/technical-post/2021/08/what-is-semver/). Software, such as Data Prepper, clients, and the Logstash output plugin, are versioned independently of the OpenSearch Project. They also may have independent releases from the main project distributions. The OpenSearch Project may also release software under alpha, beta, release candidate, and generally available labels. The definition of when to use these labels is derived from [the Wikipedia page on Software release lifecycle](https://en.wikipedia.org/wiki/Software_release_life_cycle). Below is the definition of when to use each label.
-Release labels:
+#### Release labels:
* **Alpha** - The code is released with instructions to build. Built distributions of the software may not be available. Some features many not be complete. Additional testing and developement work is planned. Distributions will be postfixed with `-alphaX` where "X" is the number of the alpha version (e.g., "2.0-alpha1").
* **Beta** - Built distributions of the software are available. All features are completed. Additional testing and developement work is planned. Distributions will be postfixed with `-betaX` where "X" is the number of the beta version (e.g., "2.0.0-beta1").
* **Release Candidate** - Built distributions of the software are available. All features are completed. Code is tested and minimal validation remains. At this stage the software is potentially stable and will release unless signficant bugs emerge. Distributions will be postfixed with `-rcX` where "X" is the number of the release candidate version (e.g., "2.0.0-rc1").
* **Generally Available** - Built distributions of the software are available. All features are completed and documented. All testing is completed. Distributions for generally available versions are not postfixed with an additional label (e.g., "2.0.0").
-### Creating a New Version
-
-Each new OpenSearch release process starts when any one component increments a version, typically on the `main` branch. For example, [OpenSearch#1192](https://github.com/opensearch-project/OpenSearch/pull/1192) incremented the version to 2.0. The [version check automation workflow](.github/workflows/versions.yml) will notice this change or it can be triggered [manually](https://github.com/opensearch-project/opensearch-build/actions/workflows/versions.yml), and make a pull request (e.g. [opensearch-build#514](https://github.com/opensearch-project/opensearch-build/pull/514)) that adds a new manifest (e.g. [opensearch-2.0.0.yml](manifests/2.0.0/opensearch-2.0.0.yml). After that's merged, a GitHub issue is automatically opened by [this workflow](.github/workflows/releases.yml) to make a new release using [this release template](.github/ISSUE_TEMPLATE/release_template.md) (e.g. [opensearch-build#566](https://github.com/opensearch-project/opensearch-build/issues/566)). Existing and new components [(re)onboard into every release](ONBOARDING.md) by submitting pull requests to each version's manifest.
### Onboarding a New Plugin
@@ -210,9 +210,10 @@ RPM artifacts are signed via a legacy shell script which uses a [macros template
See [src/sign_workflow](./src/sign_workflow) for more information.
+
### Making a Release
-#### Releasing for Linux / Windows
+#### Releasing for Linux and Windows
The Linux / Windows release is managed by a team at Amazon following [this release template](.github/ISSUE_TEMPLATE/release_template.md) (e.g. [opensearch-build#2649](https://github.com/opensearch-project/opensearch-build/issues/2649)).
@@ -277,6 +278,7 @@ Check for updates and create any new manifests.
See [src/manifests_workflow](./src/manifests_workflow) for more information.
+
### Deploying Infrastructure
Storage and access roles for the OpenSearch release process are codified in a [CDK project](./deployment/README.md).
diff --git a/RELEASE_PROCESS_OPENSEARCH.md b/RELEASE_PROCESS_OPENSEARCH.md
new file mode 100644
index 0000000000..b5e91e13ad
--- /dev/null
+++ b/RELEASE_PROCESS_OPENSEARCH.md
@@ -0,0 +1,543 @@
+- [OpenSearch Releas Process](#opensearch-release-process)
+ - **[Preparation](#preparation)**
+ - [Release Terminology and Knowledge Center](#release-terminology-and-knowledge-center)
+ - [Definitions](#definitions)
+ - [Types of Manifests](#types-of-manifests)
+ - [Input Manifest](#input-manifest)
+ - [Test Manifest](#test-manifest)
+ - [Build Manifest](#build-manifest)
+ - [Bundle Manifest](#bundle-manifest)
+ - [AUTOCUT issues](#autocut-issues)
+ - [Build Workflows](#build-workflows)
+ - [Release Workflows](#release-workflows)
+ - [Creating a New Version](#creating-a-new-version)
+ - [Release Manager](#release-manager)
+ - [Release label](#release-label)
+ - [Release Issue](#release-issue)
+ - [Release Issue Update](#release-issue-update)
+ - [Increase the Build Frequency](#increase-the-build-frequency)
+ - [Update the Maven Publish Workflow](#update-the-maven-publish-workflow)
+ - **[Campaigns](#campaigns)**
+ - [Component Release Issues](#component-release-issues)
+ - [Issue Creation Process Overview](#issue-creation-process-overview)
+ - [Release Campaigns](#release-campaigns)
+ - **[Release Branch Readiness](#release-branch-readiness)**
+ - [Release Branch](#release-branch)
+ - [Core](#core)
+ - [Components](#components)
+ - [Version Increment](#version-increment)
+ - [Core Version Increment](#core-version-increment)
+ - [Components Version Increment](#components-version-increment)
+ - **[Code Complete and Feature Freeze](#code-complete-and-feature-freeze)**
+ - **[Release Candidate Creation and Testing](#release-candidate-creation-and-testing)**
+ - [Distribution Build](#distribution-build)
+ - [Workflow Trigger](#workflow-trigger)
+ - [Order of Execution](#order-of-execution)
+ - [OpenSearch](#opensearch)
+ - [OpenSearch Dashboards](#opensearch-dashboards)
+ - [Release Candidate](#release-candidate)
+ - [Sample Build details](#sample-build-details)
+ - [Integ Test TAR](#integ-test-tar)
+ - [Integ Test RPM](#integ-test-rpm)
+ - [Docker Build and Scan](#docker-build-and-scan)
+ - [Docker RC Freeze](#docker-rc-freeze)
+ - [Benchmark Tests](#benchmark-tests)
+ - [Backwards Compatibility Tests](#backwards-compatibility-tests)
+ - [Windows Integration Test](#windows-integration-test)
+ - [Broadcast and Communication](#broadcast-and-communication)
+ - [Release Candidate Lock](#release-candidate-lock)
+ - **[Release](#release)**
+ - [Pre-Release](#pre-release)
+ - [Release Labeled Issues](#release-labeled-issues)
+ - [Go or No-Go](#go-or-no-go)
+ - [Promote Repos](#promote-repos)
+ - [Promote Artifacts](#promote-artifacts)
+ - [Release Notes](#release-notes)
+ - [Main Release](#main-release)
+ - [Maven Promotion](#maven-promotion)
+ - [Docker Promotion](#docker-promotion)
+ - [Collaboration with the Project Management Team](#collaboration-with-the-project-management-team)
+ - [Website and Documentation Changes](#website-and-documentation-changes)
+ - [Publish blog posts](#publish-blog-posts)
+ - [Advertise on Social Media](#advertise-on-social-media)
+ - [Release Validation](#release-validation)
+ - [Release Checklist](#release-checklist)
+ - **[Post Release](#post-release)**
+ - [Release Tags](#release-tags)
+ - [Input Manifest Update](#input-manifest-update)
+ - [OpenSearch Build Release notes](#opensearch-build-release-notes)
+ - [Decrease the build frequency](#decrease-the-build-frequency)
+ - [Retrospective Issue](#retrospective-issue)
+ - [Helm and Ansible Playbook release](#helm-and-ansible-playbook-release)
+ - [Upcoming Release Preparation](#upcoming-release-preparation)
+ - **[Communication Templates](#communication-templates)**
+ - [Release Announcement](#release-announcement)
+ - [Release Readiness](#release-readiness)
+ - [Release Candidate Announcement](#release-candidate-announcement)
+ - [Release Complete](#release-complete)
+
+# OpenSearch Release Process
+
+## Preparation
+### Release Terminology and Knowledge Center
+
+#### Definitions
+
+**OpenSearch Project**: OpenSearch is a community-driven, Apache 2.0-licensed open source search and analytics suite that makes it easy to ingest, search, visualize, and analyze data.
+
+**OpenSearch/OpenSearch Dashboards Bundle**: An OpenSearch/OpenSearch Dashboards bundle refers to a compressed file that encompasses both the OpenSearch/OpenSearch Dashboards distribution and accompanying plugins. This compressed file acts as a container for the OpenSearch/OpenSearch Dashboards software and its associated extensions, enabling users to conveniently package and deploy the entire system.
+
+**OpenSearch/OpenSearch Dashboards Components/Plugins**: OpenSearch/OpenSearch Dashboards components/plugins are extensions that can be added to OpenSearch/OpenSearch Dashboards, to add new features or functionality. There are a wide variety of plugins available refer [OpenSearch available plugins](https://opensearch.org/docs/latest/install-and-configure/plugins/#available-plugins) and [OpenSearch Dashboards available plugins](https://opensearch.org/docs/latest/install-and-configure/install-dashboards/plugins/#available-plugins) sections.
+
+#### Types of Manifests
+
+##### Input Manifest
+
+These manifests serve as the initial input for driving the build workflow. These manifests are located in [build repository](https://github.com/opensearch-project/opensearch-build/tree/main/manifests) and are generated by the [manifest workflow](https://github.com/opensearch-project/opensearch-build/tree/main/src/manifests_workflow). Once the manifest is created, the maintainers of the build repository review and merge it into the `main` branch. The entire build repository operates exclusively on the `main` branch.
+
+##### Test Manifest
+
+These manifests are integral to the comprehensive testing of the core and components/plugins, as they contain numerous settings and configurations that facilitate various tests within the [test_workflow](https://github.com/opensearch-project/opensearch-build/tree/main/src/test_workflow).
+
+###### Sample Test Manifests
+
+| OpenSearch | OpenSearch Dashboards |
+| --- | --- |
+| [opensearch-2.8.0-test.yml](https://github.com/opensearch-project/opensearch-build/blob/main/manifests/2.8.0/opensearch-2.8.0-test.yml) | [opensearch-dashboards-2.8.0-test.yml](https://github.com/opensearch-project/opensearch-build/blob/main/manifests/2.8.0/opensearch-dashboards-2.8.0-test.yml)
+
+##### Build Manifest
+
+Output of the [build workflow](https://github.com/opensearch-project/opensearch-build/tree/main/src/build_workflow), used as input to the [assemble workflow](https://github.com/opensearch-project/opensearch-build/tree/main/src/assemble_workflow).
+
+ ###### Sample Generated Build Manifests
+
+ | deb | rpm | tar | windows |
+ | --- | --- | --- | ------- |
+ | [os-arm64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/arm64/deb/builds/opensearch/manifest.yml), [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/x64/deb/builds/opensearch/manifest.yml) | [os-arm64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/arm64/rpm/builds/opensearch/manifest.yml), [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/x64/rpm/builds/opensearch/manifest.yml) | [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/x64/tar/builds/opensearch/manifest.yml), [os-arm64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/arm64/tar/builds/opensearch/manifest.yml) | [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/windows/x64/zip/builds/opensearch/manifest.yml) |
+
+
+##### Bundle Manifest
+
+The final output of the assemble workflow and manifest that is added to the final distribution, this has the commitID (can be used for reproducible builds) and the artifact file links. This final bundle manifest incorporates the assembled components and ensures traceability through the commit ID and accessibility to the artifact files.
+
+ ###### Sample Generated Bundle Manifests
+
+ | deb | rpm | tar | windows |
+ | --- | --- | --- | ------- |
+ | [os-arm64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/arm64/deb/dist/opensearch/manifest.yml), [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/x64/deb/dist/opensearch/manifest.yml) | [os-arm64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/arm64/rpm/dist/opensearch/manifest.yml), [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/x64/rpm/dist/opensearch/manifest.yml) | [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/x64/tar/dist/opensearch/manifest.yml), [os-arm64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/linux/arm64/tar/dist/opensearch/manifest.yml) | [os-x64](https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.10/7848/windows/x64/zip/dist/opensearch/manifest.yml) |
+
+
+#### AUTOCUT issues
+
+These are the issues created by automation with the distribution build and integ-test workflows failure, the automation detects the component failure and raises an issue in the respective component repo. Sample [integ-test failure AUTOCUT issue](https://github.com/opensearch-project/k-NN/issues/914) and [distribution build failure AUTOCUT issue](https://github.com/opensearch-project/k-NN/issues/732). The created `AUTOCUT` issues will have the updated information with latest build failure details, the automation also detects if the component build has passed and closes the issues automatically. For more details refer the [closeBuildSuccessGithubIssue.groovy](https://github.com/opensearch-project/opensearch-build-libraries/blob/main/vars/closeBuildSuccessGithubIssue.groovy) and [createGithubIssue.groovy](https://github.com/opensearch-project/opensearch-build-libraries/blob/main/vars/createGithubIssue.groovy) libraries part of the distribution build and integ-test worklows.
+
+
+#### Build Workflows
+
+| Wokflow | Description |
+| ----------------------------------------------------------------------------------------------------------------------------- | ------------------- |
+| [Check for Build](https://build.ci.opensearch.org/job/check-for-build/) | Workflow that peridically triggers the distribution workflows using parameterized cron. |
+| [OpenSearch Distribution Build](https://build.ci.opensearch.org/job/distribution-build-opensearch/) | Workflow that is responsible to build/assemble the OpenSearch and its components. |
+| [OpenSearch Dashboards Distribution Build](https://build.ci.opensearch.org/job/distribution-build-opensearch-dashboards/) | Workflow that is responsible to build/assemble the OpenSearch Dashboards and its components. |
+| [OpenSearch Integ Test](https://build.ci.opensearch.org/job/integ-test/) | Workflow that runs integ tests for OpenSearch and its components. |
+| [OpenSearch Dashboards Integ Test](https://build.ci.opensearch.org/job/integ-test-opensearch-dashboards/) | Workflow that runs integ tests for OpenSearch Dashboards and its components. |
+| [Benchmark Tests](https://build.ci.opensearch.org/job/benchmark-test/) | Workflow that runs Performance tests using [opensearch-benchmark](https://github.com/opensearch-project/opensearch-benchmark) on a cluster created with a given version. |
+| [BWC Tests](https://build.ci.opensearch.org/job/bwc-test/) | Workflow that runs backward compatibility tests on a cluster created with a given version. |
+| [RPM Validation](https://build.ci.opensearch.org/job/rpm-validation/) | Workflow that validates the RPM distribution |
+| [Docker Build](https://build.ci.opensearch.org/job/docker-build/) | Workflow that builds the OpenSearch and OpenSearch Dashboards docker images |
+| [Docker Copy](https://build.ci.opensearch.org/job/docker-copy/) | Workflow that copies the created docker images to multiple DockerHub and ECR repositories |
+| [Docker Scan](https://build.ci.opensearch.org/job/docker-scan/) | Workflow that checks vulnerabilities for a given docker image as an input. |
+| [1.x Maven Publish](https://build.ci.opensearch.org/job/snapshot-maven-publish-1.x/) | Workflow that published snapshot maven artifcats, used only for 1.3.x versions. Fore more details check https://github.com/opensearch-project/job-scheduler/issues/319. |
+
+
+#### Release Workflows
+
+| Wokflow | Description |
+| ---------------------------------------------------------------------------------------- | ------------------- |
+| [Release Notes Tracker](https://build.ci.opensearch.org/job/release-notes-tracker/) | Workflow that identifies if a component has a release notes added based on the commit history. |
+| [Promote Repos](https://build.ci.opensearch.org/job/distribution-promote-repos/) | Workflow that signs and promotes the APT/YUM repos to the production buckets accessed via the cloudfront. |
+| [Promote artifacts](https://build.ci.opensearch.org/job/distribution-promote-artifacts/) | Workflow that signs and promotes all the release artifcats to the production buckets accessed via the cloudfront. |
+| [Publish to Maven](https://build.ci.opensearch.org/job/publish-to-maven/) | Workflow that signs and publishes to the central maven repository. |
+| [Docker Promotion](https://build.ci.opensearch.org/job/docker-promotion/) | Workflow that promotoes the docker images to production docker repositories. |
+| [Validation Workflow](https://build.ci.opensearch.org/job/distribution-validation) | Workflow that validates the released distribution. |
+
+
+#### Creating a New Version
+
+Each new OpenSearch release process starts when any one component increments a version, typically on the `main` branch. For example, [OpenSearch#1192](https://github.com/opensearch-project/OpenSearch/pull/1192) incremented the version to 2.0. The [version check automation workflow](.github/workflows/versions.yml) will notice this change or it can be triggered [manually](https://github.com/opensearch-project/opensearch-build/actions/workflows/versions.yml), and make a pull request (e.g. [opensearch-build#514](https://github.com/opensearch-project/opensearch-build/pull/514)) that adds a new manifest (e.g. [opensearch-2.0.0.yml](manifests/2.0.0/opensearch-2.0.0.yml). After that's merged, a GitHub issue is automatically opened by [this workflow](.github/workflows/releases.yml) to make a new release using [this release template](.github/ISSUE_TEMPLATE/release_template.md) (e.g. [opensearch-build#566](https://github.com/opensearch-project/opensearch-build/issues/566)). Existing and new components [(re)onboard into every release](ONBOARDING.md) by submitting pull requests to each version's manifest.
+
+### Release Manager
+
+The release manager to a specific OpenSearch release will be assigned through volunteer model. The request for a release manager will be posted in [OpenSearch public Slack #releases channel](https://opensearch.slack.com/archives/C0561HRK961) and selected on first come first served (FCFS) model.
+Note: The release manager should be a maintainer of a repo under OpenSearch GitHub organization.
+
+### Release Label
+
+The release label creation is part of the version increment workflows running in the build repo [OpenSearch Version Increment Workflow](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/os-increment-plugin-versions.yml),
+[OpenSearch Dashboards Version Increment Workflow](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/osd-increment-plugin-versions.yml). These workflows not only raise a pull request for a version increment but also verify if the release label exists for a given version. If it doesn't, they proceed to create it.
+
+### Release Issue
+
+This issue captures the state of the OpenSearch release, its assignee is responsible for driving the release. Please contact them or @mention them on this issue for help. There are linked issues on components of the release where individual components can be tracked. More details are included in the Maintainers Release owner section.
+
+
+#### Release Issue Update
+
+The release issue is created by an [automation workflow](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/releases.yml). Once the release manager is finalized, the release manager should be updating the created release issue. Sample [Release Issue 2.8.0](https://github.com/opensearch-project/opensearch-build/issues/3434). Update the release issue issue so all `__REPLACE_RELEASE-__` placeholders have actual dates.
+
+### Increase the Build Frequency
+
+Increase the build frequency for the this release from once a day (H 1 * * *) to once every hour (H/60 * * * *) in [check-for-build.jenkinsfile](https://github.com/opensearch-project/opensearch-build/blob/main/jenkins/check-for-build.jenkinsfile). This will ensure the [Distribution Build](#distribution-build) workflow is called every hour to build and detect the components failure early that are part of the [Input Manifest](#input-manifest).
+
+### Update the Maven Publish Workflow
+
+This step is necessary solely for the `1.3.x` release process; you can find more information in the [issue](https://github.com/opensearch-project/job-scheduler/issues/319). Please make sure to update and execute the `1.x Maven Publish workflow`; you can find the workflow specifics in the [Build Workflows](#build-workflows) section. Additionally, you can refer to a relevant [sample PR](https://github.com/opensearch-project/opensearch-build/pull/3838).
+
+## Campaigns
+
+This section is not required for a patch release.
+
+### Component Release Issues
+
+The component release issues are auto created by the workflows part of the build repo [OpenSearch components](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/os-release-issues.yml), [OpenSearch Dashboards components](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/osd-release-issues.yml). These workflows creates the release issues based on the template [component_release_template.md](https://github.com/opensearch-project/opensearch-build/blob/main/.github/ISSUE_TEMPLATE/component_release_template.md) and links back the global release issue part of the build. Sample component release issues created for [2.10.0](https://github.com/issues?q=is%3Aopen+is%3Aissue+user%3Aopensearch-project+%5BRELEASE%5D+Release+version+2.10.0+in%3Atitle+)
+
+#### Issue Creation Process Overview
+
+Inside the template [component_release_template.md](https://github.com/opensearch-project/opensearch-build/blob/main/.github/ISSUE_TEMPLATE/component_release_template.md), replace the fields `RELEASE_VERSION`, `RELEASE_BRANCH_X`, `RELEASE_BRANCH` and `RELEASE_ISSUE` to desired release values before creating the release issues across the component/plugin repos. Once the fields are replaced use the `meta` and `gh` cli to create the issues. Find the list of components/plugins from the [opensearch-plugins](https://github.com/opensearch-project/opensearch-plugins) repo (for [OpenSearch](https://github.com/opensearch-project/opensearch-plugins/tree/main/plugins), for [OpenSearch Dashboards](https://github.com/opensearch-project/opensearch-plugins/tree/main/dashboards-plugins)) and use the `meta` cli to create the release issues. For more details check the [create-an-issue-in-all-plugin-repos](https://github.com/opensearch-project/opensearch-plugins/blob/main/META.md#create-an-issue-in-all-plugin-repos) section.
+
+```
+meta exec "gh issue create --label v2.8.0 --title 'Release version 2.8.0' --body-file /tmp/opensearch-build/.github/ISSUE_TEMPLATE/component_release_template.md"
+```
+
+### Release Campaigns
+
+If exists any release specific issues/campaigns link it back to the release issue. Sample linked [issues/campaigns](https://github.com/opensearch-project/opensearch-build/issues/3434#issuecomment-1552138916)
+
+## Release Branch Readiness
+
+The `Release Branch Readiness date` is determined as the release date minus 14 days.
+
+### Release Branch
+
+Not applicable for patch release.
+
+#### Core
+
+This step requires both OpenSearch and OpenSearch Dashboards to create a release branch that will be used for the release.
+
+#### Components
+
+This step requires that every team participating in a release has their release branch created for the corresponding release by the date listed on this step. The [Distribution Build](#distribution-build) workflow will also start using the release branch to create release candidate instead of `.x` branches.
+
+
+### Version Increment
+
+Versions are incremented as soon as development starts on a given version to avoid confusion. Following is the example that depicts the version increment.
+
+* OpenSearch: `main` = 3.0.0, `2.x` = 2.9.0, and `2.8` = 2.8.1
+* common-utils: `main` = 3.0.0.0, `2.x` = 2.9.0.0 and `2.8` = 2.8.1.0
+
+#### Core Version Increment
+
+To ensure the version incrementation process is handled correctly, it is important to follow to increment the version of the release branch. Currently, the version incrementation is being done manually by an individual from the core repositories. Sample OpenSearch Version Increment [PR](https://github.com/opensearch-project/OpenSearch/pull/7864/) for the release branch.
+
+
+#### Components Version Increment
+
+The next step is to identify the pending component version increment pull requests. The creation of component version increment pull requests is automated with workflows running in the build repo [OpenSearch Version Increment Workflow](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/os-increment-plugin-versions.yml),
+[OpenSearch Dashboards Version Increment Workflow](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/osd-increment-plugin-versions.yml). Sample component version increment [PR](https://github.com/opensearch-project/job-scheduler/pull/398).
+
+The objective is to merge these pull requests in order to synchronize all the components with the core version. It is not as simple as submitting a pull request and having it merged. When a pull request is submitted, CI checks are triggered for each repository. These CI checks assess the dependencies. Thus, prior to merging the pull requests that involve version increments, the release manager must confirm that the dependencies have been updated, built, and pushed to Maven and S3. This crucial stage requires the release manager to coordinate with the component teams, address any dependency issues, and ultimately merge the pull requests that involve version increments.
+
+## Code Complete and Feature Freeze
+
+Coordinate with the Core and component teams to ensure that the code for this particular release version is fully prepared and that the corresponding branch has been included in the release version [Input Manifest](#input-manifest). Update Jenkins workflows that execute daily snapshot builds for both OpenSearch and OpenSearch Dashboards (Ref [Increase the build frequency](#increase-the-build-frequency)). Submit pull requests to incorporate each component into the respective version level [Input Manifest](#input-manifest) along with the necessary checks. Sample [PR](https://github.com/opensearch-project/opensearch-build/pull/3501/files). The `Feature Freeze date` and the `Code Complete date` is determined as the release date minus 4 days.
+
+## Release Candidate Creation and Testing
+
+### Distribution Build
+
+Refer the [Build Workflows](#build-workflows) section to get the details about the distribution build job for OpenSearch and OpenSearch Dashboards. This section covers how to sequentially handle the distribution build job during the release.
+
+#### Workflow Trigger
+
+Ensure the proper inputs are used to initiate the distribution. For instance, here's an example for OpenSearch. It's important that the OpenSearch Dashboard distribution aligns accordingly.
+
+![Alt Text](./assests/distribution_build_os.png)
+
+**COMPONENT_NAME**: To trigger a specific component, this includes standalone OpenSearch or specific plugin.
+
+**INPUT_MANIFEST**: The release input manifest that drives the workflow.
+
+**TEST_MANIFEST**: The release test input manifest that is used for the integ tests.
+
+**INTEG_TEST_JOB_NAME**: The integ test job name. Default already added to this input `integ-test` for OpenSearch and `integ-test-opensearch-dashboards` for OpenSearch Dashboards.
+
+**BUILD_PLATFORM**: The input used to build for a specific platform, followed by its own distributions within the `platform`.
+
+**BUILD_DISTRIBUTION**: Input to build selected distribution related artifacts, choices include 'tar', 'rpm', 'deb', 'zip'. Can combine multiple distributions with space in between (docker is only available on tar).
+
+**BUILD_DOCKER**: Input with a dropdown that has 3 options `build_docker`, `build_docker_with_build_number_tag`, `do_not_build_docker`, the release manager has to take a call with right inputs.
+
+**UPDATE_LATEST_URL**: To update the `/latest` CFN URL, Visit [latest-distribution-url](https://github.com/opensearch-project/opensearch-build#latest-distribution-url) for more details.
+
+##### Order of Execution
+
+Following is the order of execution of the distribution build to address the components dependencies.
+
+Note: The execution order specified is necessary only for versions up to `1.3.x`. For `2.x` and above Maven dependencies are published through each component repository using the GH workflow. For more details check the [META issue](https://github.com/opensearch-project/opensearch-build/issues/3185).
+
+###### OpenSearch
+```
+OpenSearch
+OpenSearch + common-utils + job-scheduler
+OpenSearch + common-utils + job-scheduler + performance-analyzer
+OpenSearch + common-utils + job-scheduler + performance-analyzer + security
+OpenSearch + common-utils + job-scheduler + ml-commons + performance-analyzer + security
+All components (which are ready after completion of version increment)
+```
+
+###### OpenSearch Dashboards
+```
+OpenSearch Dashboards
+All components (which are ready after completion of version increment)
+```
+
+### Release Candidate
+
+Now once all the version increment PR’s are completed and all the components are part of the input manifest, now its time to generate the RC. Use the [Distribution Build](#distribution-build) to generate the release candidate. Use the following section as the reference to generate the RC, validate it and broadcast it for a given release. The process of `Release Candidate Generation and Testing` should commence at least 6 days prior to the release date.
+
+#### Sample Build details
+
+Following is the generated build number after triggering the [Distribution Build](#distribution-build) workflow. The distribution build number denotes the RC, now with the example below the finalized RC’s are `OS: 7848`, `OSD: 6126`.
+
+| OpenSearch | OpenSearch Dashboards |
+|----------|----------|
+| [build_7848](https://build.ci.opensearch.org/job/distribution-build-opensearch/7848/console) | [build_6126](https://build.ci.opensearch.org/job/distribution-build-opensearch-dashboards/6126/) |
+
+
+#### Integ Test TAR
+
+Following are the TAR integ test jobs for a given RC based on the above section [Sample Build details](#sample-build-details). The integ tests are executed for artifacts generated as part of the builds `OS: 7848`, `OSD: 6126`.
+
+| Integ Test Tar | x64 | arm64 |
+|----------|----------|----------|
+| OpenSearch | [x64](https://build.ci.opensearch.org/job/integ-test/4906/console) | [arm64](https://build.ci.opensearch.org/job/integ-test/4897/console) |
+| OpenSearch Dashboards | [x64](https://build.ci.opensearch.org/job/integ-test-opensearch-dashboards/3531/console) | [arm64](https://build.ci.opensearch.org/job/integ-test-opensearch-dashboards/3530/console) |
+
+#### Integ Test RPM
+
+Following are the RPM integ test jobs for a given RC based on the above section [Sample Build details](#sample-build-details). The integ tests for rpm are executed for artifacts generated as part of the builds `OS: 7848`, `OSD: 6126`.
+
+| Integ Test RPM | x64 | arm64 |
+|----------|----------|----------|
+| OpenSearch | [x64](https://build.ci.opensearch.org/job/integ-test/4908/console) | [arm64](https://build.ci.opensearch.org/job/integ-test/4907/console) |
+| OpenSearch Dashboards | [x64](https://build.ci.opensearch.org/job/integ-test-opensearch-dashboards/3532/console) | [arm64](https://build.ci.opensearch.org/job/integ-test-opensearch-dashboards/3533/console) |
+
+#### Docker Build and Scan
+
+Following are the details for the docker image build and scan. The docker images are built using the TAR artifact generated as part of the [Distribution Build](#distribution-build) (From the above example `OS: 7848`, `OSD: 6126`). The [Distribution Build](#distribution-build) workflow with input `BUILD_DOCKER` (Ref [Workflow Trigger](#workflow-trigger)) triggers the [docker-build] workflow as dowmstream.
+
+| Docker | build | scan |
+|----------|----------|----------|
+| OpenSearch | [Build](https://build.ci.opensearch.org/job/docker-build/3371/) | [Scan](https://build.ci.opensearch.org/job/docker-scan/1558/artifact/scan_docker_image.txt) |
+| OpenSearch Dashboards | [Build](https://build.ci.opensearch.org/job/docker-build/3370/) | [Scan](https://build.ci.opensearch.org/job/docker-scan/1557/artifact/scan_docker_image.txt) |
+
+
+##### Docker RC Freeze
+
+This to ensure that [check-for-build.jenkinsfile](https://github.com/opensearch-project/opensearch-build/blob/main/jenkins/check-for-build.jenkinsfile) wont re-build periodically and override the docker, the RC docker is created with build number. This step can be skipped if the input `BUILD_DOCKER: build_docker_with_build_number_tag` (Ref [Workflow Trigger](#workflow-trigger) used in the [Distribution Build](#distribution-build).
+
+| Docker Freeze | copy |
+|----------|----------|
+| OpenSearch | [docker-copy](https://build.ci.opensearch.org/job/docker-copy/466/console) |
+| OpenSearch Dashboards | [docker-copy](https://build.ci.opensearch.org/job/docker-copy/467/console) |
+
+#### Benchmark Tests
+
+For running the benchmark tests, use the `benchmark-test` job part of the [Build Workflows](#build-workflows). For more details in running the benchmark tests refer [Benchmarking Tests](https://github.com/opensearch-project/opensearch-build/tree/main/src/test_workflow#benchmarking-tests) section part of the [test workflow](https://github.com/opensearch-project/opensearch-build/tree/main/src/test_workflow). This job offers multiple options to test the performance of a specific version cluster using various metrics. The benchmark performance results can be accessed via the [OpenSearch Performance Benchmarks dashboard](https://opensearch.org/benchmarks). Sample benchmark tests for [2.9.0 release](https://github.com/opensearch-project/opensearch-build/issues/3616#issuecomment-1642764515).
+
+
+#### Backwards Compatibility Tests
+
+For more details in running the BWC tests refer [Backwards Compatibility Tests](https://github.com/opensearch-project/opensearch-plugins/blob/main/TESTING.md#bwc-tests-on-distribution-bundle-level) section.
+On board the components/plugins to the test [Test Manifest](#test-manifest) with the `bwc-test` setting. Example as follows.
+```
+ - name: index-management
+ bwc-test:
+ test-configs:
+ - with-security
+```
+
+#### Windows Integration Test
+
+Currently, the windows integration tests for a release is manual. The manually tested windows zip is being evaluated and approved by the plugin teams for sign off. In order to test the windows distribution, two instances need to be created: one with security features enabled and another without security. Afterward, API calls should be tested by launching the OpenSearch and Dashboard processes through direct execution of the `.bat` file.
+
+#### Broadcast and Communication
+
+Broadcast the release candidate in OpenSearch public slack workspace and the release GitHub issue using format [sample broadcast mesaage](https://github.com/opensearch-project/opensearch-build/issues/3434#issuecomment-1571201919) to gather votes.
+
+As a release manager it is essential to ensure the successful completion of all the above mentioned jobs. In the event of failures during integration tests or scans, the release manager should collaborate with the component teams and initiate a re-run to ensure that all jobs are executed successfully.
+
+Post all the job related failures in the `Release issue`, Sample [post](https://github.com/opensearch-project/opensearch-build/issues/3331#issuecomment-1550461519).
+
+Note: Sometimes the integ-test jobs are flaky and might not pass due to several reasons with the component code, in that case coordinate with the respective component team and get a manual sign off. Sample [manual sign off](https://github.com/opensearch-project/opensearch-build/issues/3331#issuecomment-1552191673).
+All the failed logs are in s3 accessed through the cloudfront. Sample [link](https://github.com/opensearch-project/opensearch-build/issues/3331#issuecomment-1552148546).
+
+
+#### Release Candidate Lock
+
+Stop builds for this version of OpenSearch and/or OpenSearch Dashboards in order to avoid accidental commits going in unknowingly. Restart only if necessary else manually run the build workflow and declare new release candidate.
+
+Once the RC is finalized, in order to exclude the release from running periodically, at this point it is necessary for the release manager to lock the input manifest and update the `check-for-build.jenkins` to remove it from the scheduled execution, sample [PR](https://github.com/opensearch-project/opensearch-build/pull/3523/files).
+
+
+## Release
+
+### Pre-Release
+
+Ensure that all pre-release activities listed below are completed before proceeding with the final release. These activities hold great significance as they determine whether the release should progress further and, if approved, they contribute to saving a substantial amount of time during the release window.
+
+#### Release Labeled Issues
+
+Verify all issues labeled with with this release have been resolved. Coordinate with the core/components team to close the gaps in resolving the issues labeled with with this release.
+
+#### Go or No-Go
+
+Get the Go / No-Go votes from project management committee (PMC) before staging the release artifacts for production publishing process,
+
+#### Promote Repos
+
+| Repo | OpenSearch (Sample Runs) | OpenSearch Dashboards (Sample Runs) |
+| ---- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
+| YUM | [yum-os](https://build.ci.opensearch.org/job/distribution-promote-repos/46/) | [yum-osd](https://build.ci.opensearch.org/job/distribution-promote-repos/48/) |
+| APT | [apt-os](https://build.ci.opensearch.org/job/distribution-promote-repos/) | [apt-osd](https://build.ci.opensearch.org/job/distribution-promote-repos/49/) |
+
+
+#### Promote Artifacts
+
+| Artifacts | OpenSearch (Sample Runs) | OpenSearch Dashboards (Sample Runs) |
+| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Windows | [os-windows-zip-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/233/) | [osd-windows-zip-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/234/) |
+| Debian | [os-deb-arm64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/235/), [os-deb-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/236/) | [osd-deb-arm64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/237/), [osd-deb-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/238/) |
+| TAR | [os-tar-arm64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/243/), [os-tar-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/246/) | [osd-tar-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/244/), [osd-tar-arm64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/245/) |
+| RPM | [os-rpm-arm64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/239/), [os-rpm-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/240/) | [osd-rpm-arm64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/241/), [osd-rpm-x64](https://build.ci.opensearch.org/job/distribution-promote-artifacts/242/) |
+
+
+#### Release Notes
+
+Coordinate with the plugin teams and create a consolidates release notes. Sample [PR](https://github.com/opensearch-project/opensearch-build/pull/3532). Release manager can check if a plugin team has created a release notes or not using the [release notes tracker tool](https://github.com/opensearch-project/opensearch-build/tree/main/src/release_notes_workflow). Sample [run](https://build.ci.opensearch.org/job/release-notes-tracker/).
+
+
+### Main Release
+
+Release the artifacts to production distribution channels, update the website and inform the community of the release.
+
+#### Maven Promotion
+Promote OpenSearch to maven, trigger the `publish-to-maven worfklow` (Ref [Release Workflows](#release-workflows)), sample [run](https://build.ci.opensearch.org/job/publish-to-maven/17/console).
+
+#### Docker Promotion
+Publish the images to docker and ECR, trigger the `docker promotion workflow` (Ref [Release Workflows](#release-workflows)), sample [run](https://build.ci.opensearch.org/job/docker-promotion/32/console).
+
+#### Collaboration with the Project Management Team
+
+While not directly under the responsibility of a Release Manager, the following sections require coordination with the Project Management Team to ensure that the tasks are successfully fulfilled.
+
+##### Website and Documentation Changes
+
+Coordinate with the documentation website team to ensure the changes are in place and close the gaps in promoting the website changes to prod. At this point the maintainers of the repos [documentation-website](https://github.com/opensearch-project/documentation-website) and [project-website](https://github.com/opensearch-project/project-website) will handle this task.
+
+##### Publish blog posts
+
+[Sample Blog Post](https://opensearch.org/blog/opensearch-2.8.0-released/)
+
+##### Advertise on Social Media
+
+Coordinate with the project management team to ensure the social media advertisement is completed
+
+#### Release Validation
+
+Use the validation workflow (Ref [Release Workflows](#release-workflows)) to validate the published artifcats, sample [validation workflow run](https://build.ci.opensearch.org/job/distribution-validation/3/console).
+
+### Release Checklist
+
+Please update the checklist either in the release issue body or as a new comment to the release issue. By following and updating the release checklist, we can ensure the success of the release. Sample release checklist for [2.9.0 release](https://github.com/opensearch-project/opensearch-build/issues/3616#issuecomment-1646312725).
+
+## Post Release
+
+Once the release is completed following are the activities that needs to be completed by the release manager:
+
+### Release Tags
+
+Create release tags for each OpenSearch and Dashboard components. Sample [OpenSearch](https://build.ci.opensearch.org/job/distribution-release-tag-creation/78/), [OpenSearch Dashboards](https://build.ci.opensearch.org/job/distribution-release-tag-creation/77/) workflow runs.
+
+### Input Manifest Update
+
+Replace `refs` in input manifest with tags. The `refs` can be identified from the bundle or build manifest, sample [PR](https://github.com/opensearch-project/opensearch-build/pull/3534) that updates the input manifest.
+
+### OpenSearch Build Release notes
+
+Generate distribution release notes for opensearch-build repository, sample [1.3.10](https://github.com/opensearch-project/opensearch-build/releases/tag/1.3.10) release details.
+
+### Decrease the build frequency
+
+Lower the frequency of builds for the release version of OpenSearch and/or OpenSearch Dashboards, sample [PR](https://github.com/opensearch-project/opensearch-build/pull/3523).
+
+### Retrospective Issue
+
+Create an issue for a retrospective, solicit feedback, and publish a summary. Sample [retro issue](https://github.com/opensearch-project/opensearch-build/issues/3535).
+
+### Helm and Ansible Playbook release
+
+Update and release the [Helm chart](https://github.com/opensearch-project/helm-charts) and [ansible playbook](https://github.com/opensearch-project/ansible-playbook) with the new OpenSearch and Dashboard version. Sample helm chart [PR](https://github.com/opensearch-project/helm-charts/pull/431/files) and ansible [PR](https://github.com/opensearch-project/ansible-playbook/pull/131).
+
+### Upcoming Release Preparation
+
+The release manager for the current release should ensure that a release manager is assigned for the upcoming release. This can be achieved by coordinating in a Slack channel and [@opensearch-project/engineering-effectiveness](https://github.com/orgs/opensearch-project/teams/engineering-effectiveness) team should assist in assigning the user to the upcoming [Release issue](#release-issue).
+
+## Communication Templates
+
+Please utilize the provided communication templates to effectively coordinate with the teams involved in the release process. These templates are designed to assist you in communicating through the GitHub release issue and the public Slack channel called `#release`.
+
+### Release Announcement
+
+```
+We are starting the process of release.
+Release Issue:
+Release Manager:
+
+Kindly review the following information provided below regarding the release dates:
+
+Release Branch and Version Increment:
+Feature freeze:
+Code Complete:
+RC creation and :
+Pre Release:
+Release date:
+Post Release:
+```
+
+### Release Readiness
+
+```
+The version increment pull requests are still awaiting attention. We kindly request the plugin/component owners to review them and make an effort to merge them promptly.
+
+OpenSearch: https://github.com/pulls?q=is%3Aopen+is%3Apr+org%3Aopensearch-project+increment++in%3Atitle+
+
+OpenSearch Dashboards: https://github.com/pulls?q=is%3Aopen+is%3Apr+org%3Aopensearch-project+increment+.0+in%3Atitle+
+```
+
+
+### Release Candidate Announcement
+
+Refer the [sample rc announcement](https://github.com/opensearch-project/opensearch-build/issues/3331#issuecomment-1549876307) from past `1.3.10` release.
+
+### Release Complete
+
+```
+OpenSearch 2.8.0 version has been released to public :tada:!
+
+Thanks everyone for the help to bring release out.
+Component repo owners please create a github release based on the tags of .
+Presenting the retrospective for the release. Please feel free to provide your valuable feedback for further improvements in the upcoming release.
+```
diff --git a/assests/distribution_build_os.png b/assests/distribution_build_os.png
new file mode 100644
index 0000000000000000000000000000000000000000..23fcb9f7937ba465253908ab61cc5c047abdabb1
GIT binary patch
literal 122341
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