爱游戏

 
 注册成为天翎用户
热搜:
查看: 1059|回复: 2

jenkins部署myapps4.1(linux)-爱游戏

[复制链接]
chain 发表于 2020-9-13 14:18:33 | |
1.安装java jdk

1.1把下载好的jdk 上传到自己创建的目录或者指定的目录中

1.2例如自己创建一个文件夹为java  使用命令 mkdir java

1.3解压上传的java jdk 使用  jdk-8u251-linux-x64.tar.gz

1.4配置java系统环境变量
  1. vi /etc/profile
  2. 在profile文件最后面加上;
  3. export java_home=/java/jdk1.8.0_251
  4. export path=$java_home/bin:$path
  5. export classpath=.:$java_home/lib/dt.jar:$java_home/lib/tools.jar
复制代码
1.5 重新加载环境变量
  1. source /etc/profile
复制代码


2.安装maven

2.1.1把下载好的maven上传自己创建的目录或者指定的目录中

2.1.2解压上传 maven
  1. tar -zxvf apache-maven-3.6.3-bin.tar.gz
复制代码
2.1.3配置maven系统环境变量
  1. vi /etc/profile
  2. 在profile文件最后面加上;
  3. export path=apache-maven-3.6.3-bin/bin:$path
复制代码
2.1.4 重新加载环境变量
  1. source /etc/profile
复制代码


3.安装jenkins

3.1 yum库的repo中默认没有jenkins,需要先将jenkins存储库添加到yum repos enkins的rpm仓库配置被加/etc/yum.repos.d/jenkins.repo

jenkins部署.jpg
  1. #添加jenkins官方repos
  2. sudo wget -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
  3. sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key #导入秘钥
  4. #安装jenkins
  5. yum install jenkins
复制代码
  1. vi /etc/sysconfig/jenkins
复制代码
注意:找到修改端口号:jenkins_port="8080"  此端口不冲突可以不修改

4.启动jenkins
  1. service jenkins start/stop/restart
复制代码
4.1安装成功后jenkins将作为一个守护进程随系统启动

4.2系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者

4.3启动的时候将从/etc/sysconfig/jenkins获取配置参数

4.4默认情况下,jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置



5.打开jenkins界面

5.1在浏览器中访问  我的地址是这个:192.168.88.215:8080

首次进入会要求输入初始密码如下图:


jenkins部署01.jpg


初始密码在:
  1. /var/lib/jenkins/secrets/initialadminpassword
复制代码
选择“install suggested plugins”安装默认的插件,下面jenkins就会自己去下载相关的插件进行安装。

jenkins部署02.jpg

jenkins部署03.jpg

创建超级管理员账号

jenkins部署04.jpg

jenkins部署05.jpg

配置完毕后前端打开的界面是这个样子的:


jenkins部署06.jpg

6.配置全局环境变量设置

6.1进入:系统管理 / global tool configuration

jdk 下不勾选“自动安装”,指定别名=jdk1.8.0_215  java_home=/usr/java/jdk1.8.0_215

jenkins部署07.jpg

6.2 maven 配置:

maven 下不勾选“自动安装”,指定别名=maven-3.6.3, maven_home=/opt/apache-maven-3.6.3


jenkins部署08.jpg

7.插件说明和安装教程

subversion plug-in # 版本管理 svn 的插件

git plugin #版本管理 git 的插件

maven integration plugin #项目构建 maven 的插件

publish over ssh #实现文件上传到远程服务器

进入:manage jenkins / manage plugins / 可选插件

查找并勾选所需插件,点击“直接安装”;

无需重启 jenkins 插件即生效。如遇失败可重试或离线安装。


jenkins部署09.jpg

jenkins部署10.jpg

8.publish over ssh插件配置

8.1进入:manage jenkins / configure system  

jenkins部署11.jpg

我是使用密码的方式进行ssh服务器,在passphrase/password填写对应的密码即可,还有其他四项内容如下:

name是给sshserver自定义一个名称

hostname是ssh服务器的地址

username是ssh服务器的用户名

remote directory是需要上传文件到服务器的远程目录 直接写/即可

填写基本信息完成后可以点击test configuration测试下是否连接正常,信息都正确后点击应用apply,一个ssh服务器就配置好了,剩下的就是要在项目配置的时候使用已填的ssh服务器进行操作。


9.构建项目

jenkins部署12.jpg

jenkins部署13.jpg

确定后,配置项目的源码管理,构建触发器

jenkins部署14.jpg

jenkins部署15.jpg

9.1 module:指svn上的模块。一个任务中可以添加多个不同来源的svn模块。
注解:
repository url:svn代码仓库的地址。
credentials:访问svn代码仓库所需的账号密码。进入:manage jenkins / manage credentials 中添加svn对于的账号和密码
local module directory:svn检出到本机的文件夹路径
repository depth:需要检出的文件夹深度,一般设为infinity(配置文件夹下的所有文件,包括子文件夹)具体说明可见插件帮助。
ignore externals / additional credentials:未用到,不作说明。
check-out strategy:更新svn到本地的几种方式。建议使用 use 'svn update' as much as possible, with 'svn revert' before update (先放弃所有本地修改,然后尽可能进行svn更新。避免本地修改导致本地项目与代码仓库不一致)

