准备:win7系统上本地tomcat9上搭建Jenkins,本地tomcat8上发布应用程序,请提前修改相关端口,保障两个tomcat服务都能起来,保证Jenkins和应用程序均可访问。
1. 在Jenkins管理页面中,新建Item, 输入任务名 jenkins_test03,选择构建一个maven项目(如果选择了Freestyle project,构建后将会得到以下错误信息),点击“确定”。
Started by user zhang
Running as SYSTEM
Building in workspace F:\workspace\jenkins\workspace\jenkins_test02
[jenkins_test02] $ cmd.exe /C "F:\JAVA\maven-3.6.2\bin\mvn.cmd -f pom.xml clean package && exit %%ERRORLEVEL%%"
POM file "pom.xml" specified the -f/--file command-line argument does not exist
Build step 'Invoke top-level Maven targets' marked build as failure
[DeployPublisher][INFO] Attempting to deploy 1 war file(s)
[DeployPublisher][INFO] Deploying F:\workspace\jenkins\workspace\jenkins_test02\Spring_MVC\target\Spring_MVC.war to container Tomcat 8.x Remote with context Spring_MVC
Redeploying [F:\workspace\jenkins\workspace\jenkins_test02\Spring_MVC\target\Spring_MVC.war]
Undeploying [F:\workspace\jenkins\workspace\jenkins_test02\Spring_MVC\target\Spring_MVC.war]
Deploying [F:\workspace\jenkins\workspace\jenkins_test02\Spring_MVC\target\Spring_MVC.war]
Finished: FAILURE
2. 在你的jenkins workspace中将会生成jenkins_test03目录,可以把你的maven工程拷贝过来,它会自动编译里面的源码。
3. 点击 jenkins_test03 --->配置,进入配置页面,源码管理及构建触发器,选第一项就可以。
4. 构建环境保持默认,Pre Step里面可以设置组建前需要做的事,如把工程从你的Eclipse workspace中拷到jenkins的workspace中,保证每次编译都是最新修改的代码,如果这里设置了,第二步就不需要做了,如果没有拷贝项目到jenkins的workspace中,将会出现以下错误。
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving F:\JAVA\workspace\Spring_MVC\pom.xml to com.zhang2/Spring_MVC/0.0.1-SNAPSHOT/Spring_MVC-0.0.1-SNAPSHOT.pom
channel stopped
ERROR: Step ‘Deploy war/ear to a container’ aborted due to exception:
java.lang.InterruptedException: [DeployPublisher][WARN] No wars found. Deploy aborted. %n
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:107)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:79)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1074)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
at hudson.model.Run.execute(Run.java:1843)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
5. 设置组建参数,这里Root POM 要这样写,如果只写pom.xml,系统会报错,找不到该文件。
6. 构件后操作即打完war包后,需要把该war上传到tomcat8的webapps文件夹下面,这里的WAR/EAR files即 打的war包,
一般设置为**/*.war;Context path即应用程序要访问的路径,如http://127.0.0.1:8082/Spring_MVC,那么这里写Spring_MVC;
另外要添加Tomcat8容器,用户这里添加Tomcat8 /conf/tomcat-users.xml中指定的用户,一般添加如下用户,如果不添加deploy
用户,部署到tomcat8时会发生失败;另外,Deploy on failure勾选后,即使构建失败,也会发布程序到Tomcat8。
<role rolename="manager-script"/>
<user username="deploy" password="deploy123456" roles="manager-gui,manager-script,manager-status" />
7. 点击保存,点击 jenkins_test03 --->build Now,(这里一定要保证Tomcat8服务开启,否则部署到tomcat8时会发生失败),可以看到构建成功。
8. 访问 Tomcat8上的应用,可以正常访问。