You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
slms/docs/FIXES_SUMMARY.md

3.8 KiB

🔧 问题修复总结

修复的三个问题

1. APK 制品缺失

问题: Android APK 没有被正确打包和归档

原因:

  • Gradle 命令路径错误(在 android 子目录执行)
  • APK 文件名不匹配(查找 app-debug.apk 但实际是 android-debug.apk

修复:

// 修改前:在 SLMS/android 目录执行
dir('SLMS/android') {
    call ..\\gradlew.bat assembleDebug
}

// 修改后:在 SLMS 目录执行,使用模块路径
dir('SLMS') {
    call gradlew.bat :android:assembleDebug
}

2. 头歌 Release 分支没有制品

问题: 制品没有成功推送到头歌的 release 分支

原因:

  • release 分支可能不存在
  • 直接推送 HEAD 到 release 会导致分支历史混乱
  • 没有正确切换到 release 分支

修复:

REM 1. 检查并创建 release 分支
git fetch ... release:release || git checkout -b release

REM 2. 切换到 release 分支
git checkout release || git checkout -b release

REM 3. 合并制品更改
git merge --no-ff --allow-unrelated-histories -m "..." -

REM 4. 推送到远程 release 分支
git push ... release:release --force

3. 邮件通知没收到

问题: 构建完成后没有收到邮件通知

原因:

  • 邮件发送异常被 catch 捕获但没有详细日志
  • 无法确定是否进入了正确的 post 部分

修复:

// 1. 添加详细的错误日志
catch (Exception e) {
    echo "⚠️ 邮件发送失败: ${e.message}"
    echo "错误详情: ${e.toString()}"
    e.printStackTrace()
}

// 2. 在 always 部分添加构建状态检查
always {
    script {
        echo "当前构建结果: ${currentBuild.result}"
        echo "当前构建状态: ${currentBuild.currentResult}"
        
        if (currentBuild.result == 'FAILURE') {
            echo "构建失败,应该发送失败邮件"
        } else if (currentBuild.result == 'UNSTABLE') {
            echo "构建不稳定,应该发送不稳定邮件"
        } else {
            echo "构建成功,应该发送成功邮件"
        }
    }
}

📋 验证清单

下次构建后,检查以下内容:

APK 制品

  • Jenkins 构建日志显示 "✓ Android APK 打包完成: slms-debug.apk"
  • Jenkins 制品列表包含 slms-debug.apk
  • 可以从 Jenkins 下载 APK 文件

Release 分支制品

邮件通知

  • 检查 Jenkins 构建日志中的邮件发送状态
  • 搜索 "当前构建结果" 确认进入了正确的 post 部分
  • 检查 602924803@qq.com1280568951@qq.com 的收件箱
  • 如果失败,查看详细错误日志

🚀 下一步

  1. 提交更改:
git add Jenkinsfile docs/FIXES_SUMMARY.md
git commit -m "fix: 修复 APK 制品、release 分支推送和邮件通知问题"
git push
  1. 触发构建: 推送后 Jenkins 会自动触发构建

  2. 监控日志: 查看构建日志,确认三个问题都已解决

  3. 验证结果:

    • 下载 APK 测试
    • 访问头歌 release 分支
    • 检查邮箱

📝 技术细节

Gradle 模块路径

# 错误方式
cd android
gradlew assembleDebug

# 正确方式
gradlew :android:assembleDebug

Git 分支管理

# 确保分支存在并切换
git fetch origin release:release 2>/dev/null || git checkout -b release
git checkout release
git merge --no-ff -m "merge" -
git push origin release:release

Jenkins 邮件调试

// 添加详细日志
echo "准备发送邮件到: ${recipients}"
emailext(...)
echo "✓ 邮件已发送"

// 捕获异常
catch (Exception e) {
    e.printStackTrace()  // 打印完整堆栈
}