jenkins安装部署及项目构建部署详解

使用jenkins部署项目,可以说在一定程度上解放了人力反复部署的困扰,但它的功能绝不仅于此。下面开始jenkins的学习之旅

一. jenkins介绍

Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:

  1、持续的软件版本发布/测试项目。

  2、监控外部调用执行的工作。

二.为什么要使用jenkins(jenkins的优点)

    1 、jenkins易于使用,用户界面简单,直观
    2、 jenkins具有良好的扩展性,能够及其灵活和方便的迎合你的想法,因为其有数以千计的插件可供使用
    3 、开源的活跃度高

三.jenkins的安装及遇到的问题

1.安装jenkins的两种方式:

①把war包部署在servlet容器中。例如:tomcat  ②使用命令直接运行war包

第一种:

   1、由于Jenkins是基于Java开发的,安装前确认操作系统已经安装了jdk,参照:【Linux】 JDK安装及配置 (tar.gz版)

  2、从官网下载jenkins的war包,地址https://jenkins.io/,(注意下载的版本要与jdk的版本对应)

  3、按jenkins.war包放在tomcat(tomcat安装:【Linux】Tomcat安装及一个服务器配置多个Tomcat)下面的webapps下面

  4、启动tomcat。tomcat会解压war包,生成一个jenkins文件夹,而且会在root目录下生成一个.jenkins的文件夹。 如下图:

 

 

第二种:

    这种也是我采用的方式,即将下载的jenkins.war包以单独的端口应用启动,

如:在安装目录下 java -jar jenkins.war  --httpPort 指定的端口(因为默认端口是8080,不指定的情况下报端口占用异常)

将jenkins.war放在服务器指定位置后,启动如上图(此时只有jenkins.war一个文件)

此时,可以在浏览器中打开jenkins页面:

为了确保管理员安全地安装Jenkins,密码已写入到日志中,一般会在服务器的/var/lib/jenkins/secrets/initalAdminPassword

输入密码,即进入选择插件安装界面,选择第一个(Install suggested plugins)

  

  

 插件安装完成之后,需要创建第一个用户

  创建用户之后,就可以使用jenkins了

  

备注

  1)如果插件安装失败,可以去镜像地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins,手动下载,然后通过插件管理中的高级,进行上传

  

  2)如果管理员密码忘记并且没有创建新用户的条件下,参考https://blog.csdn.net/kongguyouxiang/article/details/61919263

2.jenkins相关命令

①启动jenkins

  使用内置的jetty服务器启动

        java -jar jenkins.war --httpPort=3333  随着终端关闭即停止(不推荐)

        nohup java -jar jenkins.war --httpPort=3333  不挂断的执行(推荐)

  借助其他应用服务器,如:tomcat

②关闭jenkins

  通过命令行 ps -ef|grep jenkins  使用kill -9 PID 强制关闭进程

  通过页面:

③重启jenkins

jenkins启动后,在网址栏输入http:/IP:端口/restart,点击确认后,即可完成重启jenkins

④重新加载jenkins配置信息

jenkins启动后,在网址栏输入http:/IP:端口/reload,点击确认后,即可完成重新加载jenkins配置信息

三.jenkins构建项目过程及所遇问题

1.构建项目过程

点击新建Item

选择创建一个自由风格的项目,如果工作空间中有类似的项目,可以利用下面的"复制"功能。

关于启动项目脚本BUILD_ID=pleaseDontKillMe的解释参看https://blog.csdn.net/qq_25559693/article/details/72844340

 启动时run.sh文件如下:

#!/bin/sh
#由export关键字处理过的变量叫做环境变量
export PARA1=$1
#如果是参数化构建项目,工作空间内需根据参数找到对应JAR包位置。例如:SxtV01.01.01
export para2=$2
#用” [ ] “来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
if [ ${PARA1}_BLANK == _BLANK ]; then
    echo '------------------------------------------------------------------------------------'
    echo '--                     显示爱税融2.0相关应用的启动情况                            --'
    echo '------------------------------------------------------------------------------------'
    ps -ef |grep '0.0.1-SNAPSHOT.jar' | grep -v 'grep'
    echo '------------------------------------------------------------------------------------'
	#echo  打印内容
	#exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;
	exit 1
fi

export WS_PATH=/root/.jenkins/workspace
export JAR_NAME=${PARA1}-0.0.1-SNAPSHOT.jar
export JAR_PATH=EMPTY

if [ ${PARA1}_BLANK == uums_BLANK ]; then
	JAR_PATH=${WS_PATH}/uums_8088/uums/target
fi

