使用Jenkins配置Git+Maven的自动化构建

背景

最近安装Jenkins,参照网上的各种资料进行尝试,折腾了好久,但是查找了这么多资料,相似度在90%以上!!!,相同的安装过程,测试了几台机器,未曾成功,不得不感慨自己能力有限,最终慢慢摸索,形成思路,现分享给大家,希望大家在安装的时候少走弯路。

PS:本人很痛恨这种粘贴复制,毫无思考的博主,不但浪费了大家的时间,还浪费了大家的感情。

知识背景

首先需要理解的是,Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。

意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其宿主服务器(就是Jenkins的安装位置),进行编译、打包和发布到容器中。

因此我们可以注意到的是,在Jenkins的宿主服务器中必须要有可以进行:代码clone(Git)、代码编译(Maven)、代码运行(Tomcat)这些基本的组成。

下边就开始讲解各部分的安装过程,如果已经某一步则可以进行下一步

一、Git的安装

1、安装依赖

sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

注意:perl-ExtUtils-MakeMaker 也是这些安装列表中的一员,不要因为显示的换行造成大家认为是两条执行命令。

2、下载Git

选择一个目录,存放下载的git,例如我的是:/home/xuliugen/tmp

wget https://github.com/git/git/archive/v2.3.0.zip

3、解压git

下载之后是这样的,不要感到奇怪,直接解压即可

因为下载的是一个zip,所以使用命令将其解压到git目录下:

#参数-d 后边的是解压到的目录
unzip v2.3.0 -d git 

4、编译安装git

进入git目录

将其安装在“/usr/local/git”目录下,命令如下:

make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install

5、配置Git

sudo vim /etc/profile #编辑profile文件

然后而已看到这个文件已经有很多配置了,只需要在最下边添加git的路径即可:

export PATH=/usr/local/git/bin:$PATH

将这段话放在最后边,然后使用source命令应用修改:

source /etc/profile

6、检验Git是否安装成功

git --version

二、Maven安装

1、下载和解压Maven

Maven的安装包下载地址:

解压之后,我的位置是:

2、配置Maven

编辑:~/.bash_profile文件,根据注释相应的修改即可

# maven所在的目录
export M2_HOME=/home/xuliugen/software/maven/apache-maven-3.3.3
# maven bin所在的目录
export M2=$M2_HOME/bin
# 将maven bin加到PATH变量中
export PATH=$M2:$PATH
# 配置JAVA_HOME所在的目录,注意这个目录下应该有bin文件夹,bin下应该有java等命令
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0

然后运行:source ~/.bash_profile

3、查看Maven是否安装成功

使用:mvn -version 即可查看结果

三、Jenkins的部署

Jenkins的安装很简单,直接将war放到容器中进行运行即可

1、将jenkins放到Tomcat中并解压,启动Tomcat

启动成功之后,进入的界面如上,表示启动成功。

2、安装插件

在进行配置之前,由于使用的是Git拉去代码的方式,所以要首先安装插件

找到:插件管理 在“可选插件”界面使用ctrl+f 搜索:Deploy to container Plugin 插件(这个是支持将代码部署到tomcat容器的)

勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可。

成功之后的截面为:

然后安装:GIT plugin,使用上述的方式,由于网络的原因,会安装失败,这就需要我们使用另一种方式进行安装

使用同样的方式在“可选插件”中搜索GIT plugin,找到之后点击蓝色链接(最好右键在新窗口中打开)

会跳转到Git Plugin的信息地址

可以看到Plugin ID为:git,然后在:http://updates.jenkins-ci.org/download/plugins/ 这地地方搜索即可找到,点进去,选择一个版本进行下载:

点进去下载的是一个hpi文件

然后同样的在:系统管理–管理插件–高级Tab中,下拉可以看到上传插件,然后选择文件上传刚才下载的hpi文件,即可,上传完之后,会自动安装。上述安装Deploy to container Plugin的方式也可以采用这种方式。

