From 8a34a45612fb43fcb19a8eee5d6f7ce9d0b7c13a Mon Sep 17 00:00:00 2001 From: d3xter666 Date: Mon, 24 Nov 2025 15:23:38 +0200 Subject: [PATCH 1/5] refactor: Add version at the release title --- .github/workflows/release-please.yml | 14 ++++++++++++++ release-please-config.json | 1 - 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index a270364d460..44c55cea084 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -13,6 +13,8 @@ permissions: jobs: release-please: runs-on: ubuntu-24.04 + outputs: + releases_created: ${{ steps.release.outputs.releases_created }} steps: - uses: actions/checkout@v5 @@ -27,6 +29,18 @@ jobs: with: token: "${{ secrets.GITHUB_TOKEN }}" + - name: Update PR title with version + if: steps.release.outputs.pr + run: | + PR_NUMBER="${{ fromJSON(steps.release.outputs.pr).number }}" + PR_BRANCH="${{ fromJSON(steps.release.outputs.pr).headBranchName }}" + git fetch origin $PR_BRANCH + git checkout $PR_BRANCH + VERSION=$(jq -r .version packages/cli/package.json) + gh pr edit $PR_NUMBER --title "release: UI5 CLI packages $VERSION" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + publish-packages: runs-on: ubuntu-24.04 needs: release-please diff --git a/release-please-config.json b/release-please-config.json index 45da99a6c95..19ac1959bcb 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -30,7 +30,6 @@ "release-type": "node", "always-update": true, "pull-request-header": ":tractor: New release prepared", - "pull-request-title-pattern": "release: UI5 CLI packages", "plugins": [ { "type": "node-workspace" From b72512a6affe3619c1507ecfe3c84c04593028c9 Mon Sep 17 00:00:00 2001 From: d3xter666 Date: Wed, 26 Nov 2025 00:36:55 +0200 Subject: [PATCH 2/5] refactor: Release Please workflow & config --- .github/workflows/release-please.yml | 39 ++++++++++++++++++++++------ release-please-config.json | 13 +++++----- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 44c55cea084..3818cd0f6b0 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -29,15 +29,38 @@ jobs: with: token: "${{ secrets.GITHUB_TOKEN }}" - - name: Update PR title with version - if: steps.release.outputs.pr + - name: "Fix peerDependency and lockfile in Release PR" + if: ${{ steps.release.outputs.pr }} run: | - PR_NUMBER="${{ fromJSON(steps.release.outputs.pr).number }}" - PR_BRANCH="${{ fromJSON(steps.release.outputs.pr).headBranchName }}" - git fetch origin $PR_BRANCH - git checkout $PR_BRANCH - VERSION=$(jq -r .version packages/cli/package.json) - gh pr edit $PR_NUMBER --title "release: UI5 CLI packages $VERSION" + set -ex + gh pr checkout ${{ fromJson(steps.release.outputs.pr).number }} + + # Update peer dependency: Release Please doesn't handle circular peerDependencies + # @ui5/project has peerDependency on @ui5/builder, and @ui5/builder has devDependency on @ui5/project + # The node-workspace plugin can't resolve this cycle, so we update it manually + # Extract builder version and update project peer dependency + BUILDER_VERSION=$(jq -r '.version' packages/builder/package.json) + jq --tab --arg new_version "^$BUILDER_VERSION" '.peerDependencies."@ui5/builder" = $new_version' packages/project/package.json > tmp.$$.json && mv tmp.$$.json packages/project/package.json + + # Regenerate package-lock.json to sync with updated workspace packages + npm install + + # Fix lockfile corruption: node-workspace plugin updates npm alias entries in package-lock.json + # but the internal/* packages have npm aliases (@ui5/builder-npm, @ui5/cli-npm, etc.) that point + # to old versions (^4.0.x) which are still correct and should not be updated to new versions (^5.0.x) + # that don't exist on npm yet. We restore these specific entries from the main branch. + # Restore original entries for @ui5/*-npm packages to avoid unintended updates + git show origin/main:package-lock.json | jq -r '.packages | to_entries[] | select(.key | test("node_modules/@ui5/(builder|cli|fs|logger|project|server)-npm$")) | .key' | while read key; do + original_entry=$(git show origin/main:package-lock.json | jq ".packages[\"$key\"]") + jq --tab --arg key "$key" --argjson entry "$original_entry" '.packages[$key] = $entry' package-lock.json > tmp.$$.json && mv tmp.$$.json package-lock.json + done + + # Commit the change back to the PR branch + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add packages/project/package.json package-lock.json + git commit -m "chore: update @ui5/builder peer dependency and regenerate lockfile" + git push env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/release-please-config.json b/release-please-config.json index 19ac1959bcb..e863f409e98 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,8 +1,11 @@ { "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", - "group-pull-request-title-pattern": "release: UI5 CLI packages", - "prerelease-type": "alpha", + "group-pull-request-title-pattern": "release: UI5 CLI packages ${branch}", + "release-type": "node", + "always-update": true, + "pull-request-header": ":tractor: New release prepared", "prerelease": true, + "prerelease-type": "alpha", "release-as": "5.0.0-alpha.0", "packages": { "packages/logger": { @@ -27,12 +30,10 @@ ] } }, - "release-type": "node", - "always-update": true, - "pull-request-header": ":tractor: New release prepared", "plugins": [ { - "type": "node-workspace" + "type": "node-workspace", + "merge": false }, { "type": "linked-versions", From 7b3c9c910a345daf5612e824e008d1dab264bf7e Mon Sep 17 00:00:00 2001 From: d3xter666 Date: Wed, 26 Nov 2025 09:38:44 +0200 Subject: [PATCH 3/5] fix: Lockfile update commit message type --- .github/workflows/release-please.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 3818cd0f6b0..7c74afdfca6 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -59,7 +59,7 @@ jobs: git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add packages/project/package.json package-lock.json - git commit -m "chore: update @ui5/builder peer dependency and regenerate lockfile" + git commit -m "ci(release-please): update @ui5/builder peer dependency and regenerate lockfile" git push env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 0090adcf774ff9fb98783683e0c2b8475fcd3d48 Mon Sep 17 00:00:00 2001 From: d3xter666 Date: Wed, 26 Nov 2025 15:11:02 +0200 Subject: [PATCH 4/5] refactor: Amend release commit, instead of polluting PR with a new one --- .github/workflows/release-please.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 7c74afdfca6..4815c807c2a 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -56,11 +56,11 @@ jobs: done # Commit the change back to the PR branch - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + # Amend the Release Please commit to include our fixes + # This keeps the PR clean with a single commit git add packages/project/package.json package-lock.json - git commit -m "ci(release-please): update @ui5/builder peer dependency and regenerate lockfile" - git push + git commit --amend --no-edit + git push --force-with-lease env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From f3d82f1a744d6570b54878bbd11edc76278b47f2 Mon Sep 17 00:00:00 2001 From: d3xter666 Date: Thu, 27 Nov 2025 09:08:47 +0200 Subject: [PATCH 5/5] fix: Pattern for package-lock.json match --- .github/workflows/release-please.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 4815c807c2a..ff7e6926a92 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -50,7 +50,8 @@ jobs: # to old versions (^4.0.x) which are still correct and should not be updated to new versions (^5.0.x) # that don't exist on npm yet. We restore these specific entries from the main branch. # Restore original entries for @ui5/*-npm packages to avoid unintended updates - git show origin/main:package-lock.json | jq -r '.packages | to_entries[] | select(.key | test("node_modules/@ui5/(builder|cli|fs|logger|project|server)-npm$")) | .key' | while read key; do + # Note: npm aliases can be in node_modules or internal/documentation/node_modules + git show origin/main:package-lock.json | jq -r '.packages | to_entries[] | select(.key | test("(node_modules|internal/documentation/node_modules)/@ui5/(builder|cli|fs|logger|project|server)-npm$")) | .key' | while read key; do original_entry=$(git show origin/main:package-lock.json | jq ".packages[\"$key\"]") jq --tab --arg key "$key" --argjson entry "$original_entry" '.packages[$key] = $entry' package-lock.json > tmp.$$.json && mv tmp.$$.json package-lock.json done @@ -58,6 +59,8 @@ jobs: # Commit the change back to the PR branch # Amend the Release Please commit to include our fixes # This keeps the PR clean with a single commit + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add packages/project/package.json package-lock.json git commit --amend --no-edit git push --force-with-lease @@ -116,4 +119,4 @@ jobs: working-directory: packages/cli run: | echo "🚀 Publishing @ui5/cli" - npm publish --access public --tag next \ No newline at end of file + npm publish --access public --tag next