Jenkins+Maven+SVN+Nexus自动化部署代码实例
本文接着上篇安装jenkins,安装相关插件,使用我们公司持续集成的测试环境实例进行演示
========= 完美的分割线 ==========
1.安装jenkins的maven插件
如果要使用jenkins自带的maven插件进行打包,需要安装maven插件,较常用,不过我这边使用的是服务器上已经安装好的maven工具,所以该插件可以不安装
以下是常用的jenkins插件安装方法:以maven插件为例
进入jenkins的“系统管理”中的“插件管理”,选择可选插件的选项卡(我的已经安装好),查找关键字“Maven Integration”,之后勾选进行安装,安装完成,重启应用即可
# 操作步骤如下图:
2.创建一个新的工程(project)
2.1.新建任务
1)选择项任务称和类型
安装完maven插件,重启进入首页,点击新建任务,可以看到选项菜单多出一个“构建一个maven项目”,如下图:
键入一个项目名称(testweb),选中“构建一个maven项目”,点击确认即可
如果有已经存在的项目可以将配置文件进行复制,可以自动补全,如下图:
复制项目可以大大节省我们构建一个完整项目集群的时间
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服务器的对应位置找到该代码包
======= 完毕,呵呵呵呵 ========
本文版权归作者和博客园共有,如果感觉有用可以随意打赏,感谢支持,欢迎转载