jenkisn的简单使用介绍

简介:

新建jenkins项目

登入jenkins后选择最上角的新建

wKiom1lQpBjA2wBYAAEkyn4GEfQ744.png

输出项目名后选择下面的项目风格。当你无法确定的时候选择自由风格即可。

配置jenkisn项目

项目配置一共有6步操作

General,源码管理,构建触发器,构建环境,构建,构建后操作

一、General综合

这步主要是定义项目名,项目的权限管理,构建项目数的保存天数或个数以及局部参数定义。

A、项目权限管理

wKioL1lQpCzhK8JXAABWHoR9MIw964.png

勾选“启动项目安全”,添加需要授权的用户名。然后给用户设置项目访问权限。这个权限设置的级别是低于“系统管理”中的权限设置。

B、构建项目数

wKiom1lQpD7C7eZEAAA71ubwU00361.png

这块是用户保存项目构建的保存时间。当构建最大个数为10 的时候,构建历史中将会保存10个历史版本,方便后面的回滚操作。

wKioL1lQpE6DtVmnAAA0SSp0fag795.png

C、参数定义

勾选参数化构建,定义你需要的参数,方面后的脚本需要。(本文中使用的源码库是git

wKioL1lQpHayPRTlAABp8jhbZ4M300.png

Git分支参数:Branch,回滚参数:Rollback,项目参数:ProjectName等等,可以根据需要自己定义参数。此参数自在此项目中有效。

D、JDK版本选择

此项目是java项目,需要用到maven编译。Jdk的版本一定要选择正确。Jenkins服务器可以安装多个版本的jdk。在“系统管理”-Global Tool Configuration”中选择jdk安装

wKiom1lQpInCkxGGAAA6lXEUhR8780.png

设置JDK的安装目录。

在此处要选择开始使用的jdk版本,版本不同可能导致很多奇怪的问题。

wKioL1lQpJnCOxWjAAAcES7AOAM681.png

三、源码管理

这里采用的源码是git

wKioL1lQpKqQ3z4eAABWyLTQpXc912.png

此处选择项目的git代码路径及登入账号密码,也可以使用ssh免密方式。分支选项使用上面定义的参数“Branch”。

其他无需配置

四、构建环境

因为构建触发器没有使用到,这里不做介绍。

勾选Delete workspace before build starts”,每次构建删除jenkins数据目录下本项目上次的构建workspace

五、构建

为了让回滚更加方便快捷,此处不单独使用maven编译选项,而是把maven编译命令放在execute shell中执行。

wKioL1lQpLzwwXQgAABQGb3KkG4959.png

首先判断RollBack这个参数是否传值。默认是为空。如果RollBack不为空则跳过编译步骤直接下一步。RoolBack参数在构建项目的时候传值的

wKioL1lQpMzD78k9AABqKEItTRY138.png

Execute shell脚本中定义了一个参数buildName,这个参数是为了更改构建历史中buildID的名称是设定的

wKioL1lQpNqwQ74sAAA0SSp0fag737.png

只显示buildID,反馈的信息很少。适当的时候我们需要添加点额外的信息。

wKiom1lQpOrwEi8dAAAh19ss5vE029.png

脚本中我们把buildName放到一个文件中,在这个配置中我们从这个文件中获取数据更新buildID

wKioL1lQpPjxqlAtAABs8gqB10g408.png

执行完脚本,java代码就编译好了,之后就是传输工作。我们采用的数据传输是SSH

wKiom1lQpQfgyAVJAACdldb1MWk634.png

SSH Server需要在“系统管理”-“系统配置”下配置

wKioL1lQpReRG9X6AAAeufJ00QQ544.png

Name:定义名称,最好按照一定格式命名。如果SSH Server比较多的时候不至于混乱

Hostname:主机IP

Username:运行容器的用户名

Remote Directory:目标服务器的数据存储路径

 

选择好SSH Server后配置“Transfers”,这个根据你的实际情况自己配置,传输完成后执行“Exec command”,里面的脚本是存放在目标服务器上,根据自己的需求定义。在deploy.sh脚本中设置获取“RollBack”参数作为回滚操作。

下面是deploy.sh脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
# ProjectName="cloudfactory"
# TomcatName="tomcat_cloudfactory_8080"
# BasePath="/data/websrv"
#                    $1             $2           $3         $4           $5
# sh deploy.sh ${ProjectName} ${TomcatName} ${BUILD_ID} ${BasePath} ${rollbackNo}
  
ProjectPath= "$4/builds/$1"
TomcatPath= "$4/$2"
LogFile= "upgrade.log"
TomLog= "tomcat.log"
  
if  "$5"  !=  ""  ] && [[  "$5"  =~ ^[[:digit:]]*$ ]];  then
     if  [ ! -d $ProjectPath/$5 ];  then
         echo  "rollback to $5 failed"
         exit  1
     else
         echo  "本次构建发布 执行了回滚操作 回滚编号为:$5"
         echo  "rollback to $5 edition"
         ln  -snf $ProjectPath/$5/$1 $TomcatPath /webapps/ROOT
     fi
