jenkins自動部署tomcat

關於部署的3種思路:

  • 遠程部署(jenkins編譯部署到遠程服務器):
    • 安裝ssh插件
    • ssh插件配置
  • 添加遠程jenkins服務器節點:
  • 本地部署(與jenkins在同一服務器):

關於maven構建的兩種選擇:

    • 直接選擇maven插件
      • 自帶插件():
      • 插件配置(或直接新建maven項目):
 
 
    • 添加shell編譯過程,經過shell調用服務器的maven環境
jenkins配置:
  1. export BUILD_ID=XXXXXX # 必須得加,緣由未知,不然沒法啓動tomcat
  2. export project_dir=$WORKSPACE
  3. export target_dir=/export/App/zgbcms.m.jd.com
  4. export do_dir=/export/Domains/zgbcms.m.jd.com/server1/bin
  5. export war_path="cms-web"
  6. export war_file="cms-web.war"
  7. # 接受6個參數,mvn_parama爲編譯什麼版本,接受參數dovolopment,test
  8. export mvn_parama="test"
  9. /home/lyz/bushu.sh
環境部署shell:
  1. #!/bin/bash
  2. # 自動編譯部署腳本,jenkins調用
  3. # 編譯後生成文件war,清空並解壓到指定文件夾,重啓服務器
  4. export M2_HOME=/export/servers/apache-maven-2.2.1
  5. export JAVA_HOME=/export/servers/jdk1.6.0_25
  6. export JAVA_BIN=/export/servers/jdk1.6.0_25/bin
  7. export PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin
  8. export CLASSPATH=.:/lib/dt.jar:/lib/tools.jar
  9. export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"
  10. export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
  11. export PATH=$PATH:$M2_HOME/bin
  12. # 測試用傳參
  13. #export project_dir=/root/.jenkins/workspace/zgb_server_master
  14. #export target_dir=/export/App/zgb.m.jd.com
  15. #export do_dir=/export/Domains/zgb.m.jd.com/server1/bin
  16. #export war_path="jd-qqgserver-web"
  17. #export war_file="jd-qqgserver-web.war"
  18. project_dir=$project_dir
  19. target_dir=$target_dir
  20. do_dir=$do_dir
  21. war_path=$war_path
  22. war_file=$war_file
  23. mvn_parama=$mvn_parama
  24. echo $project_dir
  25. echo $target_dir
  26. echo $do_dir
  27. echo $war_path
  28. echo $war_file
  29. echo $mvn_parama
  30. function mvn_build()
  31. {
  32. if[ $# -eq 6 ] # 校驗參數是否爲6個
  33. then
  34. if[-d "$project_dir/"]&&[-d "$target_dir/"]&&[-d "$do_dir/"]# 校驗文件夾是否存在
  35. then
  36. cd $project_dir
  37. if["$mvn_parama"=="development"]
  38. then
  39. echo "編譯開發版本!"
  40. mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -P artifactory,development
  41. elif["$mvn_parama"=="test"]
  42. then
  43. echo "編譯test版本!"
  44. mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -P artifactory,test
  45. else
  46. echo "未指定配置文件參數!會致使服務器沒法訪問!"
  47. exit 1
  48. fi
  49. rm -rf $target_dir/*
  50. cp -r $project_dir/$war_path/target/$war_file $target_dir/
  51. echo $target_dir/$war_file
  52. cd $target_dir
  53. unzip -oq $war_file
  54. rm -rf $target_dir/$war_file
  55. $do_dir/stop.sh
  56. if[ $?==0]
  57. then
  58. echo "服務器中止成功!"
  59. else
  60. echo "服務器中止失敗!"
  61. fi
  62. $do_dir/start.sh
  63. if[ $?==0]
  64. then
  65. echo "服務器啓動成功!"
  66. else
  67. echo "服務器啓動失敗!"
  68. exit 1# 退出狀態爲1,傳給jenkins讓任務失敗
  69. fi
  70. else
  71. echo "Folder $* is not exist!"
  72. exit 1
  73. fi
  74. else
  75. echo "$0 is Errors! Parama is $# not 6!"
  76. exit 1
  77. fi
  78. }
  79. # 接受6個參數,mvn_parama爲編譯什麼版本,接受參數dovolopment,beta,production,test 或其餘,其餘爲默認
  80. mvn_build $project_dir $target_dir $do_dir $war_path $war_file $mvn_parama
 





附件列表

相關文章
相關標籤/搜索