通过插件进行svn更新的情况,插件可提供若干参数(svn版本号及svn路径),供其它shell或插件使用,可参考官方文档(注意当配置了多个模块时的参数名命名方式):

jenkins部署15.1.jpg

脚本方式(shell)
脚本方式下,只需了解svn所支持的命令列表,即可在shell中自行配置。其自由度相比插件更高,可以方便地对特殊需求进行处理。
常用命令包括:
检出  svn checkout
更新  svn update
取消本地修改 svn revert
清理本地项目 svn cleanup
向代码仓库新增文件 svn add
提交到代码仓库  svn commit
脚本方式下取得svn 版本号可以通过shell的sed命令:
  1. build_svn_version=`svnversion  ${clientpath} |sed 's/^.*://' |sed 's/[a-z]*$//'`
复制代码
上述语句中${clientpath}为本地svn项目的根目录(即包含了.svn隐藏文件夹的目录),build_svn_version存放了取出的svn版本号。

9.2build 设置
root pom: 指定 pom.xml 相对路径
goals and options: 指定 mvn 执行目标或选项,设置为
clean install -dmaven.test.skip=true

jenkins部署16.jpg

9.3post steps 设置
定制构建后的操作,通常选择“run only if build succeeds”,然后选择 send files or execute commands over ssh

jenkins部署17.jpg

jenkins部署18.jpg

注解:
name : 这里是自定义的ssh远程服务器,如果有多台,点击add post-build step 继续添加
source files : 源文件地址,相对地址
remove prefix : 忽略前缀路径
remote directory : 远程服务器要保存的文件目录
exec command : 直接写shell脚本,或远程服务器的脚本名称
  1. #!bin/bash
  2. tomcat_jenkins='/opt/tomcat/apache-tomcat-8.5.53/jenkins'
  3. tomcat_home='/opt/tomcat/apache-tomcat-8.5.53'
  4. tomcat_back='/opt/tomcat/apache-tomcat-8.5.53/back'
  5. project_warname='obpm'
  6. project_workspace='web-inf/workspace'
  7. project_uploads='uploads'
  8. tomcat_date=$(date ' %y-%m-%d_%h:%m')

  9. #echo '停止tomcat'
  10. monitor(){
  11.         echo "[$(date '%f %h:%m:%s')]"
  12.         #第一次检查,是否存在,然后尝试使用shutdown关闭tomcat
  13.         tomcatpid_1=$(ps -ef|grep tomcat |grep jdk | awk '{print $2}')
  14.         echo "tomcat的pid为:$tomcatpid_1"
  15.     if [ "$tomcatpid_1" ]
  16.                 then
  17.                 echo "=*=tomcat运行正常,现在关闭,并清空缓存"
  18.                 sh ${tomcat_home}/bin/shutdown.sh
  19.                 #第二次检查,shutdown结果,然后尝试使用kill关闭tomcat
  20.                 tomcatpid_2=$(ps -ef|grep tomcat |grep jdk | awk '{print $2}')
  21.                 if [ "$tomcatpid_2" ]
  22.                         then
  23.                         kill -9 $tomcatpid_2
  24.                         #第三次检查,kill结果
  25.                         tomcatpid_3=$(ps -ef|grep tomcat |grep jdk | awk '{print $2}')
  26.                         if [ "$tomcatpid_3" ]
  27.                                 then
  28.                                 echo "        tomcat进程kill失败,这个基本不可能"
  29.                         else
  30.                                 echo "        tomcat关闭成功for kill"
  31.                         fi
  32.                 else
  33.                         echo "        shutdown.sh停止tomcat成功"
  34.                 fi               
  35.         else
  36.                 echo "        tomcat之前并没有启动"
  37.         fi
  38.        
  39. }
  40. monitor
  41. #尝试清缓存/work/catalina
  42. if [ ! -d ${tomcat_home}"/work/catalina" ];
  43.         then
  44.         echo "/work/catalian不存在"
  45. else
  46.         rm -rf ${tomcat_home}"/work/catalina"
  47.         echo "/work/catalina存在,现已删除"
  48. fi
  49. #尝试清日志
  50. if ![ -f ${tomcat_home}"/logs/catalina.out" ]
  51.         then
  52.         echo "/logs/catalina.out不存在"
  53. else
  54.         cd ${tomcat_home}/logs
  55.         rm -rf *
  56.         echo "tomcat日志文件存在,现已删除"
  57. fi
  58. #尝试清缓存/conf/catalina
  59. if [ ! -d ${tomcat_home}"/conf/catalina" ]
  60.         then
  61.         echo "/conf/catalina不存在"
  62. else
  63.         rm -rf ${tomcat_home}"/conf/catalina"
  64.         echo "/conf/catalina存在,现已删除"
  65. fi

  66. #echo '备份obpm.war 备份obpm'
  67. cp ${tomcat_home}/webapps/${project_warname}.war ${tomcat_back}/${tomcat_date}.war
  68. cp -r ${tomcat_home}/webapps/${project_warname} ${tomcat_back}/${tomcat_date}

  69. #echo '删除文件'
  70. rm -rf ${tomcat_home}/webapps/${project_warname}.war
  71. rm -rf ${tomcat_home}/webapps/${project_warname}

  72. #echo '复制最新的项目war 到 webapps'
  73. cp ${tomcat_jenkins}/${project_warname}.war ${tomcat_home}/webapps/

  74. #echo '解压war'
  75. jar -xvf ${tomcat_home}/webapps/${project_warname}.war

  76. #echo '删除解压后的war文件中的 workspace'
  77. rm -rf ${tomcat_home}/webapps/${project_warname}/${project_workspace}

  78. #echo '删除解压后的war文件中的 uploads'
  79. rm -rf ${tomcat_home}/webapps/${project_warname}/${project_uploads}

  80. #echo '复制备份的项目 webapps 到 最新解压后的项目的webapps'
  81. cp -r ${tomcat_back}/${tomcat_date}/${project_warname}/${project_workspace} ${tomcat_home}/webapps/${project_warname}/${project_workspace}

  82. #echo '复制备份的项目 uploads 到 最新解压后的项目的uploads'
  83. cp -r ${tomcat_back}/${tomcat_date}/${project_warname}/${project_uploads} ${tomcat_home}/webapps/${project_warname}/${project_uploads}

  84. #echo '启动tomcat'
  85. sh ${tomcat_home}/bin/startup.sh