if [ ${PARA1}_BLANK == gateway_BLANK ]; then
        JAR_PATH=${WS_PATH}/gateway_8666/${para2}/target
fi
if [ ${PARA1}_BLANK == ixinnuo_sxt_BLANK ]; then
        JAR_PATH=${WS_PATH}/sxt_8070/target
fi
if [ ${JAR_PATH} == EMPTY ]; then
	echo 参数[${PARA1}]错误
	exit 1
fi

export JAR_FULL_NAME=${JAR_PATH}/${JAR_NAME}

echo 准备杀死${PARA1}进程...
#命令详解参考:https://blog.csdn.net/u____/article/details/79859503
ID=`ps -ef |grep ${JAR_NAME} | grep -v grep | awk '{printf $2}'`
echo $ID
echo "--------------------------------"
kill -9 $ID
echo "kill $ID donw"
echo "--------------------------------"
sleep 1s

echo 准备启动${PARA1}服务...
\cp -f  ${JAR_FULL_NAME} ${WS_PATH}/${JAR_NAME}
#chmod 777  文件或目录  表示目录权限被修改为777(可读,可写可执行)   (操作文件或目录的用户,有3种不同类型:文件所有者、群组用户、其他用户 三个7对应三种用户)
chmod 777 ${WS_PATH}/${JAR_NAME}
echo "nohup java -jar ${WS_PATH}/${JAR_NAME} > ${WS_PATH}/${PARA1}.out &"
nohup java -Djava.io.tmpdir=/opt/gateway/tmp -jar ${WS_PATH}/${JAR_NAME} > ${WS_PATH}/${PARA1}.out 2>&1 &
#java -jar ${PARA1}-0.0.1-SNAPSHOT.jar
echo 启动结束. 

#exit 1
#exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0值,那么你的程序的使用者通常会认为你的程序产生了一个错误。

2.重点命令解读及所遇问题

重点为后面启动项目的几行命令,其中:

nohup java -Djava.io.tmpdir=/opt/gateway/tmp -jar ${WS_PATH}/${JAR_NAME} > ${WS_PATH}/${PARA1}.out 2>&1 &

  启动项目,(简略为     nohup java -jar xxx.jar >./log.txt  2>&1 &)命令具体解释如下:

①java -D设置JVM系统属性(java -D<name>=<value>设置jvm系统属性),其中tomcat临时目录ava.io.tmpdir修改

为什么要修改tomcat临时指定目录??

       springboot的应用服务在启动的时候,会生成在操作系统的/tmp目录下生成一个Tomcat.*的文件目录(用于上传文件的临时目录,系统会清理 如:https://www.cnblogs.com/ldy-blogs/p/8509343.htmlhttps://www.jianshu.com/p/cfbbc0bb0b84

 -jar ${WS_PATH}/${JAR_NAME} >${WS_PATH}/${PARA1 }.out什么意思??

    ">"前面为jar包所在位置,之后为项目日志位置---默认输出文件修改为当前目录下${WS_PATH}/${PARA1 }.out文件

"2>&1"??

表示 错误和输出都传到nohup.out文件中,默认状态只把输出输出到nohup.out文件中

问题:Jenkins构建项目默认空间的更改:

1)首先,查看jenkins工作目录显示位置:

 点击系统设置

其目录为系统目录的根目录下,那么Jenkins工作空间目录是如何采用的呢??

      Jenkins默认的查找顺序是先是在操作系统的环境变量中查找名为“JENKINS_HOME”的环境变量,如果存在该变量,那么Jenkins就采用“JENKINS_HOME”中所指定的目录作为工作空间目录,但是我们在初次装好Jenkins时我们是没有配置“JENKINS_HOME”环境变量的,所以说Jenkins在找不到配置的“JENKINS_HOME”环境变量时就采用了默认的环境变量配置,系统根目录。
2)修改默认的工作空间目录(为避免默认的磁盘空间不够)

linuxä¸ä¿®æ¹jenkinsé»è®¤å·¥ä½ç©ºé´

 jenkins提供了三种更改默认空间的方法,这里使用第二种解决:

停止jenkins,添加环境变量,重启。
添加环境变量方法:
vi /etc/profile   (系统配置文件)
在文件最后添加JENKINS_HOME:
export JENKINS_HOME=/home/JenkinsWorkspace
使之立刻生效命令
source /etc/profile

     所有用户的shell都有权使用这个环境变量(/etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行)

    写到这里,实在发现自己在linux命令这块很不熟悉,以后有待加强!!!!

猜你喜欢

转载自blog.csdn.net/happyAliceYu/article/details/90719878