JENKINS搭建
JENKINS是基于容器的软件,只需download下它的war包,然后部署到服务器上即可。在运行起来的时候,会根据你相应的用户下建立相应的文件目录(.jenkins),类似于maven的.m2文件。这个文件目录中如下:
其实,这就是给我们存放相应用户数据的,我们知道jenkins是基于job的,所以会有job的目录。而且,不同的job会有相应的workspace的工作目录,进行存放从svn上download下来的代码。
- 若在项目构建完成后进行deploy到remote tomcat中需要安装相应的插件,一般到官方网站download下插件。放到jenkins解压的plugins目录下。
- 对远端tomcat的配置:
- 对用户权限的配置(conf/tomcat-users.xml):
<role rolename="manager"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager,manager-gui,manager-script,manager-jmx,manager-status"/>
- 对tomcat中能进行redeploy进行配置(conf/context.xml)
<Context antiJARLocking="true" antiResourceLocking="true">
对于这个配置至关重要,因为不然在jenkins进行重新部署到tomcat中会出现下面错误:
ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exception
org.codehaus.cargo.container.ContainerException: Failed to undeploy [C:\Users\mi\.jenkins\jobs\yinhedata\workspace\trunk\target\pcitc-fbd.war]
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.undeploy(AbstractTomcatManagerDeployer.java:140)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:178)
at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
at hudson.FilePath.act(FilePath.java:918)
at hudson.FilePath.act(FilePath.java:896)
at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:770)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:734)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1040)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:683)
at hudson.model.Run.execute(Run.java:1779)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:529)
at hudson.model.ResourceController.execute(ResourceController.java:89)
at hudson.model.Executor.run(Executor.java:240)
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Unable to delete [C:\Users\mi\tomcat\apache-tomcat-7.0.47-windows-x64\apache-tomcat-actual\webapps\ROOT]. The continued presence of this file may cause problems.
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:566)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:480)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.undeploy(TomcatManager.java:420)
at org.codehaus.cargo.container.tomcat.Tomcat7xRemoteDeployer.performUndeploy(Tomcat7xRemoteDeployer.java:62)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.undeploy(AbstractTomcatManagerDeployer.java:130)
... 17 more
org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Unable to delete [C:\Users\mi\tomcat\apache-tomcat-7.0.47-windows-x64\apache-tomcat-actual\webapps\ROOT]. The continued presence of this file may cause problems.
- 在jenkins有了deploy到container容器插件之后,进行构建后操作的配置。
- WAR/EAR files 这个配置项是根据其用户本身的workspace的相对路径而言,一般配置为:
**/*.war
- WAR/EAR files 这个配置项是根据其用户本身的workspace的相对路径而言,一般配置为:
- 对于Root POM的配置:
- 根据workspace相对路径来配置,因为从svn上download下来的代码会存放到workspace的目录下。那么,就将svn上pom文件的路径,配置到这来。
- 当你自定义pom文件路径,若你在磁盘其他地方有个maven工程,而你将这个maven工程pom文件配置到这里,会出现一个bug,因为在构建的时候,maven会将构建好的war输出到你pom文件对应的target目录下面,而在进行deploy remote tomcat过程中,是能根据workspace的相对路径来找到相应war,而且这里特别恶心的是jenkins不会报任何错误。我想过将war的绝对路径给设好给deploy这个插件,但是结果是行不通的。