尝试通过Gradle和Jenkins在Tomcat 7服务器上部署Spring App时出现HTTP 401错误

jon*_*aff 5 java spring tomcat gradle jenkins

我正在尽我所能去做,所以随时指出你看到的任何和所有愚蠢的事情.我已经安装了Tomcat 7(在运行OS X Mavericks的机器上)并将端口从8080更改为80,所以我可以使用http://localhost/app.

如果我只是将.war文件放在/webapps目录中,那么上面的所有内容都能正常运行.然后我下载了Jenkins并将其.war文件放在里面/webapps,允许我访问网页界面http://localhost/jenkins.

我的计划是使用Jenkins从bitbucket中取出我的repo,构建它,然后将它部署到Tomcat服务器.克隆和构建部分完美无缺,但部署是一个不同的故事......

这是詹金斯的日志:

:processResources
:classes
:war
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 14.437 secs
Build step 'Invoke Gradle script' changed build result to SUCCESS
Deploying /var/root/.jenkins/jobs/MyApp/workspace/build/libs/workspace.war to container Tomcat 7.x Remote
ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exception
org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/root/.jenkins/jobs/MyApp/workspace/build/libs/workspace.war]
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:195)
    at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:64)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:90)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:77)
    at hudson.FilePath.act(FilePath.java:914)
    at hudson.FilePath.act(FilePath.java:887)
    at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:77)
    at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:47)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:785)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:757)
    at hudson.model.Build$BuildExecution.post2(Build.java:183)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:706)
    at hudson.model.Run.execute(Run.java:1703)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:231)
Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost/manager/text/list
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1626)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:504)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:622)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:635)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176)
    ... 16 more
java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost/manager/text/list
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1626)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:504)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:622)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:635)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176)
    at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:64)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:90)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:77)
    at hudson.FilePath.act(FilePath.java:914)
    at hudson.FilePath.act(FilePath.java:887)
    at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:77)
    at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:47)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:785)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:757)
    at hudson.model.Build$BuildExecution.post2(Build.java:183)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:706)
    at hudson.model.Run.execute(Run.java:1703)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:231)
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

如果我猜,我会说问题在我的tomcat-users.xml文件中.我尝试了其他地方建议的角色,用户等的每种组合和排列.仅供参考,以下是现在的样子:

<?xml version='1.0' encoding='cp1252'?>
<tomcat-users>
  <role rolename="manager-script”/>
  <user username="tomcat" password="s3cret" roles="manager-script”/>
</tomcat-users>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.大多数其他问题都是指Maven插件等,但即使筛选那些也没有给我提供真正的解决方案.

dam*_*sew 0

401 means "Unauthorized".
Run Code Online (Sandbox Code Playgroud)
  1. 尝试检查您的凭据。
  2. 上次当我将应用程序部署到 Tomcat7 时,我使用此链接:

    localhost/manager/text/html
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您可以在没有 jenkins 的情况下仅使用 gradle 部署此应用程序吗?

  4. 非常简单(临时)的解决方案是(如果您在同一台计算机上部署应用程序)是将 war 复制到 Tomcat ${catalina.home}/webapps目录中。当复制 war 时,Tomcat 将其扩展为所需的 url。然后你需要重新启动以确保所有缓存都被清除。