else
     if  [ -L $ProjectPath /successful  ];  then
         LastSuccess=$( tail  -1 $ProjectPath/$LogFile)
         rm  -rf $ProjectPath /successful  &&  ln  -snf $ProjectPath/$3/$1 $ProjectPath /successful
     else
         ln  -snf $ProjectPath/$3/$1 $ProjectPath /successful
     fi
  
     echo  $3 >> $ProjectPath/$LogFile
  
     [ -d $TomcatPath /webapps/ROOT  -o -L $TomcatPath /webapps/ROOT  ] &&  rm  -rf $TomcatPath /webapps/ROOT
  
     if  [ -d $TomcatPath ];  then
         [ -L $TomcatPath /webapps/ROOT  ] ||  ln  -snf $ProjectPath /successful  $TomcatPath /webapps/ROOT
     else
         echo  "ERROR"  $1 $( date ) >> $ProjectPath/$TomLog &&  exit  1
     fi
fi
  
cd  $ProjectPath
ls  -dt * |  grep  '^[0-9]\{1,\}$'  awk  '{if(NR>10){print $0}}'  xargs  rm  -rf


上面的脚本中需要传入五个参数,其中$1,$2,$5是我们在General中定义项目参数;$3是jenkins的系统参数。

$4我们没有定义,这个参数是目标服务器存放代码的路径。需要定义全局变量。定义方式如下:

在“系统管理”-“系统设置”下的全局属性中设置,这个变量对所有项目有效

wKiom1lQyA_izRoDAAAobNrlojU541.png

运行完deploy.sh脚本后运行容器重启脚本,这个根据自己实际情况编写

Restart.sh脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
  
BASE_DIR=$( pwd )
rm  -rf $BASE_DIR /work/ *
rm  -rf $BASE_DIR /temp/ *
  
STATE=$( ps  -ef |  grep  $BASE_DIR |  grep  - v  grep  wc  -l)
if  [ $STATE != 0 ];  then
     ps  -ef |  grep  $BASE_DIR |  grep  - v  grep  awk  '{print $2}'  xargs  kill  -9
     echo  "$BASE_DIR kill success!"
else
     echo  "$BASE_DIR pid not exsit!"
fi
  
mv  $BASE_DIR /logs/catalina .out $BASE_DIR /logs/catalina .last
sh $BASE_DIR /bin/startup .sh
  
STATE=$( ps  -ef |  grep  $BASE_DIR |  grep  - v  grep  wc  -l)
if  [ $STATE != 0 ];  then
     echo  "$BASE_DIR startup success!"
else
     echo  "$BASE_DIR startup failed, please check you config!"
fi
  
echo  "[INFO] ------------------------------------------------------------------------"
echo  "Show $BASE_DIR process status!"
ps  -ef |  grep  - v  grep  grep  --color=auto $BASE_DIR
echo  "[INFO] ------------------------------------------------------------------------"


 


本文转自 irow10 51CTO博客,原文链接:http://blog.51cto.com/irow10/1941935,如需转载请自行联系原作者

相关文章
QWebEngineView简单使用
QWebEngineView是提供一个访问web页面的widget,这里是一个简单的使用代码
168 0
ApplicationEventPublisher的简单使用
ApplicationEventPublisher的简单使用
414 0
MPPlayer的简单使用
MPPlayer的简单使用
204 0
|
Web App开发 存储 监控
【ChromeDevTool】Performace的简单使用
【ChromeDevTool】Performace的简单使用
113 0
【ChromeDevTool】Performace的简单使用
|
测试技术 数据安全/隐私保护