使用jenkins部署项目,能够说在必定程度上解放了人力反复部署的困扰,但它的功能毫不仅于此。下面开始jenkins的学习之旅html
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工做,功能包括:java
一、持续的软件版本发布/测试项目。linux
二、监控外部调用执行的工做。web
1 、jenkins易于使用,用户界面简单,直观
二、 jenkins具备良好的扩展性,可以及其灵活和方便的迎合你的想法,由于其有数以千计的插件可供使用
3 、开源的活跃度高spring
①把war包部署在servlet容器中。例如:tomcat ②使用命令直接运行war包shell
第一种:浏览器
一、因为Jenkins是基于Java开发的,安装前确认操做系统已经安装了jdk,参照:【Linux】 JDK安装及配置 (tar.gz版)tomcat
二、从官网下载jenkins的war包,地址https://jenkins.io/,(注意下载的版本要与jdk的版本对应)安全
三、按jenkins.war包放在tomcat(tomcat安装:【Linux】Tomcat安装及一个服务器配置多个Tomcat)下面的webapps下面springboot
四、启动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
①启动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配置信息
点击新建Item
选择建立一个自由风格的项目,若是工做空间中有相似的项目,能够利用下面的"复制"功能。
关于启动项目脚本BUILD_ID=pleaseDontKillMe的解释参看http://www.javashuo.com/article/p-fysvrcqg-mc.html
启动时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值,那么你的程序的使用者一般会认为你的程序产生了一个错误。
重点为后面启动项目的几行命令,其中:
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.html,https://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文件中
1)首先,查看jenkins工做目录显示位置:
点击系统设置
其目录为系统目录的根目录下,那么Jenkins工做空间目录是如何采用的呢??
Jenkins默认的查找顺序是先是在操做系统的环境变量中查找名为“JENKINS_HOME”的环境变量,若是存在该变量,那么Jenkins就采用“JENKINS_HOME”中所指定的目录做为工做空间目录,可是咱们在初次装好Jenkins时咱们是没有配置“JENKINS_HOME”环境变量的,因此说Jenkins在找不到配置的“JENKINS_HOME”环境变量时就采用了默认的环境变量配置,系统根目录。
2)修改默认的工做空间目录(为避免默认的磁盘空间不够)
jenkins提供了三种更改默认空间的方法,这里使用第二种解决:
中止jenkins,添加环境变量,重启。
添加环境变量方法:
vi /etc/profile (系统配置文件)
在文件最后添加JENKINS_HOME:
export JENKINS_HOME=/home/JenkinsWorkspace
使之马上生效命令
source /etc/profile
全部用户的shell都有权使用这个环境变量(/etc/profile : 在登陆时,操做系统定制用户环境时使用的第一个文件 ,此文件为系统的每一个用户设置环境信息,当用户第一次登陆时,该文件被执行)
写到这里,实在发现本身在linux命令这块很不熟悉,之后有待增强!!!!