svn-debug2release.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #!/bin/sh
  2. #svn log -r 6126 https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/src/Eshow
  3. #svn info https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/src/Eshow
  4. # 参数1:apk名称,源于源码路径,需要对带 _General 的删除后缀。
  5. APK_NAME=$1
  6. # 参数2:debug apk的svn版本号;
  7. APK_DEBUG_SVN_REVISION=$2
  8. # APK的Debug日志;
  9. APK_DEBUG_LOG=$3
  10. # Debug Apk 地址;
  11. APK_DEBUG_URL='https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/apk/01debug/general'
  12. # Release Apk 地址;
  13. APK_RELEASE_URL='https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/apk/02release/general'
  14. # Apk源码地址;
  15. APK_SRC_URL='https://odm-design-center-hz.tclking.com/svn/scbc_apps/trunk/app/src'
  16. # Debug Apk 路径;
  17. APK_DEBUG_DIR='/home/data/ApkAutoCompile/cacheAPK/general/Debug'
  18. # Release Apk 路径;
  19. APK_RELEASE_DIR='/home/data/ApkAutoCompile/cacheAPK/general/Release'
  20. function main()
  21. {
  22. # 1、参数校验;
  23. if [ "${APK_NAME}" == "" ]; then
  24. echo "==> 错误:参数-APK名称为空"
  25. return
  26. fi
  27. if [ "${APK_DEBUG_SVN_REVISION}" == "" ]; then
  28. echo "==> 错误:参数-Debug Apk SVN版本号为空"
  29. return
  30. fi
  31. if [ "${APK_DEBUG_SVN_REVISION}" -gt 0 ] 2>/dev/null; then
  32. echo ""
  33. else
  34. echo "==> 错误:参数-Debug Apk SVN版本号不为数字"
  35. return
  36. fi
  37. if [ "${APK_DEBUG_LOG}" == "" ]; then
  38. echo "==> 错误:参数-Debug Apk Log日志为空"
  39. return
  40. fi
  41. # 过滤掉APK名称中的 _General 后缀
  42. # 注:此方法会过滤掉包含 _General 往后的所有字符,所以APK名称不能在中间包含 _General ;
  43. APK_NAME=${APK_NAME%_General*}
  44. echo "==> APK名称=${APK_NAME}, DebugApk SVN 版本号=${APK_DEBUG_SVN_REVISION}"
  45. # 生成目标变量;
  46. DEBUG_APK_URL="${APK_DEBUG_URL}/${APK_NAME}"
  47. RELEASE_APK_URL="${APK_RELEASE_URL}/${APK_NAME}"
  48. LOG=`svn log -r ${APK_DEBUG_SVN_REVISION} ${DEBUG_APK_URL}`
  49. if [ "${LOG}" == "" ];then
  50. echo "==> 错误:log空"
  51. return
  52. fi
  53. echo "=====================================================================================================>"
  54. echo -e "nApk-DebugUrl=\t${DEBUG_APK_URL}\r\nApk-ReleaseUrl=\t${RELEASE_APK_URL}\r\nApk-Log=${LOG}"
  55. echo "<====================================================================================================="
  56. # 创建debug根目录;
  57. if [ ! -d ${APK_DEBUG_DIR} ];then
  58. mkdir ${APK_DEBUG_DIR}
  59. fi
  60. # 创建release根目录;
  61. if [ ! -d ${APK_RELEASE_DIR} ];then
  62. mkdir ${APK_RELEASE_DIR}
  63. fi
  64. echo "==> 导出Debug Apk"
  65. DEBUG_APK_DIR="${APK_DEBUG_DIR}/${APK_NAME}"
  66. if [ -d ${DEBUG_APK_DIR} ]; then
  67. # 删除所有文件;
  68. rm -rf ${DEBUG_APK_DIR}
  69. fi
  70. #重新export
  71. svn 'export' ${DEBUG_APK_URL} ${DEBUG_APK_DIR}
  72. echo "==> 检出Release Apk"
  73. RELEASE_APK_DIR="${APK_RELEASE_DIR}/${APK_NAME}"
  74. if [ -d ${RELEASE_APK_DIR} ]; then
  75. # 删除所有文件;
  76. rm -rf ${RELEASE_APK_DIR}
  77. fi
  78. # 重新checkout出来;
  79. svn co ${RELEASE_APK_URL} ${RELEASE_APK_DIR}
  80. # 将debug的apk复制到release目录中,再提交;
  81. cp ${DEBUG_APK_DIR}/* ${RELEASE_APK_DIR}
  82. # 是否复制成功
  83. Status=`svn status ${RELEASE_APK_DIR}`
  84. echo ${Status}
  85. if [ "${Status}" == "" ];then
  86. echo "==> 错误:Apk-Release目录下SVN无状态改变"
  87. return
  88. fi
  89. # 提交修改;
  90. svn add ${RELEASE_APK_DIR}
  91. svn commit -m ${APK_DEBUG_LOG} ${RELEASE_APK_DIR}
  92. }
  93. main