@@ -353,21 +353,21 @@ jobs:
353353 echo "Release assets:"
354354 ls -la release-assets/
355355
356- - name : Get previous tag
357- id : prev_tag
358- run : |
359- # 获取上一个 tag
360- PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
361- echo "prev_tag=$PREV_TAG" >> $GITHUB_OUTPUT
362- echo "Previous tag: $PREV_TAG"
363-
364- - name : Generate Changelog
365- id : changelog
356+ - name : Generate Release Notes
357+ id : release_notes
366358 run : |
367359 VERSION=${{ steps.get_version.outputs.version }}
368- PREV_TAG=${{ steps.prev_tag.outputs.prev_tag }}
360+ TAG_NAME=${GITHUB_REF_NAME}
361+ REPO=${{ github.repository }}
362+ TODAY=$(date +'%Y-%m-%d')
369363
370- # 确定比较范围
364+ # ========== 1. 获取上一个 tag ==========
365+ PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
366+ echo "DEBUG: PREV_TAG='${PREV_TAG}'"
367+ echo "DEBUG: HEAD=$(git rev-parse HEAD)"
368+ echo "DEBUG: All tags: $(git tag -l 'release-v*' | tr '\n' ' ')"
369+
370+ # ========== 2. 生成 Changelog ==========
371371 if [ -z "$PREV_TAG" ]; then
372372 COMPARE_RANGE="HEAD"
373373 echo "No previous tag found, using all commits"
@@ -376,203 +376,166 @@ jobs:
376376 echo "Comparing: $COMPARE_RANGE"
377377 fi
378378
379- # 初始化变更分类
380379 FEATURES=""
381380 FIXES=""
382381 IMPROVEMENTS=""
383- BREAKING=""
384382 DOCS=""
385383 REFACTOR=""
386- TESTS=""
387384 CHORE=""
388385 OTHER=""
389386
390- # 解析 commit 消息并分类
391387 while IFS= read -r line; do
392- if [ -z "$line" ]; then
393- continue
394- fi
395-
396- # 提取 commit 信息 (格式: hash|subject)
388+ [ -z "$line" ] && continue
397389 HASH=$(echo "$line" | cut -d'|' -f1 | cut -c1-7)
398390 MSG=$(echo "$line" | cut -d'|' -f2-)
399-
400- # 跳过合并提交
401- if echo "$MSG" | grep -qiE "^Merge"; then
402- continue
403- fi
404-
405- # 根据 Conventional Commits 格式分类
391+ echo "$MSG" | grep -qiE "^Merge" && continue
406392 ENTRY="- $MSG (\`$HASH\`)"
407-
408393 if echo "$MSG" | grep -qiE "^feat(\(.+\))?[!:]|^feature[!:]"; then
409- FEATURES="$FEATURES\n$ENTRY"
394+ FEATURES="${FEATURES}${ENTRY}
395+ "
410396 elif echo "$MSG" | grep -qiE "^fix(\(.+\))?[!:]"; then
411- FIXES="$FIXES\n$ENTRY"
397+ FIXES="${FIXES}${ENTRY}
398+ "
412399 elif echo "$MSG" | grep -qiE "^perf(\(.+\))?[!:]|^improve(\(.+\))?[!:]|^optimize"; then
413- IMPROVEMENTS="$IMPROVEMENTS\n$ENTRY"
414- elif echo "$MSG" | grep -qiE "^breaking|^!:"; then
415- BREAKING="$BREAKING\n$ENTRY"
400+ IMPROVEMENTS="${IMPROVEMENTS}${ENTRY}
401+ "
416402 elif echo "$MSG" | grep -qiE "^docs?(\(.+\))?[!:]"; then
417- DOCS="$DOCS\n$ENTRY"
403+ DOCS="${DOCS}${ENTRY}
404+ "
418405 elif echo "$MSG" | grep -qiE "^refactor(\(.+\))?[!:]"; then
419- REFACTOR="$REFACTOR\n$ENTRY"
420- elif echo "$MSG" | grep -qiE "^test(s)?(\(.+\))?[!:]"; then
421- TESTS="$TESTS\n$ENTRY"
406+ REFACTOR="${REFACTOR}${ENTRY}
407+ "
422408 elif echo "$MSG" | grep -qiE "^chore(\(.+\))?[!:]|^build(\(.+\))?[!:]|^ci(\(.+\))?[!:]"; then
423- CHORE="$CHORE\n$ENTRY"
409+ CHORE="${CHORE}${ENTRY}
410+ "
424411 else
425- OTHER="$OTHER\n$ENTRY"
412+ OTHER="${OTHER}${ENTRY}
413+ "
426414 fi
427- done < <(git log $COMPARE_RANGE --pretty=format:"%H|%s" --no-merges 2>/dev/null || echo "")
428-
429- # 生成 Changelog 内容
430- CHANGELOG=""
431-
432- if [ -n "$BREAKING" ]; then
433- CHANGELOG="$CHANGELOG\n### ⚠️ 重大变更 (Breaking Changes)\n$BREAKING\n"
434- fi
435-
436- if [ -n "$FEATURES" ]; then
437- CHANGELOG="$CHANGELOG\n### ✨ 新功能 (Features)\n$FEATURES\n"
438- fi
439-
440- if [ -n "$FIXES" ]; then
441- CHANGELOG="$CHANGELOG\n### 🐛 问题修复 (Bug Fixes)\n$FIXES\n"
442- fi
443-
444- if [ -n "$IMPROVEMENTS" ]; then
445- CHANGELOG="$CHANGELOG\n### ⚡ 性能优化 (Performance)\n$IMPROVEMENTS\n"
446- fi
447-
448- if [ -n "$REFACTOR" ]; then
449- CHANGELOG="$CHANGELOG\n### ♻️ 代码重构 (Refactor)\n$REFACTOR\n"
450- fi
451-
452- if [ -n "$DOCS" ]; then
453- CHANGELOG="$CHANGELOG\n### 📝 文档更新 (Documentation)\n$DOCS\n"
454- fi
455-
456- if [ -n "$TESTS" ]; then
457- CHANGELOG="$CHANGELOG\n### 🧪 测试 (Tests)\n$TESTS\n"
458- fi
459-
460- if [ -n "$CHORE" ]; then
461- CHANGELOG="$CHANGELOG\n### 🔧 其他更新 (Chore)\n$CHORE\n"
462- fi
463-
464- if [ -n "$OTHER" ]; then
465- CHANGELOG="$CHANGELOG\n### 📋 其他变更 (Other Changes)\n$OTHER\n"
466- fi
467-
468- # 如果没有任何变更记录
469- if [ -z "$CHANGELOG" ]; then
470- CHANGELOG="\n*暂无详细变更记录*\n"
471- fi
472-
473- # 保存到文件供后续使用
474- echo -e "$CHANGELOG" > changelog_content.md
415+ done < <(git log ${COMPARE_RANGE} --pretty=format:"%H|%s" --no-merges 2>/dev/null || echo "")
475416
476417 # 统计信息
477- TOTAL_COMMITS=$(git rev-list --count $COMPARE_RANGE 2>/dev/null || echo "0")
478- CONTRIBUTORS=$(git log $COMPARE_RANGE --format='%aN' 2>/dev/null | sort -u | wc -l || echo "0")
479- echo "total_commits=$TOTAL_COMMITS" >> $GITHUB_OUTPUT
480- echo "contributors=$CONTRIBUTORS" >> $GITHUB_OUTPUT
481-
482- - name : Generate Release Notes
483- id : release_notes
484- run : |
485- VERSION=${{ steps.get_version.outputs.version }}
486- PREV_TAG=${{ steps.prev_tag.outputs.prev_tag }}
487- TOTAL_COMMITS=${{ steps.changelog.outputs.total_commits }}
488- CONTRIBUTORS=${{ steps.changelog.outputs.contributors }}
489-
490- # 读取 changelog 内容
491- CHANGELOG_CONTENT=$(cat changelog_content.md)
492-
493- # 生成比较链接
494- if [ -n "$PREV_TAG" ]; then
495- COMPARE_URL="https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${GITHUB_REF_NAME}"
496- COMPARE_SECTION="[📊 查看完整代码变更](${COMPARE_URL}) | 共 ${TOTAL_COMMITS} 个提交,${CONTRIBUTORS} 位贡献者"
497- else
498- COMPARE_SECTION="这是首次发布版本"
499- fi
500-
501- cat > release_notes.md << 'RELEASE_EOF'
502- # SQLMap WebUI v__VERSION__
503-
504- ## 📋 版本概述
505-
506- 发布日期: __DATE__
507-
508- __COMPARE_SECTION__
509-
510- ## 🔄 更新内容
511-
512- __CHANGELOG_CONTENT__
513-
514- ---
515-
516- ## 📦 发布包说明
517-
518- ### 后端应用 (sqlmapwebui-__VERSION__.zip)
519- 完整的后端服务包,包含:
520- - Python 后端 API 服务
521- - 前端静态资源(已集成)
522- - 启动脚本 (start.sh / start.bat)
523-
524- **使用方法:**
525- ```bash
526- # Linux/Mac
527- unzip sqlmapwebui-__VERSION__.zip
528- cd sqlmapwebui-__VERSION__
529- ./start.sh
530-
531- # Windows
532- # 解压后运行 start.bat
533- ```
534-
535- ### Burp Suite 插件
536-
537- #### Montoya API 版本 (推荐)
538- - **文件**: sqlmap-webui-burp-montoya-__VERSION__.jar
539- - **适用**: Burp Suite 2023.1 及以上版本
540- - **Java 要求**: Java 17+
541-
542- #### Legacy API 版本
543- - **文件**: sqlmap-webui-burp-legacy-__VERSION__.jar
544- - **适用**: Burp Suite 老版本
545- - **Java 要求**: Java 11+
546-
547- ### 漏洞测试靶场 (vulnTestServer-__VERSION__.zip)
548- 用于测试的漏洞环境,包含多种 SQL 注入场景。
549-
550- **使用方法:**
551- ```bash
552- unzip vulnTestServer-__VERSION__.zip
553- cd vulnTestServer-__VERSION__
554- ./start.sh # 或 Windows 运行 start.bat
555- ```
556-
557- ## ⚠️ 安全提示
558- 本工具仅用于授权的安全测试。请确保在使用前获得适当的授权。
559-
560- ---
561- *此版本由 GitHub Actions 自动构建发布*
562- RELEASE_EOF
563-
564- # 替换占位符
565- sed -i "s/__VERSION__/${VERSION}/g" release_notes.md
566- sed -i "s/__DATE__/$(date +'%Y-%m-%d')/g" release_notes.md
567-
568- # 使用 awk 替换 COMPARE_SECTION(避免内容中的特殊字符干扰 sed 分隔符)
569- awk -v section="$COMPARE_SECTION" '{gsub(/__COMPARE_SECTION__/, section)}1' release_notes.md > release_notes.tmp && mv release_notes.tmp release_notes.md
570-
571- # 替换 changelog 内容(使用 awk 处理多行)
572- awk -v content="$CHANGELOG_CONTENT" '{gsub(/__CHANGELOG_CONTENT__/, content)}1' release_notes.md > release_notes.tmp && mv release_notes.tmp release_notes.md
573-
574- # 移除每行前面的缩进空格
575- sed -i 's/^ //' release_notes.md
418+ TOTAL_COMMITS=$(git rev-list --count ${COMPARE_RANGE} 2>/dev/null || echo "0")
419+ CONTRIBUTORS=$(git log ${COMPARE_RANGE} --format='%aN' 2>/dev/null | sort -u | wc -l | tr -d ' ' || echo "0")
420+ echo "DEBUG: TOTAL_COMMITS=${TOTAL_COMMITS}, CONTRIBUTORS=${CONTRIBUTORS}"
421+
422+ # ========== 3. 直接写入 release notes 文件(不使用占位符替换)==========
423+ {
424+ echo "# SQLMap WebUI v${VERSION}"
425+ echo ""
426+ echo "## 📋 版本概述"
427+ echo ""
428+ echo "发布日期: ${TODAY}"
429+ echo ""
430+ if [ -n "$PREV_TAG" ]; then
431+ echo "[📊 查看完整代码变更](https://github.com/${REPO}/compare/${PREV_TAG}...${TAG_NAME}) | 共 ${TOTAL_COMMITS} 个提交,${CONTRIBUTORS} 位贡献者"
432+ else
433+ echo "这是首次发布版本"
434+ fi
435+ echo ""
436+ echo "## 🔄 更新内容"
437+ echo ""
438+ # 写入分类变更
439+ HAS_CHANGES=false
440+ if [ -n "$FEATURES" ]; then
441+ echo "### ✨ 新功能 (Features)"
442+ echo ""
443+ echo "$FEATURES"
444+ HAS_CHANGES=true
445+ fi
446+ if [ -n "$FIXES" ]; then
447+ echo "### 🐛 问题修复 (Bug Fixes)"
448+ echo ""
449+ echo "$FIXES"
450+ HAS_CHANGES=true
451+ fi
452+ if [ -n "$IMPROVEMENTS" ]; then
453+ echo "### ⚡ 性能优化 (Performance)"
454+ echo ""
455+ echo "$IMPROVEMENTS"
456+ HAS_CHANGES=true
457+ fi
458+ if [ -n "$REFACTOR" ]; then
459+ echo "### ♻️ 代码重构 (Refactor)"
460+ echo ""
461+ echo "$REFACTOR"
462+ HAS_CHANGES=true
463+ fi
464+ if [ -n "$DOCS" ]; then
465+ echo "### 📝 文档更新 (Documentation)"
466+ echo ""
467+ echo "$DOCS"
468+ HAS_CHANGES=true
469+ fi
470+ if [ -n "$CHORE" ]; then
471+ echo "### 🔧 其他更新 (Chore)"
472+ echo ""
473+ echo "$CHORE"
474+ HAS_CHANGES=true
475+ fi
476+ if [ -n "$OTHER" ]; then
477+ echo "### 📋 其他变更 (Other Changes)"
478+ echo ""
479+ echo "$OTHER"
480+ HAS_CHANGES=true
481+ fi
482+ if [ "$HAS_CHANGES" = false ]; then
483+ echo "*暂无详细变更记录*"
484+ fi
485+ echo ""
486+ echo "---"
487+ echo ""
488+ echo "## 📦 发布包说明"
489+ echo ""
490+ echo "### 后端应用 (sqlmapwebui-${VERSION}.zip)"
491+ echo "完整的后端服务包,包含:"
492+ echo "- Python 后端 API 服务"
493+ echo "- 前端静态资源(已集成)"
494+ echo "- 启动脚本 (start.sh / start.bat)"
495+ echo ""
496+ echo '**使用方法:**'
497+ echo '```bash'
498+ echo '# Linux/Mac'
499+ echo "unzip sqlmapwebui-${VERSION}.zip"
500+ echo "cd sqlmapwebui-${VERSION}"
501+ echo './start.sh'
502+ echo ''
503+ echo '# Windows'
504+ echo '# 解压后运行 start.bat'
505+ echo '```'
506+ echo ""
507+ echo "### Burp Suite 插件"
508+ echo ""
509+ echo "#### Montoya API 版本 (推荐)"
510+ echo "- **文件**: sqlmap-webui-burp-montoya-${VERSION}.jar"
511+ echo "- **适用**: Burp Suite 2023.1 及以上版本"
512+ echo "- **Java 要求**: Java 17+"
513+ echo ""
514+ echo "#### Legacy API 版本"
515+ echo "- **文件**: sqlmap-webui-burp-legacy-${VERSION}.jar"
516+ echo "- **适用**: Burp Suite 老版本"
517+ echo "- **Java 要求**: Java 11+"
518+ echo ""
519+ echo "### 漏洞测试靶场 (vulnTestServer-${VERSION}.zip)"
520+ echo "用于测试的漏洞环境,包含多种 SQL 注入场景。"
521+ echo ""
522+ echo '**使用方法:**'
523+ echo '```bash'
524+ echo "unzip vulnTestServer-${VERSION}.zip"
525+ echo "cd vulnTestServer-${VERSION}"
526+ echo './start.sh # 或 Windows 运行 start.bat'
527+ echo '```'
528+ echo ""
529+ echo "## ⚠️ 安全提示"
530+ echo "本工具仅用于授权的安全测试。请确保在使用前获得适当的授权。"
531+ echo ""
532+ echo "---"
533+ echo "*此版本由 GitHub Actions 自动构建发布*"
534+ } > release_notes.md
535+
536+ echo "DEBUG: release_notes.md generated successfully"
537+ echo "DEBUG: First 10 lines:"
538+ head -10 release_notes.md
576539
577540 - name : Create Release
578541 uses : softprops/action-gh-release@v2
0 commit comments