都安装完之后,在已安装Tab中可以看到刚安装的插件:

3、进行配置

看到上图中的左侧有一个:系统管理 点击去

上边的第一行黄色信息,表示编码问题,在Tomcat的conf–》server.xml文件中修改即可

4、Jenkins系统设置

点击:系统设置,这里没有强调的都设置为默认即可

(1)JDK,别名是任意的

(2)Git 的配置

注意这里的git位置,是可执行文件的地址,即是git–bin–下的可执行文件 git的目录(类似于java中bin下的java可执行文件位置)

如果填错,后期回报无法找到git等错误,请大家注意!

(3)Ant的配置

由于本次并没有用刀Ant,不做配置

(4)Maven的配置

(5)Jenkins Location

这里配置的是ip加端口和一个路径名称,邮箱要进行设定

(6)邮件通知

这里我配置的QQ邮箱,大家根据情况进行设置,用户名、密码分别为自己的QQ邮箱何密码

最后点击下边的应用 保存即可

5、Configure Global Security

然后回到系统管理,看到Configure Global Security 点击进去,根据下边进行配置即可

点击应用 保存之后,然后在屏幕的右上角,有一个登录-注册 ,点击注册即可实现用户的登录。

至此Jenkins的基本配置完成。

创建Job

1、创建项目

点击登录之后,会看到下边的界面中:My Views

点击进去

点击 创建一个新任务

选择maven项目,点击OK

2、进行项目的配置

(1)源码管理选择Git,这个时候添加url之后,下边会报错,显示让去认证,认证即可(其他的安装中又遇到这个问题)

(2)构建触发器

选择第一个,其他的基本是定时执行什么的

(3)Post Steps

选择上图中的,然后下边 的Execute shell如下:

#!/bin/bash
#copy file and restart tomcat 

export JAVA_HOME=/data/home/server/jdk
export CATALINA_HOME=/home/xuliugen/dubbo-provider
export CATALINA_BASE=/home/xuliugen/dubbo-provider
export BUILD_ID=dontKillMe

tomcat_path=/home/xuliugen/dubbo-provider
project=dubbo-provider
war_name=dubbo-provider.war
war_path=http://132.153.131.237/:8022/jenkins/job/ManenDemo/ws/targetserver_port=8082
file_path=~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target

$tomcat_path/bin/shutdown.sh 

sleep 3s 

echo "rm -rf ${tomcat_path}/webapps/ROOT/*"

