Skip to content

Commit a394c4a

Browse files
committed
refactor: Documentation
1 parent b7aac43 commit a394c4a

File tree

1 file changed

+11
-26
lines changed

1 file changed

+11
-26
lines changed

docs/Release-Workflow.md

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ The workflow consists of three main jobs:
2525

2626
### 1. `release-please` Job
2727
- **Trigger**: Push to `main` branch
28-
- **Purpose**: Creates/updates release PR with version bumps and changelogs
29-
- **Output**: Information about created releases and PRs
28+
- **Purpose**: Creates/updates version bumps and changelogs for all of the packages in a single PR.
3029

3130
### 2. `publish-packages` Job
32-
- **Trigger**: Merger of release PR into `main` branch
31+
- **Trigger**: Merge of release PR into `main` branch
3332
- **Action**: Developer merges the release PR in GitHub
3433
- **Result**:
35-
- Release Please creates releases & tags in GitHub for every package
36-
- Packages are published to npm sequentially (logger → fs → builder → server → project)
34+
- Release Please creates separate releases & tags in GitHub for every package
35+
- Packages are published to NPM sequentially (logger → fs → builder → server → project)
3736
- **Strategy**: Sequential execution (`max-parallel: 1`) to ensure dependencies exist before dependents
3837

3938
### 3. `publish-cli` Job
4039
- **Trigger**: All other packages have been published
41-
- **Purpose**: Generates `npm-shrinkwrap.json` and publishes the CLI package
42-
- **Dependency**: Requires all other packages to be available on npm registry
40+
- **Purpose**: Generates `npm-shrinkwrap.json` using `shrinkwrap-extractor` and publishes the CLI package
41+
- **Why separate**: The shrinkwrap must contain published registry versions of workspace packages, not workspace links. This requires all dependencies to be available on npm registry first.
42+
- **How it works**: The `shrinkwrap-extractor` reads the monorepo's `package-lock.json`, extracts production dependencies for `@ui5/cli`, converts workspace references to registry URLs, and generates a valid `npm-shrinkwrap.json` that will be included in the published CLI package.
4343

4444
## Release Please Configuration
4545

@@ -53,7 +53,8 @@ The configuration is defined in [`release-please-config.json`](../release-please
5353
"group-pull-request-title-pattern": "release: UI5 CLI packages ${branch}"
5454
```
5555

56-
**Why we can't use `${version}`**: When using the `linked-versions` plugin, Release Please doesn't support the `${version}` placeholder in the PR title pattern. This is because linked versions create a single PR for multiple packages with the same version, but the templating system doesn't expose this shared version to the title pattern. As a workaround, we use `${branch}` (which resolves to "main") instead.
56+
**Why we can't use `${version}`**: When using the `linked-versions` plugin, Release Please doesn't support the `${version}` placeholder in the PR title pattern when creating single PR with multiple packages. In such case release please does not have a single source of truth even though packages are released under the same version.
57+
Adding the root package, will resolve this, but it will pollute the release notes with unnecessary information that we need to manually remove.
5758

5859
**Documentation**: [group-pull-request-title-pattern](https://github.com/googleapis/release-please?tab=readme-ov-file#group-pull-request-title-pattern)
5960

@@ -77,8 +78,7 @@ The configuration is defined in [`release-please-config.json`](../release-please
7778
"packages": {
7879
"packages/logger": { "component": "logger" },
7980
"packages/cli": {
80-
"component": "cli",
81-
"extra-files": ["npm-shrinkwrap.json"]
81+
"component": "cli"
8282
}
8383
}
8484
```
@@ -90,26 +90,11 @@ The configuration is defined in [`release-please-config.json`](../release-please
9090

9191
**Why `"component"` doesn't include `@ui5` scope**: Using scoped names (e.g., `"@ui5/logger"`) in the component field can cause incorrect GitHub tagging behavior.
9292

93-
**Why `extra-files` for CLI**: The CLI package's `npm-shrinkwrap.json` must be version-bumped alongside `package.json` to maintain consistency.
9493

9594
---
9695

9796
#### Plugin Configuration
9897

99-
```json
100-
"plugins": [
101-
{
102-
"type": "node-workspace",
103-
"merge": false
104-
},
105-
{
106-
"type": "linked-versions",
107-
"groupName": "ui5-cli-packages",
108-
"components": ["logger", "fs", "builder", "server", "project", "cli"]
109-
}
110-
]
111-
```
112-
11398
**`node-workspace` with `merge: false`**: When using `linked-versions`, the `node-workspace` plugin **must** set `merge: false` ([documented requirement](https://github.com/googleapis/release-please/blob/main/docs/manifest-releaser.md#linked-versions)). This prevents conflicts in Release Please's internal manifest processing between:
11499
1. The `linked-versions` plugin synchronizing versions across all packages
115100
2. The `node-workspace` plugin updating workspace dependency references
@@ -118,7 +103,7 @@ Without this flag, Release Please may fail to generate the release PR or produce
118103

119104
**Note**: Release Please always force-pushes to the PR branch, so this flag only affects internal manifest processing, not Git commit structure.
120105

121-
**`linked-versions` rationale**: All UI5 CLI packages are tightly coupled and should be released together with synchronized version numbers.
106+
**`linked-versions`**: All UI5 CLI packages will be released together with synchronized version numbers.
122107

123108
**Known limitations**:
124109
- Cannot resolve circular peer dependencies (e.g., `@ui5/project``@ui5/builder`)

0 commit comments

Comments
 (0)