当前位置:   article > 正文

Jenkins+Maven+Git 生成jar包部署到远程服务器上_jenkins jar包

jenkins jar包

1、登录Jenkins

1.1 输入用户名/密码,登录Jenkins进入系统页面

 2、创建任务

2.1 点击左侧菜单中 “新建Item” 进入到新项目创建页面,创建一个新的构建任务

2.2 在任务创建页面,第一步,“输入一个任务名称”;第二步,任务类型点击“构建一个maven项目”;第三步,点击“确定”,此时,构建任务创建完成。

 2.3 任务创建完成后,系统页面自动跳转到任务配置页面;

 2.4 此时,在Jenkins首页可以看到刚刚创建的名称为les-service的构建任务,点击任务名称后面的下拉箭头,点击“配置”可以进入到步骤2.2中的构建任务配置页面。

 3 构建任务配置

3.1 General(全局配置):以下(1)(2)(3)(4)(5)操作都为非必输项,可以忽略掉,不影响任务的构建。

(1)描述:输入要部署到的远程服务器的信息,以及本次发布架包的信息;

(2)勾选Discard old builds(丢弃旧的构建版本),我这里要设置丢弃旧的构建版本信息;

(3)策略,选择Log Rotation(日志循环);

(4)“保持构建天数”中输入7,表示构建记录保存7天;

(5)“保持构建的最大个数”中输入7,表示最多保存7个构建记录;

 3.2 源码管理:主要填写GitLab上的项目源码信息

(1)勾选Git;

(2)输入“Repository URL”内容,填写GitLab上项目的仓库地址,如下GitLab截图中的序号2,复制地址输入到“Repository URL”中;

(3)点击Credentials下面的“添加”按钮,添加访问仓库项目的凭证(账号/密码),Domain(范围)选择“全局凭据”,后面创建该项目的前端构建任务时,可以复用;类型选择“Username with password”;“用户名”输入有访问该gitlab项目权限的用户名;“密码”用户的密码;点击下方“添加”按钮,凭据添加完成;

(4)选择Credentials访问仓库项目的凭证(gitlab用户名/密码)

(5)输入,GitLab上的分支,我这里是dev分支

 3.3 构建环境,非必填项;勾选“Provide Configuration files”和“Add timestamps to the Console Output”,选择File和输入Target,target输入要被替换的路径以及文件名称,路径写相对路径(即,构建项目包里面文件夹的路径);如果要替换多个文件,点击“Add file”继续添加文件

(1) 勾选“Provide Configuration files”(提供配置文件),可以替换构建包中配置文件,方便数据库、注册中等地址的修改,file的添加在 Dashboard-》Manage Jenkins-》Managed files中;

(2)点击"Add a new Config"添加一个新配置,选择“Cutom file”自由风格的文件(这个可以自由定义配置文件的扩展名),点击“Next”

 (3)“name”中输入配置文件的名称(随便取名,最好和项目中的一致方便识别),“Content”输入配置文件的内容,点击“Subimit”;

3.4 Build构建,填写打包相关的信息

(1)Root POM,输入POM的根路径,根据项目的实际路径填写;

(2)Goals and options,目标选项中输入打包要执行的maven命令,输入clean package -Dmaven.test.skip=true(先清理掉以前的包,并跳过测试打包,这里可以打war包或jar包,存放在target目录下)

小扩展:-DskipTests 和 -Dmaven.test.skip=true 的区别

-DskipTests:不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下;

-Dmaven.test.skip=true:不执行测试用例,也不编译测试用例类;

 3.5 post step 构建后操作(pre step构建前操作)

(1)我这里选择“Run regardless or build result”,表示不管上面构建结构都运行(此处根据自己情况也可以选择其他选项);

(2)点击“Add post-build step”,增加构建够操作;

(3)选择“Send files or execute commands over SSH”,通过SSH发送文件或执行命令,弹出到传输设置信息

(4)name:选择一个要运行jar包的远程服务器;远程服务器配置如下3.5.1:

(5)Source files:jenkins工作目录下,打包好的jar包文件的路径,这里要写相对路径,开始不要加斜杠“/”(/var/lib/jenkins/workspace/les_service/ 下面的路径);

(6)Remove prefix:去掉Source file中的前缀;

(7)Remote directory:jar包要部署的远程服务器上位置的路径;

(8)Exec command:要执行的shell脚本

(9)点击“Add Transfer Set”可以添加多个jar传到服务器;

(10)在最后一个jar传输信息的Exec command中的shell命令框中 可执行命令的最上面加上 ./etc/profile 重新加载下环境变量,解决脚本不执行或找不到环境变量问题 ;

