Skip to content

Commit ef7b72b

Browse files
authored
Refactor release documentation and move release workflows together (#5242)
Signed-off-by: Sayali Gaikawad <gaiksaya@amazon.com>
1 parent 3c7e368 commit ef7b72b

5 files changed

+39
-30
lines changed

docs/Releasing-the-Distribution.md

+33-24
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# OpenSearch Release Process
22

3-
This document explains the OpenSearch Process in detail.
3+
This document explains the OpenSearch Release Process in detail.
44

55
## Preparation
66
### Release Terminology and Knowledge Center
@@ -40,7 +40,7 @@ Output of the [build workflow](https://github.com/opensearch-project/opensearch-
4040
| [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) |
4141

4242

43-
##### Bundle Manifest
43+
##### Bundle/Dist Manifest
4444

4545
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.
4646

@@ -53,51 +53,60 @@ The final output of the assemble workflow and manifest that is added to the fina
5353

5454
#### AUTOCUT issues
5555

56-
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 [updateBuildFailureIssues.groovy](https://github.com/opensearch-project/opensearch-build-libraries/blob/main/vars/updateBuildFailureIssues.groovy).
56+
These are the issues created by automation with the distribution build and integration-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 [updateBuildFailureIssues.groovy](https://github.com/opensearch-project/opensearch-build-libraries/blob/main/vars/updateBuildFailureIssues.groovy).
5757

5858

5959
#### Build Workflows
6060

61-
| Workflow | Description |
61+
| Workflow | Description |
6262
| ----------------------------------------------------------------------------------------------------------------------------- | ------------------- |
6363
| [Check for Build](https://build.ci.opensearch.org/job/check-for-build/) | Workflow that periodically triggers the distribution workflows using parameterized cron. |
64-
| [OpenSearch Distribution Build](https://build.ci.opensearch.org/job/distribution-build-opensearch/) | Workflow that is responsible to build/assemble the OpenSearch and its components. |
65-
| [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. |
66-
| [OpenSearch Integ Test](https://build.ci.opensearch.org/job/integ-test/) | Workflow that runs integ tests for OpenSearch and its components. |
67-
| [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. |
68-
| [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. |
69-
| [BWC Tests](https://build.ci.opensearch.org/job/bwc-test/) | Workflow that runs backward compatibility tests on a cluster created with a given version. |
70-
| [Docker Build](https://build.ci.opensearch.org/job/docker-build/) | Workflow that builds the OpenSearch and OpenSearch Dashboards docker images |
71-
| [Docker Copy](https://build.ci.opensearch.org/job/docker-copy/) | Workflow that copies the created docker images to multiple DockerHub and ECR repositories |
72-
| [Docker Scan](https://build.ci.opensearch.org/job/docker-scan/) | Workflow that checks vulnerabilities for a given docker image as an input. |
73-
| [1.x Maven Publish](https://build.ci.opensearch.org/job/snapshot-maven-publish-1.x/) | Workflow that published snapshot maven artifacts, used only for 1.3.x versions. For more details check this [issue-319](https://github.com/opensearch-project/job-scheduler/issues/319). |
64+
| [OpenSearch Distribution Build](https://build.ci.opensearch.org/job/distribution-build-opensearch/) | Workflow that is responsible to build the OpenSearch and its components as well as assemble it into a distribution. |
65+
| [OpenSearch Dashboards Distribution Build](https://build.ci.opensearch.org/job/distribution-build-opensearch-dashboards/) | Workflow that is responsible to build the OpenSearch Dashboards and its components as well as assemble it into a distribution. |
66+
| [OpenSearch Integ Test](https://build.ci.opensearch.org/job/integ-test/) | Workflow that runs integration tests for OpenSearch components. |
67+
| [OpenSearch Dashboards Integ Test](https://build.ci.opensearch.org/job/integ-test-opensearch-dashboards/) | Workflow that runs integration tests for OpenSearch Dashboards and its components. |
68+
| [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. |
69+
| [BWC Tests](https://build.ci.opensearch.org/job/bwc-test/) | Workflow that runs backward compatibility tests for OpenSearch Components on a cluster created with a given version. |
70+
| [Docker Build](https://build.ci.opensearch.org/job/docker-build/) | Workflow that builds the OpenSearch and OpenSearch Dashboards docker images. |
71+
| [Docker Copy](https://build.ci.opensearch.org/job/docker-copy/) | Workflow that copies the created docker images to multiple DockerHub and ECR repositories. |
72+
| [Docker Scan](https://build.ci.opensearch.org/job/docker-scan/) | Workflow that checks vulnerabilities for a given docker image as an input. |
73+
| [1.x Maven Publish](https://build.ci.opensearch.org/job/snapshot-maven-publish-1.x/) | Workflow that publishes snapshots to [maven](https://aws.oss.sonatype.org/content/repositories/snapshots/org/opensearch/), used only for 1.3.x versions. For more details check this [issue-319](https://github.com/opensearch-project/job-scheduler/issues/319). |
7474

7575

7676
#### Release Workflows
7777

78-
| Workflow | Description |
78+
| Workflow | Description |
7979
| ---------------------------------------------------------------------------------------- | ------------------- |
80+
| [Central Promotion Workflow](https://build.ci.opensearch.org/job/central-release-promotion/) | A centralized release workflow than executes bunch of child workflows (see below) to publish various ditributions of OpenSearch and OpenSearch Dashboards for a given version. |
81+
| [Distribution 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. |
82+
| [Distribution Promote artifacts](https://build.ci.opensearch.org/job/distribution-promote-artifacts/) | Workflow that signs and promotes all the release artifacts to the production buckets accessed via the cloudfront. |
83+
| [Publish to Maven](https://build.ci.opensearch.org/job/publish-to-maven/) | Workflow that signs and publishes to the central maven repository.|
84+
| [Docker Promotion](https://build.ci.opensearch.org/job/docker-promotion/) | Workflow that promotes the docker images to production dockerHub and ECR repositories. |
85+
| [Validation Workflow](https://build.ci.opensearch.org/job/distribution-validation) | Workflow that validates the released distribution. |
86+
87+
##### Other Release-related workflows
88+
89+
| Workflow | Description |
90+
| ---------------------------------------------------------------------------------------- | ------------------- |
91+
| [Release Branch Creation](https://build.ci.opensearch.org/job/release-branch-creation) | Workflow for creating release branches if one does not exist in all the component repositories. |
92+
| [Release Manifest Commit Lock](https://build.ci.opensearch.org/job/release-manifest-commit-lock) | Workflow for locking the manifest references to a specific or most recent commit/tag. |
8093
| [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. |
81-
| [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. |
82-
| [Promote artifacts](https://build.ci.opensearch.org/job/distribution-promote-artifacts/) | Workflow that signs and promotes all the release artifacts to the production buckets accessed via the cloudfront. |
83-
| [Publish to Maven](https://build.ci.opensearch.org/job/publish-to-maven/) | Workflow that signs and publishes to the central maven repository. |
84-
| [Docker Promotion](https://build.ci.opensearch.org/job/docker-promotion/) | Workflow that promotes the docker images to production docker repositories. |
85-
| [Validation Workflow](https://build.ci.opensearch.org/job/distribution-validation) | Workflow that validates the released distribution. |
94+
| [Distribution Release Tag Creation](https://build.ci.opensearch.org/job/distribution-release-tag-creation/) | Workflow responsible for creating tags for a given version in all the components' repositories. Also creates a pull request to lock the manifest to newly created tags. |
8695

8796

8897
#### Creating a New Version
8998

90-
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](https://build.ci.opensearch.org/job/manifest-update/) will notice this change or it can be triggered manually, 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.9.0.yml](https://github.com/opensearch-project/opensearch-build/blob/main/legacy-manifests/2.9.0/opensearch-2.9.0.yml)). After that's merged, a GitHub issue is automatically opened by [this workflow](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/releases.yml) to make a new release using [this release template](https://github.com/opensearch-project/opensearch-build/blob/main/.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](https://github.com/opensearch-project/opensearch-build/blob/main/ONBOARDING.md) by submitting pull requests to each version's manifest.
99+
Each new OpenSearch release process starts when core component (OpenSearch or OpenSearch Dashboards) increments a version. For example, [OpenSearch#1192](https://github.com/opensearch-project/OpenSearch/pull/1192) incremented the version to 2.0. The [version check automation workflow](https://build.ci.opensearch.org/job/manifest-update/) will notice this change or it can be triggered manually, 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.9.0.yml](https://github.com/opensearch-project/opensearch-build/blob/main/legacy-manifests/2.9.0/opensearch-2.9.0.yml)). After that's merged, a GitHub issue is automatically opened by [release workflow](https://github.com/opensearch-project/opensearch-build/blob/main/.github/workflows/releases.yml) to make a new release using [the release template](https://github.com/opensearch-project/opensearch-build/blob/main/.github/ISSUE_TEMPLATE/release_template.md) (e.g. [opensearch-build#566](https://github.com/opensearch-project/opensearch-build/issues/566)).
91100

92101
### Release Manager
93102

94-
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.
103+
The release manager of 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.
95104
Note: The release manager should be a maintainer of a repo under OpenSearch GitHub organization.
96105

97106
### Release Label
98107

99108
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),
100-
[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.
109+
[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, it proceeds to create one.
101110

102111
### Release Issue
103112

@@ -110,7 +119,7 @@ The release issue is created by an [automation workflow](https://github.com/open
110119

111120
### Increase the Build Frequency
112121

113-
Increase the build frequency for the 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).
122+
Increase the build frequency for the 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).
114123

115124
### Update the Maven Publish Workflow
116125

0 commit comments

Comments
 (0)