mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-13 19:20:04 +00:00
👷 build(ci): fix changelog auto-generation in release workflow (#12765)
After auto-tag-release.yml was introduced, semantic-release in release.yml stopped working because the tag already exists when it runs. This caused CHANGELOG.md to never be updated. Fix: move changelog generation into auto-tag-release.yml with a custom script that parses git log and generates gitmoji-formatted entries, matching the existing CHANGELOG.md format. Remove the broken semantic-release step from release.yml.
This commit is contained in:
@@ -72,6 +72,23 @@ jobs:
|
||||
git checkout main
|
||||
git pull --rebase origin main
|
||||
|
||||
- name: Setup Node.js
|
||||
if: steps.release.outputs.should_tag == 'true' || steps.patch.outputs.should_tag == 'true'
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.11.1
|
||||
package-manager-cache: false
|
||||
|
||||
- name: Install bun
|
||||
if: steps.release.outputs.should_tag == 'true' || steps.patch.outputs.should_tag == 'true'
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: latest
|
||||
|
||||
- name: Install deps
|
||||
if: steps.release.outputs.should_tag == 'true' || steps.patch.outputs.should_tag == 'true'
|
||||
run: bun i
|
||||
|
||||
- name: Resolve patch version (patch bump)
|
||||
id: patch-version
|
||||
if: steps.patch.outputs.should_tag == 'true'
|
||||
@@ -117,12 +134,10 @@ jobs:
|
||||
echo "✅ Tag v$VERSION does not exist, can create"
|
||||
fi
|
||||
|
||||
- name: Bump package.json version (before tagging)
|
||||
- name: Bump package.json version
|
||||
if: env.SHOULD_TAG == 'true' && steps.check-tag.outputs.exists == 'false'
|
||||
id: bump-version
|
||||
run: |
|
||||
VERSION="${{ env.VERSION }}"
|
||||
KIND="${{ env.KIND }}"
|
||||
echo "📝 Bumping package.json version to: $VERSION"
|
||||
|
||||
# Validate VERSION is strict semver before writing
|
||||
@@ -131,10 +146,6 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configure git
|
||||
git config --global user.name "lobehubbot"
|
||||
git config --global user.email "i@lobehub.com"
|
||||
|
||||
# Update package.json using Node.js
|
||||
node -e "
|
||||
const fs = require('fs');
|
||||
@@ -149,8 +160,26 @@ jobs:
|
||||
console.log('✅ package.json updated to', target);
|
||||
"
|
||||
|
||||
- name: Generate changelog
|
||||
if: env.SHOULD_TAG == 'true' && steps.check-tag.outputs.exists == 'false'
|
||||
run: bun run workflow:changelog:gen
|
||||
|
||||
- name: Build static changelog
|
||||
if: env.SHOULD_TAG == 'true' && steps.check-tag.outputs.exists == 'false'
|
||||
run: bun run workflow:changelog
|
||||
|
||||
- name: Commit release changes and push
|
||||
if: env.SHOULD_TAG == 'true' && steps.check-tag.outputs.exists == 'false'
|
||||
id: bump-version
|
||||
run: |
|
||||
VERSION="${{ env.VERSION }}"
|
||||
|
||||
# Configure git
|
||||
git config --global user.name "lobehubbot"
|
||||
git config --global user.email "i@lobehub.com"
|
||||
|
||||
# Commit changes (if any) and push
|
||||
git add package.json
|
||||
git add package.json CHANGELOG.md changelog/
|
||||
COMMIT_MSG="🔖 chore(release): release version v$VERSION [skip ci]"
|
||||
git commit -m "$COMMIT_MSG" || echo "Nothing to commit"
|
||||
git push origin HEAD:main
|
||||
|
||||
@@ -66,38 +66,6 @@ jobs:
|
||||
- name: Test App
|
||||
run: bun run test-app
|
||||
|
||||
- name: Extract version from tag
|
||||
id: get-version
|
||||
run: |
|
||||
# Extract version from github.ref (refs/tags/v1.0.0 -> 1.0.0)
|
||||
VERSION=${GITHUB_REF#refs/tags/v}
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "📦 Release version: v$VERSION"
|
||||
|
||||
- name: Verify package.json version matches tag
|
||||
run: |
|
||||
VERSION="${{ steps.get-version.outputs.version }}"
|
||||
echo "🔎 Checking package.json version equals tag: $VERSION"
|
||||
node -e "
|
||||
const fs = require('fs');
|
||||
const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
|
||||
const expected = '$VERSION';
|
||||
const actual = pkg.version;
|
||||
if (actual !== expected) {
|
||||
console.error('❌ Version mismatch: package.json=' + actual + ' tag=' + expected);
|
||||
process.exit(1);
|
||||
}
|
||||
console.log('✅ Version OK:', actual);
|
||||
"
|
||||
|
||||
- name: Release
|
||||
run: bun run release
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
# Pass version to semantic-release
|
||||
SEMANTIC_RELEASE_VERSION: ${{ steps.get-version.outputs.version }}
|
||||
|
||||
- name: Workflow
|
||||
run: bun run workflow:readme
|
||||
|
||||
|
||||
Reference in New Issue
Block a user