./service.sh为执行命令脚本文件,把service.sh脚本和jar放在同一文件夹下,

service.sh内容为:

  1. #!/bin/sh
  2. export GATEWAY=les-gateway.jar
  3. export AUTH=les-auth.jar
  4. export WMS=modules-wms-system.jar
  5. export MASTERDATA=les-modules-masterData.jar
  6. export LES=modules-les-system.jar
  7. export JOB=les-modules-job.jar
  8. export FILE=les-modules-file.jar
  9. export GATEWAY_port=8080
  10. export AUTH_port=9205
  11. export WMS_port=9201
  12. export MASTERDATA_port=8085
  13. export LES_port=9203
  14. export JOB_port=9211
  15. export FILE_port=9300
  16. case "$1" in
  17. start)
  18. ## 启动gateway
  19. echo "--------开始启动GATEWAY---------------"
  20. nohup java -jar $GATEWAY >/dev/null 2>&1 &
  21. GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`
  22. until [ -n "$GATEWAY_pid" ]
  23. do
  24. GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`
  25. done
  26. echo "GATEWAY pid is $GATEWAY_pid"
  27. echo "---------GATEWAY 启动成功-----------"
  28. ## 启动auth
  29. echo "--------开始启动AUTH---------------"
  30. nohup java -jar $AUTH >/dev/null 2>&1 &
  31. AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`
  32. until [ -n "$AUTH_pid" ]
  33. do
  34. AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`
  35. done
  36. echo "AUTH pid is $AUTH_pid"
  37. echo "---------AUTH 启动成功-----------"
  38. ## 启动MASTERDATA
  39. echo "--------MASTERDATA 开始启动--------------"
  40. nohup java -jar $MASTERDATA >/dev/null 2>&1 &
  41. MASTERDATA_pid=`lsof -i:$MASTERDATA_port|grep "LISTEN"|awk '{print $2}'`
  42. until [ -n "$MASTERDATA_pid" ]
  43. do
  44. MASTERDATA_pid=`lsof -i:$MASTERDATA_port|grep "LISTEN"|awk '{print $2}'`
  45. done
  46. echo "MASTERDATA pid is $MASTERDATA_pid"
  47. echo "--------MASTERDATA 启动成功--------------"
  48. ## 启动LES
  49. echo "--------开始启动LES---------------"
  50. nohup java -jar $LES >/dev/null 2>&1 &
  51. LES_pid=`lsof -i:$LES_port|grep "LISTEN"|awk '{print $2}'`
  52. until [ -n "$LES_pid" ]
  53. do
  54. LES_pid=`lsof -i:$LES_port|grep "LISTEN"|awk '{print $2}'`
  55. done
  56. echo "LES pid is $LES_pid"      sleep 10
  57. echo "---------LES 启动成功-----------"
  58. ## 启动WMS
  59. echo "--------开始启动WMS---------------"
  60. nohup java -jar $WMS >/dev/null 2>&1 &
  61. WMS_pid=`lsof -i:$WMS_port|grep "LISTEN"|awk '{print $2}'`
  62. until [ -n "$WMS_pid" ]
  63. do
  64. WMS_pid=`lsof -i:$WMS_port|grep "LISTEN"|awk '{print $2}'`
  65. done
  66. echo "WMS pid is $WMS_pid"
  67. echo "---------WMS 启动成功-----------"
  68. ## 启动FILE
  69. echo "--------开始启动FILE---------------"
  70. nohup java -jar $FILE >/dev/null 2>&1 &
  71. FILE_pid=`lsof -i:$FILE_port|grep "LISTEN"|awk '{print $2}'`
  72. until [ -n "$FILE_pid" ]
  73. do
  74. FILE_pid=`lsof -i:$FILE_port|grep "LISTEN"|awk '{print $2}'`
  75. done
  76. echo "FILE pid is $FILE_pid"
  77. echo "---------WMS 启动成功-----------"
  78. ## 启动JOB
  79. echo "--------开始启动JOB---------------"
  80. nohup java -jar $JOB >/dev/null 2>&1 &
  81. JOB_pid=`lsof -i:$JOB_port|grep "LISTEN"|awk '{print $2}'`
  82. until [ -n "$JOB_pid" ]
  83. do
  84. JOB_pid=`lsof -i:$JOB_port|grep "LISTEN"|awk '{print $2}'`
  85. done
  86. echo "JOB pid is $JOB_pid"
  87. echo "---------JOB 启动成功-----------"
  88. echo "===startAll success==="
  89. ;;
  90. stop)
  91. P_ID=`ps -ef | grep -w $GATEWAY | grep -v "grep" | awk '{print $2}'`
  92. if [ "$P_ID" == "" ]; then
  93. echo "===GATEWAY process not exists or stop success"
  94. else
  95. kill -9 $P_ID
  96. echo "GATEWAY killed success"
  97. fi
  98. P_ID=`ps -ef | grep -w $FILE| grep -v "grep" | awk '{print $2}'`
  99. if [ "$P_ID" == "" ]; then
  100. echo "===FILE| process not exists or stop success"
  101. else
  102. kill -9 $P_ID
  103. echo "FILE| killed success"
  104. fi
  105. P_ID=`ps -ef | grep -w $AUTH | grep -v "grep" | awk '{print $2}'`
  106. if [ "$P_ID" == "" ]; then
  107. echo "===AUTH process not exists or stop success"
  108. else
  109. kill -9 $P_ID
  110. echo "AUTH killed success"
  111. fi
  112. P_ID=`ps -ef | grep -w $WMS | grep -v "grep" | awk '{print $2}'`
  113. if [ "$P_ID" == "" ]; then
  114. echo "===WMS process not exists or stop success"
  115. else
  116. kill -9 $P_ID
  117. echo "WMS killed success"
  118. fi
  119. P_ID=`ps -ef | grep -w $MASTERDATA | grep -v "grep" | awk '{print $2}'`
  120. if [ "$P_ID" == "" ]; then
  121. echo "===MASTERDATA process not exists or stop success"
  122. else
  123. kill -9 $P_ID
  124. echo "MASTERDATA killed success"
  125. fi
  126. P_ID=`ps -ef | grep -w $LES | grep -v "grep" | awk '{print $2}'`
  127. if [ "$P_ID" == "" ]; then
  128. echo "===LES process not exists or stop success"
  129. else
  130. kill -9 $P_ID
  131. echo "LES killed success"
  132. fi
  133. P_ID=`ps -ef | grep -w $JOB | grep -v "grep" | awk '{print $2}'`
  134. if [ "$P_ID" == "" ]; then
  135. echo "===JOB process not exists or stop success"
  136. else
  137. kill -9 $P_ID
  138. echo "JOB killed success"
  139. fi
  140. echo "===stop success==="
  141. ;;
  142. restart)
  143. $0 stop
  144. sleep 2
  145. $0 start
  146. echo "===restart success==="
  147. ;;
  148. esac
  149. exit 0

