Jenkins+Maven+SVN自动部署配置文档

基本

版本JenKins:2.19.1, Maven:3.1

环境要求:

  • Java 7
  • 256MB free memory
  • 1GB+ free disk space

Jenkins官网: https://jenkins.io/index.html

官方文档:https://wiki.jenkins-ci.org/display/JENKINS/Home

jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。

 

网上对于Jenkins1.x的资料较多,但是对于Jenkins2.x的资料较少,而这两个版本之间变化还是很大的。

 

 

下载后是一个war包(也可以选择windows installer包,最新版本目前没有提供)

将war包放进tomcat即可。

 

初始化配置

访问,如:127.0.0.1:8088/Jenkins

第一次要求输入密码,初始密码在${USER_HOME}\.jenkins\secrets\initialAdminPassword文件中查看。然后需要等到十来分钟,

Jenkins+Maven+SVN自动部署配置文档

等Jenkins初始化结束进入下一步。

Jenkins+Maven+SVN自动部署配置文档

选择安装建议的插件。接下来就是安装基本的插件(由于网速与服务器原因,比较慢。要等上几十分钟到几个小时)

Jenkins+Maven+SVN自动部署配置文档

这些推荐的插件,目前我们关心的是Subversion Plugin-in ,SSH Slaves Plugin。

 

可供选择的jenkins2 插件镜像列表:

Jenkins 所有镜像列表: http://mirrors.jenkins-ci.org/status.html

比如日本的镜像: http://mirror.esuni.jp/jenkins/, http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/, http://ftp.tsukuba.wide.ad.jp/software/jenkins/

德国的镜像: http://jenkins.mirror.isppower.de/ , http://mirror.yandex.ru/mirrors/jenkins/

官方的镜像: http://mirrors.jenkins-ci.org/, http://archives.jenkins-ci.org/

 

然后会提示设置管理员用户和密码,如下:

Jenkins+Maven+SVN自动部署配置文档

 

进入jenkins

经过以上的步骤jenkins已经安装完成。

Jenkins+Maven+SVN自动部署配置文档

JDK及Maven

在部署你的项目之前你需要jdk,maven的信息告知Jenkins。

  1. 点击系统管理->Global Tool Configuration:

Jenkins+Maven+SVN自动部署配置文档

jdk的JAVA_HOME必须和你环境变量里的jdk保持一致。

 

Maven:

Jenkins+Maven+SVN自动部署配置文档

创建一个新任务

Jenkins+Maven+SVN自动部署配置文档

 

之后进入任务配置界面:

Jenkins+Maven+SVN自动部署配置文档

配置一下工作空间

Jenkins+Maven+SVN自动部署配置文档

Jenkins+Maven+SVN自动部署配置文档

问题:在这里会遇到不支持Repository URL中含中文的情形:这里我们需要配置Jenkins所在的tomcat的Server.xml文件,修改:加上:URIEncoding="UTF-8"

<Connector port="8088" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8"/>

保存重启Jenkins所在tomcat即可解决,选择所配置的用户,上面的红色错误也不会出现了。

 

接下来就是构建

构建配置

Jenkins+Maven+SVN自动部署配置文档

maven version : 选之前录入的maven,pom选pom文件所在的相对位置(此处是相对svn目录的位置)。

Jenkins+Maven+SVN自动部署配置文档

点击save后,点击立即构建,就可以构建了,可以在你的工作空间中发现你想要的东西了(war包)。

 

如果出现下面的问题:

Jenkins+Maven+SVN自动部署配置文档

方式一:这个问题只需要修改你的pom.xml即可。 加入<defaultGoal>install</defaultGoal>

Jenkins+Maven+SVN自动部署配置文档

方式二:当然也可以这样配置:

Jenkins+Maven+SVN自动部署配置文档

 

定时构建配置

Jenkins+Maven+SVN自动部署配置文档

规则:

MINUTE    Minutes within the hour (0–59)

HOUR    The hour of the day (0–23)

DOM    The day of the month (1–31)

MONTH    The month (1–12)

DOW    The day of the week (0–7) where 0 and 7 are Sunday.

 

指定顺序为MINUTE HOUR DOM MONTH DOW

在某个域指定多个值的规则是:

  • * specifies all valid values
  • M-N specifies a range of values
  • M-N/X or */X steps by intervals of X through the specified range or whole valid range
  • A,B,...,Z enumerates multiple values

如果要定期执行任务,必须提供H (for "hash")标识。