rm -rf ${tomcat_path}/webapps/ROOT/*

cd $file_path

cp ${war_name} ${tomcat_path}/webapps/ROOT/

cd $tomcat_path/webapps/ROOT/

unzip ${war_name}

rm -rf ${war_name}

sleep 5s 

#$tomcat_path/bin/startup.sh

cd $tomcat_path/bin/
./startup.sh

echo "server restarted"

(4)邮件通知

至此基本设置完毕,点击应用 保存

(5)立即构建

点击左上角的立即构建

然后看到下边的Build History 点击 蓝色的进去,会进入Console

脚本的分析

在Jenkins的服务器上查看:

可以看到在/root/.jenkins这个目录,实际存放了Jenkins拉取Git代码之后编译好war的位置,到此,大家也许都该明白了,编译后的位置就在这里啊!然后,接着是部署到Tomcat容器中,如何将编译好的war放到tomcat中,这就需要脚本来完成,也是上述过程中配置的过程,下边对一行进行分析。

首先我们应该明白,将编译好的war放到tomcat容器中,我们首先要知道这两个的位置,很显然我们是知道的。

1、脚本文件的头,这个没得说

#!/bin/bash 

2、环境变量设置

export JAVA_HOME=/data/home/server/jdk
export CATALINA_HOME=/home/xuliugen/dubbo-provider
export CATALINA_BASE=/home/xuliugen/dubbo-provider
export BUILD_ID=dontKillMe

上边的各个位置,大家也许都知道,CATALINA_HOME和CATALINA_BASE的位置就是Tomcat容器的位置,这里根据需求我将Tomcat容器的名字改为dubbo-provider了,如果改成/home/xuliugen/tomcat是不是更好理解。

export BUILD_ID=dontKillMe这一句很重要,因为该job启动完后执行下一job,jenkins直接把tomcat进程杀了,所以无论脚本中怎么写了启动tomcat的命令,他是不会启动的。

3、其他位置

tomcat_path=/home/xuliugen/dubbo-provider #我的Tomcat位置
project=dubbo-provider #我的项目编译的名称
war_name=dubbo-provider.war  #最后打包的war名称
war_path=http://132.153.131.237/:8022/jenkins/job/ManenDemo/ws/targetserver_port=8082
file_path=~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target

这个:war_path 其实也就是Jenkins的宿主服务器位置IP,端口为jenkins运行的端口,大家只需要将ip地址端口ManenDemo换成自己的即可;

file_path:就是Jenkins帮我们编译好的项目war的位置,上图中大家也可以看到

4、耳熟能详的执行命令

下边就是我们在使用原始方式,部署war的命令,大家很简单的可以理解,其中:

我是假设项目已经在运行的情况下,所以我上来就是先关闭Tomcat,正确的方式,应该判断端口是否打开,如果本身tomcat未启动,所以我的这种情况,会在Jenkins的Console中报连接失败的问题。

另外用到了sleep 3s 这个可以让线程休眠一下,这样的话可以看一下tomcat的日志信息。

$tomcat_path/bin/shutdown.sh
sleep 3s
echo "rm -rf ${tomcat_path}/webapps/ROOT/*"
rm -rf ${tomcat_path}/webapps/ROOT/*
cd $file_path
cp ${war_name} ${tomcat_path}/webapps/ROOT/
cd $tomcat_path/webapps/ROOT/
unzip ${war_name}
rm -rf ${war_name}
sleep 5s
cd $tomcat_path/bin/
./startup.sh
echo "server restarted"

其他问题

1、部署项目的时候报错

这个大家很好理解,是因为下载jar失败的问题,由于是第一次使用Maven,需要第一次下载很多jar到Maven仓库中,由于网络的问题下载失败,大家可以多次构建让他重新下载,或者直接到:https://repo.maven.apache.org/maven2 根据报错的jar,在maven2中找到自己确实的jar,然后在/root/.m2/repository 相应的位置添加jar即可。

2、编写脚本文件启动tomcat但是项目仍然运行不起来

激素hi上边说道的问题了:

export BUILD_ID=dontKillMe,因为该job启动完后执行下一job,jenkins直接把tomcat进程杀了,所以无论脚本中怎么写了启动tomcat的命令,他是不会启动的。

至此,Jenkins的部署完成,希望对大家有所帮助。

时间: 2024-12-09 19:37:19

使用Jenkins配置Git+Maven的自动化构建的相关文章

【转】Jenkins配置Git push后自动构建

[实战]Jenkins配置Git push后自动构建 # 前言   Jenkins 持续构建集成是软件版本迭代的一大利器,对于前端攻城狮来说,本身对服务器的接触就少,也并不愿意去做这个事.Jenkins持续构建省去了繁琐的服务器替换包的过程,同时有历史构建记录和每次构建的变更记录,这为我们回退和检查构建情况提供了便利.   本文假设你已经搭建了一些基础环境,如Git环境,Node环境等.如未处理请自行百度 # Jenkins配置步骤 1. 在Jenkins中进入你要配置自动构建的项目 要设置自动

jenkins+git+maven搭建自动化部署项目环境

简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky-        lulu/cxf_demo-Maven-Webapp)     系统:centos6.5 maven: Apache Maven 3.3.9 git:git version 2.0.0 1.首先安装git,看以前另外一篇博客 http://www.cnblogs.co

linux服务器中Jenkins集成git、Gradle持续构建Springboot项目

Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用.本章教大家如何在linux服务器中使用Jenkins自动发布一个可作为linux服务发布的Springboot项目. 自动构建需要经过如下步骤:从git仓库下载代码.使用Gradle进行构建.使用SSH推送到另一台linux服务器.项目作为linux服务启动.本章将逐条仔细讲解. 一.获得一台linux服务器 要在linux下搞持续构建,首先你得先有一台linux服务器,作为小白,手头的机器肯定都是windows的,搞

jenkins git gradle android自动化构建配置

需要安装软件(jenkins所在服务器): gradle.SDK 一.gradle安装(服务器部署的gradle版本需要等于或高于开发环境的gradle版本) 1.下载地址:http://services.gradle.org/distributions   (gradle-2.14.1-all.zip) 2.上传到linux并解压: unzip gradle-2.14.1-all.zip 3.配置环境变量: export GRADLE_HOME=/home/cfjekins/gradle/gr

Docker微服务-Jenkins+Gitlab+Maven+Shell自动化构建实施案例

* 环境:CentOS7代码仓库:Gitlab持续集成代码更新:Jenkins构建打包:Maven镜像自动交付脚本:Shell 基础环境软件安装:Gitlab.Jenkins.Maven配置,安装参考网上,这里安装略,重点介绍项目持续集成和镜像交付.结合上一博文:https://blog.51cto.com/10874766/2353577这里配置了两个基础服务容器的自动化构建,一个常规业务服务容器的自动化构建,其他的容器服务持续集成类似操作,这不做重复操作. * 创建基础持续集成项目-conf

使用jenkins配置.net mvc5网站自动构建全过程记录

持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了.最终可以实现的一个效果是,svn提交代码,服务器端自动编译并发布. 所使用的版本:windows server 2008 r2,并使用它自带的iis服务器. 1.机器上安装好.net framework 4.5及.net framework 4.5 sdk(下载地址:https://msdn.microsoft.com/zh-cn/windows/hardware/hh852363),如果你的机器上已经安装好了vs

使用jenkins配置.net mvc网站自动构建

最近好久没有更新文章了,因为好久没有写代码了,以至于我不知道同大家分享些什么,刚好,今天突然叫我学习下jenkins每日构建,我就把今天的学习笔记记录下来,这其中很多东西都是公司同事之前调研总结的,我在他的基础上进行了更加详细的整理,并自己一步一步的对着实现了一下. 环境准备 下载jenkins的windows版本 http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/windows/jenkins-1.650.zip 当然,你可以从官网 http://

Jenkins Pipeline+Docker实现流水线自动化构建(上百个项目共用一个脚本方案)

Jenkins Pipeline是一套插件,支持将连续输送Pipeline实施和整合到Jenkins.Pipeline提供了一组可扩展的工具,用于通过PipelineDSL为代码创建简单到复杂的传送Pipeline. 对于单个项目来说,使用这样的Pipeline来构建能够满足绝大部分需求,但是这样做也有很多缺陷,包括: 多个项目的Pipeline打包脚本不能公用,导致一个项目写一份脚本,维护比较麻烦.Jenkins提供了一个更优雅的管理Pipeline脚本的方式,在配置项目Pipeline的时候

Jenkins+Jdk+Git+Maven持续集成部署Weblogic实例项目

通过Jenkins部署Weblogic项目前,服务器需要提前安装好Weblogic服务,Weblogic服务搭建请百度或者在博客园搜索我的帖子"Weblogic服务搭建" 登录Jenkins http://IP或域名:8080 先构建一个"Build项目" 左侧导航栏,选择"新建任务",然后输入一个任务名称,自定义,选择第二项"构建一个maven项目",点击确定. General 勾选"丢弃旧的构建" 勾选