如何使用Jenkins在GlassFish 4服务器中部署war文件

如何使用Jenkins在GlassFish 4服务器中部署war文件,jenkins,glassfish-4,Jenkins,Glassfish 4,我正在使用Jenkins在GlassFish 4服务器中部署war文件。但无法部署 Glassfish 4服务器中的war文件。 我遵循以下流程 但它在构建时给出了以下错误 错误:生成步骤失败,出现异常 org.codehaus.cargo.util.CargoException:无法创建 部署管理器位于 org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.getDeploymentManager(AbstractJs

我正在使用Jenkins在GlassFish 4服务器中部署war文件。但无法部署 Glassfish 4服务器中的war文件。
我遵循以下流程

但它在构建时给出了以下错误

错误:生成步骤失败,出现异常 org.codehaus.cargo.util.CargoException:无法创建 部署管理器位于 org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.getDeploymentManager(AbstractJsr88Deployer.java:356) 在 org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.redeploy(AbstractJsr88Deployer.java:192) 在 部署(CargoContainerAdapter.java:77) 在 hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147) 在 hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117) 位于hudson.FilePath.act(FilePath.java:1047) act(FilePath.java:1025)位于 hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114) 在 hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93) 在 hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64) 位于hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 在 hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) 在 hudson.model.AbstractBuild$AbstractBuildExecution.PerformalBuildSteps(AbstractBuild.java:690) 位于hudson.model.Build$BuildExecution.post2(Build.java:186) hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635) 位于hudson.model.Run.execute(Run.java:1819) 运行(FreeStyleBuild.java:43) hudson.model.ResourceController.execute(ResourceController.java:97) 在hudson.model.Executor.run(Executor.java:429)处,由以下原因引起: javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException: 无法获取DeploymentManager;没有注册的DeploymentFactory 在以下位置处理此URI: javax.enterprise.deploy.shared.factories.DeploymentFactoryManager.getDeploymentManager(DeploymentFactoryManager.java:117) 在 org.codehaus.cargo.container.glassfish.GlassFish3xRemoteDeployer.getDeploymentManager(GlassFish3xRemoteDeployer.java:82) 在 org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.getDeploymentManager(AbstractJsr88Deployer.java:352) ... 还有18个 javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException: 无法获取DeploymentManager;没有注册的DeploymentFactory 在以下位置处理此URI: javax.enterprise.deploy.shared.factories.DeploymentFactoryManager.getDeploymentManager(DeploymentFactoryManager.java:117) 在 org.codehaus.cargo.container.glassfish.GlassFish3xRemoteDeployer.getDeploymentManager(GlassFish3xRemoteDeployer.java:82) 在 org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.getDeploymentManager(AbstractJsr88Deployer.java:352) 在 org.codehaus.cargo.container.spi.deployer.AbstractJsr88Deployer.redeploy(AbstractJsr88Deployer.java:192) 在 部署(CargoContainerAdapter.java:77) 在 hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147) 在 hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117) 位于hudson.FilePath.act(FilePath.java:1047) act(FilePath.java:1025)位于 hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114) 在 hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93) 在 hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64) 位于hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 在 hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) 在 hudson.model.AbstractBuild$AbstractBuildExecution.PerformalBuildSteps(AbstractBuild.java:690) 位于hudson.model.Build$BuildExecution.post2(Build.java:186) hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635) 位于hudson.model.Run.execute(Run.java:1819) 运行(FreeStyleBuild.java:43) hudson.model.ResourceController.execute(ResourceController.java:97) 在hudson.model.Executor.run(Executor.java:429)构建步骤“部署” war/ear到标记为生成失败已完成的容器:失败


我可以使用以下两种方法中的任意一种方法将其复制到glassfish 4:

  • 方法1使用新版本的部署到容器插件

    您可以从github克隆以下内容(注意:您可以尝试使用新版本的插件)

    现在构建项目,在目标文件夹中可以找到deploy.hpi文件,该文件可以安装在jenkins中。此版本支持Glassfish 4

    要手动安装插件,请执行以下操作:

  • 方法2在jenkins中添加以下内容作为execute shell。根据需要更新该值并创建glassfish密码文件。它将反编译ear文件并部署新文件


  • 将Glassfish主机名更改为127.0.0.1或localhost这对我有用

    使用Windows批处理文件的示例

    @ECHO OFF 
    :: BAT START GLASSFISH 5 SERVER
    ECHO ============================
    ECHO STOPING GLASSFISH 5
    ECHO ============================
    tasklist | find /i "java.exe" && taskkill /im java.exe /F || echo process "java.exe" not running.
    ECHO ============================
    ECHO NETWORK INFO
    ECHO ============================
    ipconfig | findstr IPv4
    ECHO ============================
    ECHO STARTING GLASSFISH 5
    ECHO ============================
    ECHO Please wait...
    ping 127.0.0.1 -n 10 > nul
    net start domain1
    ECHO Please wait... Restarting Server
    ping 127.0.0.1 -n 90 > nul
    exit  0
    
    运行批处理文件:

    asadmin --echo=true --host=localhost --port=4848 --user=admin --passwordfile=C:\FilePassGF\passwordfile.txt --secure=false deploy --name "NameWar" --contextroot "NameWar" --force=true "C:\Jenkinshome\deploys\$JOB_NAME\$BUILD_NUMBER\Target-1.0.war"
    

    您想使用glassfish 3(在Jenkins配置中)或4(如您的标签所示)?谢谢Jens回答我的问题。我想在GlassFish 4中部署,这里的ip和端口号属于GlassFish 4。但在Jenkins中,GlassFish 4没有选项。@BimalKumarDalei您使用的是部署到容器插件吗?是的@MukeshM,我使用的是部署到容器插件。@BimalKumarDalei我尝试了新版本的插件,它对我有效。但对于新版本,您必须从github克隆并构建部署到容器插件项目。
    asadmin --echo=true --host=localhost --port=4848 --user=admin --passwordfile=C:\FilePassGF\passwordfile.txt --secure=false deploy --name "NameWar" --contextroot "NameWar" --force=true "C:\Jenkinshome\deploys\$JOB_NAME\$BUILD_NUMBER\Target-1.0.war"