本文接着上篇安装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服务器的对应位置找到该代码包

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

Jenkins+Maven+SVN+Nexus自动化部署代码实例的更多相关文章

  1. Jenkins+Ant/maven+Svn实现自动化部署,编译,运行,测试结果自动邮件通知

    Jenkins+Ant+Svn实现自动化部署,编译,运行,测试结果自动邮件通知

  2. Jenkins+Maven+SVN搭建自动部署、自动测试环境

    .打开http://10.3.15.78:8080/jenkins/,第一次进入里面没有数据,我们需要创建job,我们这有2个项目,需要创建2个job.http://10.3.34.163:9890/ ...

  3. jenkins+springboot+svn linux 自动化部署

    需要下载 publish over ssh 插件(远程上传项目到服务器) Maven Integration plugin 插件(构建maven项目) 然后将各种配置配置好 最终项目在服务器上的路径是 ...

  4. 基于Jenkins,docker实现自动化部署(持续交互)

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  5. Docker+Jenkins+Maven+SVN搭建持续集成环境

    Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...

  6. .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统

    .NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言     相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...

  7. 基于Jenkins,docker实现自动化部署(持续交互)【转】

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  8. IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)

    IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...

  9. Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署

    自动部署过程: jenkins从svn拉取代码,调用maven去打war包,用ansible去解压war包,最后重启tomcat. 前情回顾:在前面的文章我的环境已经有Jenkins+ansible ...

随机推荐

  1. MySQl新特性 GTID

    GTID简介 概念 全局事务标识符(GTID)是创建的唯一标识符,并与在源(主)服务器上提交的每个事务相关联.此标识符不但是唯一的,而且在给定复制设置中的所有服务器上都是唯一的.所有交易和所有GTID ...

  2. Django之url映射

    url映射的作用 根据Django的MTV模式,url的映射是根据用户输入或传送而来的url路径,来进行区分去执行相应的view函数来响应用户的操作. url映射的方式 Django项目的创建后,会自 ...

  3. 实现CTreeCtrl父子节点的联动选择

    本文实现了下面的功能: 当选中父节点时, 其所有子节点全部选中. 当取消选中父节点时, 其所以子节点全部取消选中. 点击子节点时, 根据子节点与其兄弟节点的选中状态, 自动设置父节点的选中状态. 通过 ...

  4. 8.1Solr API使用(分页,高亮)

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 一.Solr Deep Paging(深分页) 长期以来,我们一直有一个深分页问题.如果直接跳到很靠后的页数, ...

  5. rebase合并commit步骤详解

    网上关于rebase合并commit有很多文章,但大部分中间一些步骤没有写明 第一步:在终端输入 git rebase -i [startPoint] [endPoint] 并回车 第二步:编辑指令, ...

  6. undefined symbol: ap_log_rerror;apache2.4与weblogic点so文件

    没法子啊:只能用 httpd-2.2.26 ============================== https://www.google.com.hk/#newwindow=1&q=un ...

  7. extern C的用法解析

    1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程式语 ...

  8. HDU1232

    https://vjudge.net/problem/HDU-1232 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都 ...

  9. day38

    今日内容: 1.认识数据库 2.修改默认密码 3.常用操作指令 1.认识数据库 什么是MYSQL? 是一个关系型数据库管理系统,基于socket编写的C/S架构的软件 什么是数据库? 数据:用于记录事 ...

  10. python在输出一段话中插入多个变量,每日作业补充

    %s用来插入用户输入的值name=input('请输入您的姓名:')age=input('请输入您的年龄:')sex=input('你的性别:')print('-------您好!%s------\n ...