如何使用hudson + maven +货物将应用程序部署到jboss服务器?

时间:2011-01-31 11:54:01

标签: jboss maven hudson cargo

我想使用hudson和maven插件以这种方式将应用程序部署到Jboss 6服务器:

  1. Hudson调用maven clean install tasks
  2. 在pom.xml文件中定义了货物插件(版本1.0.6)
  3. 货物插件已定义执行重新部署以进行阶段安装,目标停止并开始(按此顺序)
  4. 一切正常 - 项目被清理然后安装,然后jboss服务器停止(使用货物:停止)并再次启动(使用货物:启动)。在开始的过程中,目标是将我的项目部署到jboss。当我测试我的网络时,它可以工作并且所有更改都存在。

    唯一的问题是,在Jboss服务器启动后,maven没有成功完成执行,因为它显示消息“[INFO]按Ctrl-C停止容器...”并等待按Ctrl- C。这是标准货物:开始行为。结果是,哈德森的工作没有成功完成。

    我现在要求的是这个小问题的一种解决方法。我需要很长时间(大约16个小时)才能到达这个州,如果我不得不完全重做,我就不会高兴。

    我的想法怎么可能(但我无法谷歌任何有用的东西):

    • 强制哈德森在后台运行maven任务
    • 强制货物在后台运行jboss(一些spawn,fork,jvm参数,jboss运行时参数)
    • 强制maven在后台运行任务

    我尝试这个解决方案的原因是我希望jboss在服务器上永久运行,货物远程部署选项对我不利,因为它占用了太多的系统资源。此解决方案应该适合安装项目,然后重新启动服务器(停止 - 启动)。

    感谢您的帮助。这是我的货物插件配置:

    <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.0.6</version>
                <configuration>
                    <container>
                        <containerId>jboss6x</containerId>
                        <append>false</append>
                        <timeout>300000</timeout>
                        <home>/atteq/jboss</home>
                    </container>
                    <configuration>
                        <properties>
                            <cargo.servlet.port>8080</cargo.servlet.port>
                            <cargo.jboss.configuration>atteq-minimal</cargo.jboss.configuration>
                            <cargo.logging>high</cargo.logging>
                            <cargo.rmi.port>1099</cargo.rmi.port>
                            <cargo.jvmargs>-XX:PermSize=512m -XX:MaxPermSize=1024
                            -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled
                            -XX:+CMSClassUnloadingEnabled</cargo.jvmargs>
                            <cargo.runtime.args>--host 0.0.0.0</cargo.runtime.args>
    
                        </properties>
                            <type>existing</type>
                        <home>/atteq/jboss/server/atteq-minimal</home>
                    <deployables>
                        <deployable>
                            <groupId>roztocto</groupId>
                            <artifactId>roztocto</artifactId>
                            <type>war</type>
                        </deployable>
                    </deployables>
    
                        </configuration>
                    </configuration>
                <executions>
                    <execution>
                        <id>redeploy</id>
                        <phase>install</phase>
                        <goals>
                            <goal>stop</goal>
                            <goal>start</goal>
                        </goals>
                    </execution>
                </executions> 
                <dependencies>
                        <dependency>
                            <groupId>org.codehaus.cargo</groupId>
                            <artifactId>cargo-core-tools-jboss-deployer-5.1-and-onwards</artifactId>
                            <version>1.0.6</version>
                        </dependency>
                    <dependency>
                        <groupId>org.jboss.jbossas</groupId>
                        <artifactId>jboss-as-profileservice-client</artifactId>
                        <version>6.0.0.Final</version>
                        <type>pom</type>
                    </dependency>
    
                        <dependency>
                            <groupId>org.jboss.profileservice</groupId>
                            <artifactId>jboss-profileservice-spi</artifactId>
                            <version>0.2.2</version>
                        </dependency>
    
                        <dependency>
                            <groupId>org.jboss.jbossas</groupId>
                            <artifactId>jboss-as-client</artifactId>
                            <version>6.0.0.Final</version>
                            <type>pom</type>
                        </dependency>
                </dependencies>
    
            </plugin>
    

2 个答案:

答案 0 :(得分:2)

如何将<wait>属性设置为true?根据{{​​3}}

<wait>  Decides if Cargo should wait after the container is 
            started or not                                   Defaults to true 

答案 1 :(得分:1)

Hudson监视所有正在运行的进程,并且在它们全部结束之前不会考虑构建。我对货物不熟悉,但这是我与哈德森经历的笔记。要通过监控网络进行处理,您可能需要:

  • 在后台运行JBoss
  • 在Hudson配置中将环境变量-Dhudson.util.ProcessTreeKiller.disable设置为true
  • 将BUILD_ID = dontKillMe设置为shell环境变量

查看Hudson wiki here。 或詹金斯维基here

詹金斯和哈德森基本上是一回事,但最近分裂的两面。我们会让您阅读Jenkins群组和Oracle Hudson群组的详细信息。修改:也是SO问题How to choose between Hudson and Jenkins?