在Jenkins上构建Maven之后将Webapp部署到Tomcat [英] Deploy webapp to Tomcat after Maven build on Jenkins
问题描述
在詹金斯上的Maven构建完成后,我试图将webapp.war复制到tomcat的webapp文件夹中.
i'm trying to copy the webapp.war to the tomcat's webapp folder after the maven build on the jenkins has finished.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>copy-webapp-to-tomcat</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="Deploying webapp to Tomcat.">
<copy todir="${tomcat.webapps.dir}" force="true">
<fileset dir="${project.build.directory}">
<include name="*.war" />
</fileset>
</copy>
</target>
</configuration>
</execution>
</executions>
</plugin>
我将jenkins用户添加到了tomcat组
i added the jenkins user to the tomcat group
$ id -Gn jenkins
jenkins tomcat
和我的webapps文件夹权限看起来像
and my webapps folder permissions look like
drwxrwxr-x 10 tomcat tomcat 4,0K Aug 13 17:24 webapps/
构建完成后,复制失败并显示
after the build is completed, the copying fails with
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (copy-webapp-to-tomcat) on project: An Ant BuildException has occured:
Failed to copy /var/lib/jenkins/workspace/project/target/webapp.war to /opt/tomcat/webapps/webapp.war due to java.io.FileNotFoundException /opt/tomcat/webapps/webapp.war (Permission denied)
[ERROR] around Ant part ...<copy todir="/opt/tomcat/webapps" force="true">... @ 4:50 in /var/lib/jenkins/workspace/project/target/antrun/build-Deploying webapp to Tomcat..xml
当我向其他用户添加webapps文件夹的写权限时
when i add the write permissions to the other users for the webapps folder
drwxrwxrwx 10 tomcat tomcat 4,0K Aug 13 17:24 webapps/
复制成功,我得到一个文件
the copying succeeds and i get a file
-rw-r--r-- 1 jenkins jenkins 22M Aug 13 17:48 webapp.war
jenkins用户是否是tomcat组的成员,并且该组具有webapps文件夹的写许可权,这还不够吗?
shouldn't it be enough that the jenkins user is a member of the tomcat group and this group has the write permission for the webapps folder?
thx,kopi
推荐答案
请研究战争部署插件,而不要使用复制方法.它将使您将来也可以将war文件部署在远程服务器上.我已经完成了角度应用的战争部署.
Please research for war deployment plugin instead using copy method. It will let you deploy war file on remote servers also in future. I have done war deployment for angular application.
- 为您的tomcat服务器创建一个 manager-script 角色用户.
- 在Jenkins中安装部署到容器插件
- 转到您的Jenkins作业的配置,然后在构建后操作中选择选项部署到容器选项.
- 使用tomcat用户名和密码输入所有详细信息并保存配置.
- 在构建过程完成后,在Jenkins中享受自动战争部署.
- Create a manager-script role user for your tomcat server.
- Install Deploy to container plugin in Jenkins
- Go to configuration of your Jenkins job and select option Deploy to container option in post build action.
- Enter all details with tomcat username and password and save configuration.
- Enjoy automatic war deployment in Jenkins after build process.
您可以参考以下链接以获取更多详细信息
You can refer following link for more details