复制代码


source files必须配置为jar包的相对地址,此相对地址即workspace后面的地址(不包含workspace)
例如:目标文件路径是/var/lib/jenkins/jobs/xxx-web/workspace/target/xxx-web-1.1.war
那么你的
source files的值就是target/*.war
remove prefix就是target/
remote directory的值取决于jenkins -> configuration -> publish over ssh设置中的remote directory参数

jenkins部署19.jpg

jenkins -> configuration -> publish over ssh设置中的remote directory参数值拼上 任务构建-> post-build actions 的 remote directory参数值即为 远程服务器要保存的文件目录

9.4 手工触发构建
进入 my views, 右侧看到各个项目;
点击进入关注的项目,点击左侧的“立即构建”;

jenkins部署20.jpg

开始构建或构建完毕后,左下方列出每次构建的链接,点击进入某次构建;
点击左侧的“console output”,可查看构建日志,如有报错可以看到;


jenkins部署21.jpg
 楼主| chain 发表于 2020-9-13 14:59:56 |
10.报错排查记录

10.1远程启动tomcat报错:
  1. either the java_home nor the jre_home environment variable is defined
  2. at least one of these environment variable is needed to run this program
复制代码
10.2在执行jenkins 通过ssh远程操作重启tomcat时,出现了以上错误。明显是环境变量问题,但是服务环境变量是无误的。
有2种爱游戏的解决方案

10.3如果是在 /etc/profile 中导入的环境变量,那么在/root/.bashrc中加入相同环境变量
  1. export java_home=/home/jdk1.8.0_181
  2. export path=$java_home/bin:$path
  3. export classpath=.:$java_home/lib/dt.jar:$java_home/lib/tools.jar
  4. #并执行 使其用户的环境变量生效
  5. source /root/.bashrc
复制代码
10.4直接在重启脚本中加入
  1. #!/bin/sh
  2. export java_home=/home/jdk1.8.0_181
  3. export path=$java_home/bin:$path
  4. export classpath=.:$java_home/lib/dt.jar:$java_home/lib/tools.jar

  5. tomcat_path=$1bin

  6. echo "tomcat_path is $tomcat_path"

  7. pid=`ps aux | grep $1 | grep java | awk '{print $2}'`

  8. if [ -n "$pid" ]; then
  9.     echo "will shutdown tomcat: $pid"
  10.     $tomcat_path/shutdown.sh -force
  11.     sleep 5
  12. else echo "no tomcat process $pid"
  13. fi

  14. sleep 1

  15. $tomcat_path/startup.sh
复制代码

 楼主| chain 发表于 2020-9-13 15:01:41 |
原文转载:

文档版本: (1.28 mb, 下载次数: 490)
您需要登录后才可以回帖 登录 | 注册成为天翎用户

本版积分规则

||爱游戏 ( )

gmt 8, 2023-9-30 12:47

powered by x3.4

爱游戏 copyright © 2001-2020, tencent cloud.

返回列表
网站地图