Skip to content

Commit

Permalink
[PM] Enhance single version requirements imposed during bootstrapping
Browse files Browse the repository at this point in the history
Add `--single-version` switch to `bootstrap` to manipulate the behavior of single-version validation

Signed-off-by: Miki <miki@amazon.com>
  • Loading branch information
AMoo-Miki committed Jan 9, 2024
1 parent bf5e842 commit bfb31ce
Show file tree
Hide file tree
Showing 9 changed files with 961 additions and 452 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- [Decouple] Add new cross compatibility check core service which export functionality for plugins to verify if their OpenSearch plugin counterpart is installed on the cluster or has incompatible version to configure the plugin behavior([#4710](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/4710))
- [Discover] Display inner properties in the left navigation bar [#5429](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5429)
- [Chrome] Introduce registerCollapsibleNavHeader to allow plugins to customize the rendering of nav menu header ([#5244](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5244))
- [PM] Enhance single version requirements imposed during bootstrapping ([#5675](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5675))
- [Custom Branding] Relative URL should be allowed for logos ([#5572](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5572))

### 🐛 Bug Fixes
Expand Down
28 changes: 28 additions & 0 deletions packages/osd-pm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,34 @@ yarn osd
Bootstrapping also calls the `osd:bootstrap` script for every included project.
This is intended for packages that need to be built/transpiled to be usable.

#### Single-version validation

Bootstrapping, by default, applies a `strict` single-version validation where it requires all the dependencies defined
more than once to have the same version-range in the `package.json` files of Dashboards, packages, and plugins. If a
violation is identified, bootstrapping terminates with an error. This behavior can be controlled using the
`--single-version` switch. Using any switch other than the default can result in the installation of versions of the
dependencies that were never tested and this could lead to unexpected results.

```
yarn osd bootstrap --single-version=loose
```
In `loose` mode, bootstrapping reconciles the various versions installed as a result of having multiple ranges for a
dependency, by choosing one that satisfies all said ranges. Even though installing the chosen version updates the
`yarn.lock` files, no `package.json` changes would be needed.

```
yarn osd bootstrap --single-version=brute-force
```
In `brute-force` mode, bootstrapping chooses the newest of the various versions installed, irrespective of whether it
satisfies any of the ranges. Installing the chosen version, bootstrapping updates the `yarn.lock` files and applies a
range, in the form of `^<version>`, to all `package.json` files that declared the dependency.

```
yarn osd bootstrap --single-version=ignore
```
In `ignore` mode, bootstrapping behaves very similar to the `strict` mode by showing errors when different ranges of a
package are marked as dependencies, but without terminating.

### Running scripts

Some times you want to run the same script across multiple packages and plugins,
Expand Down
Loading

0 comments on commit bfb31ce

Please sign in to comment.