比如0 0 * * *会在同一时间执行所有任务,而使用H H * * *也会在每天执行一次任务,但是并不是同一时间,这样就可以节省很多资源。

H还可以用于范围:H H(0-7) * * * 标识在每天12:00-7:59之间的某个时间执行任务。

H * * * * 代表每个小时执行一次

H/15 * * * *每15分钟执行一次。

H(0-29)/10 * * * * every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5
# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
H H(9-16)/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *

 

 

自动部署

自动部署到tomcat

自动部署需要一个容器,那Jenkins是怎么知道你的容器的呢?容器插件

首页-》系统管理-》管理插件

搜索deploy,很快就会找到这个deploy to container plugin,安装完记得重启。

Jenkins+Maven+SVN自动部署配置文档

这个由于网络原因下载会失败,这个时候需要设置镜像站点:

系统设置-》插件-》高级-》Update Site:

Jenkins+Maven+SVN自动部署配置文档

默认为: http://updates.jenkins-ci.org/update-center.json

我们改为一个日本的镜像: http://mirror.esuni.jp/jenkins/updates/update-center.json

Jenkins+Maven+SVN自动部署配置文档

 

接着选你的项目-》配置

构建后操作

Jenkins+Maven+SVN自动部署配置文档

Jenkins+Maven+SVN自动部署配置文档

  • WAR/EAR files:是相对于你前面配置的工作空间的。
  • Context path:是你容器部署的目录,如果是tomcat,那么在webapps下,如果你不想要项目名称的话选"\",填写"ROOT"是不可以的。
  • Containers: tomcat7。当然你要有manager用户信息。在tomcat目录下的conf目录,tomcat-users.xml修改如下:

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status" username="tomcat"/>

保存文件。同时保存Jenkins。

先启动你的tomcat,再次点击立即构建。

Jenkins+Maven+SVN自动部署配置文档

Jenkins+Maven+SVN自动部署配置文档

如上,证明你成功了!打开浏览器访问下工程确认一下。

自动部署到Weblogic

首先安装Deploy WebLogic Plugin插件。安装好之后,点击

系统配置-全局配置,滑到WebLogic Deployment Plugin出进行配置

Jenkins+Maven+SVN自动部署配置文档

其中additional classpath写上weblogic library path :

  • for WLS 8.X /pathtojar/weblogic.jar
  • for WLS 10.3 /pathtojar/wlfullclient.jar
  • for WLS 12.1 /pathtojar/wlthint3client.jar.

