JenKins安装与配置
版本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初始化结束进入下一步。
选择安装建议的插件。接下来就是安装基本的插件(由于网速与服务器原因,比较慢。要等上几十分钟到几个小时)
这些推荐的插件,目前我们关心的是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
经过以上的步骤jenkins已经安装完成。
JDK及Maven
在部署你的项目之前你需要jdk,maven的信息告知Jenkins。
-
点击系统管理->Global Tool Configuration:
jdk的JAVA_HOME必须和你环境变量里的jdk保持一致。
Maven:
创建一个新任务
之后进入任务配置界面:
配置一下工作空间
问题:在这里会遇到不支持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即可解决,选择所配置的用户,上面的红色错误也不会出现了。
接下来就是构建
构建配置
maven version : 选之前录入的maven,pom选pom文件所在的相对位置(此处是相对svn目录的位置)。
点击save后,点击立即构建,就可以构建了,可以在你的工作空间中发现你想要的东西了(war包)。
如果出现下面的问题:
方式一:这个问题只需要修改你的pom.xml即可。 加入<defaultGoal>install</defaultGoal>
方式二:当然也可以这样配置:
定时构建配置
规则:
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,安装完记得重启。
这个由于网络原因下载会失败,这个时候需要设置镜像站点:
系统设置-》插件-》高级-》Update Site:
默认为: http://updates.jenkins-ci.org/update-center.json
我们改为一个日本的镜像: http://mirror.esuni.jp/jenkins/updates/update-center.json
接着选你的项目-》配置
构建后操作
-
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,再次点击立即构建。
如上,证明你成功了!打开浏览器访问下工程确认一下。
自动部署到Weblogic
首先安装Deploy WebLogic Plugin插件。安装好之后,点击
系统配置-全局配置,滑到WebLogic Deployment Plugin出进行配置
其中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文件
如果存在堆溢出,可以把-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部分:增加一个构建后操作:
需要配置的项主要有:
-
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安装配置时的如下:
配置示例:
高级配置:
详细参考: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包路径
日志查看
点击构建按钮后,不要多次点击,此时可以查看左下角执行状态:
查看Weblogic专有日志: