Jenkins+Maven+SVN+Nexus自动化部署代码实例

本文接着上篇安装jenkins,安装相关插件,使用咱们公司持续集成的测试环境实例进行演示linux

========= 完美的分割线 ==========web

1.安装jenkins的maven插件

若是要使用jenkins自带的maven插件进行打包,须要安装maven插件,较经常使用,不过我这边使用的是服务器上已经安装好的maven工具,因此该插件能够不安装shell

如下是经常使用的jenkins插件安装方法:以maven插件为例浏览器

进入jenkins的“系统管理”中的“插件管理”,选择可选插件的选项卡(个人已经安装好),查找关键字“Maven Integration”,以后勾选进行安装,安装完成,重启应用便可缓存

# 操做步骤以下图:tomcat

2.建立一个新的工程(project)

2.1.新建任务

1)选择项任务称和类型服务器

安装完maven插件,重启进入首页,点击新建任务,能够看到选项菜单多出一个“构建一个maven项目”,以下图:运维

键入一个项目名称(testweb),选中“构建一个maven项目”,点击确认便可maven

若是有已经存在的项目能够将配置文件进行复制,能够自动补全,以下图:svn

复制项目能够大大节省咱们构建一个完整项目集群的时间

2.2.详细配置任务细节

有多个选项卡供选择

1)General选项卡

# 设置通常功能,注释等

# 丢弃旧的构建,防止保留过多的代码包影响服务器性能,能够按照天数和代码包个数进行保留

2)源码管理选项卡

# 设置代码的拉取设置

这里选择svn代码库,须要填入svn的连接,增长个认证用户(建议对jenkins专门设置),

而后就是检出的选项,默认是尽量使用update更新,为了防止代码更新冲突,我这里设置老是全新检出(会多耗费必定时间和性能)

3.构建选项卡

# 设置构建工程时须要执行的命令,这些命令就是在服务器中正常执行的

构建时直接选择执行shell命令便可,而后将通常发布项目代码的脚本写上来就能够了,而后单击保存

附上一个个人代码发布脚本供参考:

#!/bin/sh
################################################
# This script is made by zhaoshuai on 20170509.#
# for update coinnice web             #
# if you have any question please contact QQ  #
################################################
############# BEGIN ##############
TIME=$(date +%Y%m%d-%H%M)
TOMCAT_DIR=/usr/local/tomcat1
WEB_ROOT=/www.coinweb.com
CODEDIR=tempdir
. /etc/init.d/functions

# Determine whether the package.
if [ ! -f "$1" -o -z "$1" ] 
   then 
      sleep 1
      action "Code deployment ......" /bin/false
      echo "Please confirm the <*.war>" 
      exit 1
   else
      echo "The <$1> will be deployed"
fi
if [ ! -d "$TOMCAT_DIR$WEB_ROOT" ] 
   then 
      sleep 1
      action "The specified directory <$WEB_ROOT> does not exist" /bin/false
      echo "Please confirm the <$WEB_ROOT>" 
      exit 1
   else
      action "The specified directory <$WEB_ROOT> exist" /bin/true
fi

# Stop the web server.
echo " "
echo "====== Start stop web server ======"
ps -ef | grep "$TOMCAT_DIR" | grep -v grep | awk '{print $2}' | sed -e "s/^/kill -9 /g" | sh -
sleep 1
action "Stop the web server ......" /bin/true

# Backup the web server
echo " "
sleep 1
echo "====== Start backup web server ======"
/bin/mv $TOMCAT_DIR$WEB_ROOT ./$TIME
sleep 1
action "Backup old web code ......" /bin/true

# Update the web server
echo " "
sleep 1
echo "====== Start deploying new code ======"
if [ -d ./$CODEDIR ]
   then
      echo "The \"$CODEDIR\" is exist"
   else
      mkdir -p ./$CODEDIR
      echo "The \"$CODEDIR\" is created"
fi
/bin/cp ./$1 ./$CODEDIR
cd ./$CODEDIR
jar xf $1 && /bin/rm -f $1
cd ../
/bin/mv  $CODEDIR $TOMCAT_DIR$WEB_ROOT

/bin/mv $TOMCAT_DIR/logs/catalina.out /tmp/tomcat1-$TIME.log
/bin/rm -rf $TOMCAT_DIR/logs/*
/bin/rm -rf $TOMCAT_DIR/work/*

# www.coinweb.com
#/bin/cp -rf ./$TIME/WEB-INF/classes/*.properties  $TOMCAT_DIR$WEB_ROOT/WEB-INF/classes/

#echo "====== Code has been deployed ======"
sleep 1
action "The new code deployment ......" /bin/true

# Start web server
echo " "
sleep 1
echo "====== Start the web server ======"
$TOMCAT_DIR/bin/catalina.sh start
ps -ef | grep "$TOMCAT_DIR" | grep -v grep
sleep 1
action "Start the web server ......" /bin/true

# Open web logs
#echo " "
#sleep 1
#echo "====== Open web server logs ======"
#tail -f $TOMCAT_DIR/logs/catalina.out
################## END ###################

2.3.构建一个项目

配置完工程便可发布项目代码,这里叫“构建工程”

单击“当即构建”,会在左下角“构建历史”标签中产生一个项目构建的进度条,点击图中的闪烁的圆点能够直接查看构建日志

能够在最开始看到正在构建这个项目的用户,构建时的文件缓存目录,时间,svn库连接等

下面能够看到,当前svn版本库的代码版本,能够判断是否更新到你提交的文件代码等

开头为加号的就是咱们以前写的shell命令

在往下的日志

若是全部的命令均正常执行完毕在最下面能够看到“Finished: SUCCESS”字样,以下图

不然就是“Finished: FAILURE”同时能够看到是在哪一步处的错方便排错

至此,一个单纯的jenkins构建项目的示例就完成了

3.注意信息:

1)建立的工程,配置文件在服务器的jenkins数据目录下的job目录中,以工程名testweb命名的目录中“/data/jenkins/jobs/testweb/”

2)构建项目时的缓存目录在数据目录下的workspace中,“/data/jenkins/workspace”

3)通常来讲jenkins代码发布平台和tomcat站点运行的位置不在同一台服务器须要考虑文件传输时的免密认证,本身作测试能够将tomcat与jenkins放置于同一台服务器

4)本文演示的是在整个持续集成平台中运维工程师能够操做的部分,如下操做须要与开发合做进行

构建Nexus私有库导入某些jar文件,本文没有展现

maven构建项目时须要用到的pom.xml配置文件

5)项目发布完成后能够在浏览器里找到打好的war包,存储位置在“工做空间”的“target”目录里

同时能够再linux服务器的对应位置找到该代码包

 

======= 完毕,呵呵呵呵 ======== 

相关文章
相关标签/搜索