3.5.1 SSH私钥公钥配置

1、生成私钥和公钥,在Jenkins服务器下输入 ssh-keygen -t rsa

2、一路回车,可以看到私钥id_rsa 和 公钥id_rsa.pub 生成在/root/.ssh/文件夹下

3、把私钥id_rsa中的内容放在Jenkins中,公钥id_rsa.pub的内容放在远程服务器上的authorized_keys文件中

(1)把私钥id_rsa的内容复制到 Jenkins中,Dashboard->Manage Jenkins->Configure System 中的key下;Path to key下填写私钥的路径;

(2)在 Jenkins的Dashboard->Manage Jenkins->Configure System中配置远程服务器信息;信息配置完成后,点击“Test Configuration”测试连接情况,弹出“Success”说明配置成功

 name:服务器名称(根据自己习惯填写即可)

Hostname:服务器IP地址

Username:服务器登录用户名

Remote Directory:远程服务器上要部署包存放的位置(这里可以不填,在Jenkins任务的配置中填写也行,个人建议在任务的配置中填写,因为一个服务器可能部署多个包到多个位置)

(3)公钥id_rsa.pub放在远程服务器上的authorized_keys文件中,如果找不到authorized_keys这个文件,就在/root/.ssh/ 文件夹下创建这个文件,如果在远程服务器上找不到/root/.ssh/这个文件夹,直接在远程服务器上执行一下 ssh-keygen -t rsa,然后cd /root/.ssh/ 进入到该文件夹下执行 touch authorized_keys 创建authorized_keys文件,把公钥id_rsa.pub里的内容复制到authorized_keys文件中。

3.6 完成配置

 上述全部配置完成后,点击“保存”按钮,完成配置;

3.7 构建

 点击如图所示进行构建;

3.8 构建日志查看

(1)构建过程中的任务,直接点击左下角的进度条便可进入到控制台实时查看日志 

 (2)也可以直接点击 任务名称—》构建信息—》控制台输出,查看日志信息

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/550972
推荐阅读
相关标签
  

闽ICP备14008679号