You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Release-Workflow.md
+11-26Lines changed: 11 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,21 +25,21 @@ The workflow consists of three main jobs:
25
25
26
26
### 1. `release-please` Job
27
27
-**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.
30
29
31
30
### 2. `publish-packages` Job
32
-
-**Trigger**: Merger of release PR into `main` branch
31
+
-**Trigger**: Merge of release PR into `main` branch
33
32
-**Action**: Developer merges the release PR in GitHub
34
33
-**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)
37
36
-**Strategy**: Sequential execution (`max-parallel: 1`) to ensure dependencies exist before dependents
38
37
39
38
### 3. `publish-cli` Job
40
39
-**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.
43
43
44
44
## Release Please Configuration
45
45
@@ -53,7 +53,8 @@ The configuration is defined in [`release-please-config.json`](../release-please
**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.
@@ -77,8 +78,7 @@ The configuration is defined in [`release-please-config.json`](../release-please
77
78
"packages": {
78
79
"packages/logger": { "component": "logger" },
79
80
"packages/cli": {
80
-
"component": "cli",
81
-
"extra-files": ["npm-shrinkwrap.json"]
81
+
"component": "cli"
82
82
}
83
83
}
84
84
```
@@ -90,26 +90,11 @@ The configuration is defined in [`release-please-config.json`](../release-please
90
90
91
91
**Why `"component"` doesn't include `@ui5` scope**: Using scoped names (e.g., `"@ui5/logger"`) in the component field can cause incorrect GitHub tagging behavior.
92
92
93
-
**Why `extra-files` for CLI**: The CLI package's `npm-shrinkwrap.json` must be version-bumped alongside `package.json` to maintain consistency.
**`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:
114
99
1. The `linked-versions` plugin synchronizing versions across all packages
115
100
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
118
103
119
104
**Note**: Release Please always force-pushes to the PR branch, so this flag only affects internal manifest processing, not Git commit structure.
120
105
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.
0 commit comments