wlfullclient.jar生成方法:(http://docs.oracle.com/cd/E12840_01/wls/docs103/client/jarbuilder.html)

进入weblogic的安装目录例如C:\Oracle\Middleware\wlserver_10.3\server\lib,

运行 java -jar wljarbuilder.jar就能生成wlfullclient.jar文件

 

Jenkins+Maven+SVN自动部署配置文档

如果存在堆溢出,可以把-Xmx调大一点。

这个Congiguration File的写法如下

<?xml version="1.0" encoding="UTF-8"?>

<config xmlns="http://org.jenkinsci.plugins/WeblogicDeploymentPlugin"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://org.jenkinsci.plugins/WeblogicDeploymentPlugin plugin-configuration.xsd">

<weblogic-targets>

<weblogic-target>

<name>my_managed_server1</name>

<host>_weblogic.admin.server.host_</host>

<port>_weblogic.admin.server.port_</port>

<login>_weblogic.admin.server.login_</login>

<password>_weblogic.admin.server.password_</password>

<authMode>BY_KEY</authMode>

<userconfigfile>P:\Documents\perso\dev\wls-deploy-plugin\wls_userConfig.properties</userconfigfile>

<userkeyfile>P:\Documents\perso\dev\wls-deploy-plugin\wls_userConfig.key</userkeyfile>

</weblogic-target>

<weblogic-target>

<name>my_managed_server2</name>

<host>_weblogic.admin2.server.host_</host>

<port>_weblogic.admin2.server.port_</port>

<login>_weblogic.admin2.server.login_</login>

<password>_weblogic.admin2.server.password_</password>

<authMode>BY_LOGIN</authMode>

</weblogic-target>

<weblogic-target>

<name>my_managed_server3</name>

<host>_weblogic.admin.server.host_</host>

<port>_weblogic.admin.server.port_</port>

<login>_weblogic.admin.server.login_</login>

<password>_weblogic.admin.server.password_</password>

<!-- used to transfer by FTP the component flagged as library to the WL machine -->

<ftpHost>_weblogic.remote.host_</ftpHost>

<ftpUser>_weblogic.remote.user_</ftpUser>

<ftpPassowrd>_weblogic.remote.password_</ftpPassowrd>

<remoteDir>/remote/path/used/to/transfer/libraries</remoteDir>

</weblogic-target>

</weblogic-targets>

</config>

最后一个配置FTP其实是用来部署依赖库,而不是整个项目的。

注意:每次修改default.xml文件后都需要重新在系统设置中apply-save才能生效。

认证模式authmode

  • BY_KEY : uses a keystore file and a config file
  • BY_LOGIN : uses a login/password (this is the default authentication mode).

     

接下来配置任务的weblogic部分:增加一个构建后操作:

Jenkins+Maven+SVN自动部署配置文档

Jenkins+Maven+SVN自动部署配置文档

需要配置的项主要有:

  • Task Name: 用于部署的名字;Eg. Webapp WL Deployment
  • Environment: 指定你要部署到的环境。(前后default.xml配好,这里选择即可)确保使用的是AdminServer端口(默认7001)而不是Managed Server端口
  • Name: weblogic的应用名,必须事先存在。
  • Base directory where the resource to deploy can be found:比如E:\jenkins-work\target\(前前面指定的工作空间下的target\下)
  • Built resource to deploy: 分发包的名称,可以使用正则表达式标识。比如test.war,应该写成test\.war
  • Targets: The name of the managed server you want to deploy the webapp to默认为AdminServer,多个以逗号(,)分隔。
  • Weblogic libraries: 分发包是否以依赖库的形式进行部署。一般不需要勾选
  • Fail build if deployment fails:部署失败是是否显示构建失败,一般需要勾选

其中default.xml配置, Environment,targets参数对应于weblogic domain安装配置时的如下:

Jenkins+Maven+SVN自动部署配置文档

配置示例:

Jenkins+Maven+SVN自动部署配置文档

Jenkins+Maven+SVN自动部署配置文档

高级配置:

Jenkins+Maven+SVN自动部署配置文档

详细参考:https://wiki.jenkins-ci.org/display/JENKINS/WebLogic+Deployer+Plugin

https://www.zybuluo.com/kevinZheng/note/359003

比如:weblogic.Deployer部署web应用

先undeploy

"D:\Program Files\Java\jdk1.8.0_101\jre\bin/java" -Xms256M -Xmx1024M -cp E:\jenkins-tomcat7\wlfullclient.jar weblogic.Deployer -debug -remote -verbose -noexit -name fxglxt -targets AdminServer -adminurl t3://localhost:7001 -user weblogic -password 12345678 –undeploy

再deploy

"D:\Program Files\Java\jdk1.8.0_101\jre\bin/java" -Xms256M -Xmx1024M -cp E:\jenkins-tomcat7\wlfullclient.jar weblogic.Deployer -debug -stage -remote -verbose -upload -name fxglxt -source E:\jenkins-work\target\fxglxt.war -targets AdminServer -adminurl t3://localhost:7001 -user weblogic -password 12345678 –deploy

当然你还可以使用-redeploy来结合两个步骤

"D:\Program Files\Java\jdk1.8.0_101\jre\bin/java" -Xms256M -Xmx1024M -cp E:\jenkins-tomcat7\wlfullclient.jar weblogic.Deployer -debug -stage -remote -verbose -upload -name fxglxt -source E:\jenkins-work\target\fxglxt.war -targets AdminServer -adminurl t3://localhost:7001 -user weblogic -password 12345678 -redeploy

命令说明:

1. -Xms256M -Xmx256M 用来防止内存溢出,

2. wlfullclient.jar 里提供了weblogic.Deployer 命令用来远程发布项目war包,所以 需要-cp指定jar包路径 来启动命令 , 根据不同weblogic版本,该文件不同。

3. -verbose 指定后面的参数,

3. -upload 远程发布需要上传文件,

4. -name 发布项目名称

5. -targets 目标服务,

6. -adminurl 指定连接 weblogic 的协议 ip 和端口

7. -redploy 重新发布的 意思

8. -source 本地需要上传war包路径

日志查看

Jenkins+Maven+SVN自动部署配置文档

点击构建按钮后,不要多次点击,此时可以查看左下角执行状态:

Jenkins+Maven+SVN自动部署配置文档

 

Jenkins+Maven+SVN自动部署配置文档

 

查看Weblogic专有日志:

Jenkins+Maven+SVN自动部署配置文档

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
技术爸爸

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: