`
eddysheng
  • 浏览: 111789 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于teamcity的持续集成实践(ant脚本2)

阅读更多

上一篇,说到了ant脚本如何分类以及何组织的,现在让我们看一下如何用ant脚本来实现上面所说的过程。

 

在此同样先是基于小的分类,然后是整合,其实按照上篇的分类是非常细的,因此对于一些经常用到的,在此就不赘述,仅说几个我认为不常用的,但是很关键的。

 

 

首先定义weblogic的相关ant任务

 

<path id="weblogic.ant.classpath">
        <pathelement location="${weblogic.home}/server/lib/weblogic.jar"/>
</path>

<target name="init" description="">
        <taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer" classpathref="weblogic.ant.classpath"/>
        <taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig" classpathref="weblogic.ant.classpath"/>
        <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy" classpathref="weblogic.ant.classpath"/>
</target>

 

然后是weblogic的启动与关闭,此处并没有通过wlserver来进行weblogic的startup与shutdown,是因为在我的环境里面总是报错,实在解决不了了,就采用了如下的这种替代方案。

<target name="startup">
        <echo message="-------- Starting Weblogic AdminServer -----"/>       
        <exec executable="${domain.home}/startWebLogic.sh">
        </exec>       
        <echo message="${weblogic.adminserver} started successfully"/>           
</target>

<target name="shutdown">
        <echo message="-------- Shutdown  Weblogic server --------"/>
        <exec executable="${domain.home}/bin/stopWebLogic.sh"/>
        <sleep seconds="20" />
</target>

 

接下来是创建weblogic domain

<target name="create-test" depends="init" description="">           
        <echo message="--------Create weblogic domain:odmain--------"/>
        <delete dir="${domain.home}"/>
        <mkdir dir="${domain.home}"/>
        <wlserver
            weblogichome="${weblogic.home}"
                username="${weblogic.username}"
                password="${weblogic.password}"
                servername="${weblogic.adminserver}"
                domainname="${domain.name}"            
                dir="${domain.home}"
                host="${weblogic.host}"
                port="${weblogic.port.adminserver}"
          productionmodeenabled="${weblogic.domain.isproduction}"
          generateconfig="true"
                classpath="${weblogic.jar}:${java.home}/lib/tools.jar">
            <jvmarg value="-server"/>
            <jvmarg value="-Xms256m"/>
            <jvmarg value="-Xmx512m"/>
            <jvmarg value="-XX:PermSize=128m"/>
            <jvmarg value="-XX:MaxPermSize=256m"/>
            <jvmarg value="-Dweblogic.ThreadPoolPercentSocketReaders=75"/>
            <jvmarg value="-Djava.security.policy=${weblogic.home}/server/lib/weblogic.policy"/>
        </wlserver>  
</target>

 

再接下来是配置weblogic domain

<target name="config-test" description="Add Weblogic domain DB/JMS configurations" depends="init">
    <echo message="--------Config all domain weblogic resources--------"/>
        <mkdir dir="${domain.home}/rmfilestore"/>
        <wlconfig url="t3://${weblogic.host}:${weblogic.port.adminserver}"
            username="${weblogic.username}" password="${weblogic.password}">
            <query domain="${domain.name}" type="Server" name="${weblogic.adminserver}"
                property="prop.admin.server"/>
            <create type="JDBCConnectionPool" name="Test Connection Pool">
                <set attribute="InitialCapacity" value="${jdbc.pool.initcapacity}"/>
                <set attribute="CapacityIncrement" value="1"/>
                <set attribute="MaxCapacity" value="${jdbc.pool.maxcapacity}"/>
                <set attribute="DriverName" value="${oracle.driver}"/>
                <set attribute="Properties" value="user=${oracle.username.core2}"/>
                <set attribute="Password" value="${oracle.password.core2}"/>
                <set attribute="TestConnectionsOnRelease" value="true"/>
                <set attribute="TestConnectionsOnReserve" value="true"/>
                <set attribute="URL" value="${oracle.url.core2}"/>
                <set attribute="TestTableName" value="SQL SELECT 1 FROM DUAL"/>
                <set attribute="Targets" value="${prop.admin.server}"/>
            </create>
            <create type="JDBCDataSource" name="Test Data Source">
                <set attribute="JNDIName" value="${datasource.jndi.name.test}"/>
                <set attribute="PoolName" value="Test Connection Pool"/>
                <set attribute="Targets" value="${prop.admin.server}"/>
            </create>
            <create type="JMSConnectionFactory" name="jms/JMSConnectionFactory">
              <set attribute="JNDIName" value="jms/JMSConnectionFactory"/>
              <set attribute="XAConnectionFactoryEnabled" value="true"/>
              <set attribute="DefaultDeliveryMode" value="Non-Persistent"/>
              <set attribute="Targets" value="${prop.admin.server}"/>
            </create>
            <create type="JMSFileStore" name="TestPersistentStore" property="test.persist.store">
                <set attribute="Directory" value="rmfilestore"/>
            </create>
            <create type="JMSFileStore" name="TestPagingStore" property="test.paging.store">
                <set attribute="Directory" value="rmfilestore"/>
            </create>
            <create type="JMSServer" name="TestJMSServer">
                <set attribute="Store" value="${test.persist.store}"/>
                <set attribute="PagingStore" value="${test.paging.store}"/>
                <set attribute="Targets" value="${prop.admin.server}"/>                               
                <create type="JMSQueue" name="jms/TestQueue">
                    <set attribute="JNDIName" value="jms/TestQueue"/>
                </create>               
                <create type="JMSTopic" name="jms/TestTopic">
                    <set attribute="JNDIName" value="jms/TestTopic"/>
                </create>
            </create>
        </wlconfig>
</target>

 

再接下来是deploy

<target name="deploy-test" depends="init">
        <echo message="--------Deploy all odomain war and ear--------"/>
       
        <wldeploy action="deploy" source="${deploy.package.folder}/od/test.ear" name="test"
            user="${weblogic.username}" password="${weblogic.password}" verbose="true" nostage="false"
            adminurl="t3://${weblogic.host}:${weblogic.port.adminserver}" targets="${weblogic.adminserver}">
        </wldeploy>
        <wldeploy action="deploy" source="${deploy.package.folder}/od/portal.war" name="portal"
            user="${weblogic.username}" password="${weblogic.password}" verbose="true" nostage="false"
            adminurl="t3://${weblogic.host}:${weblogic.port.adminserver}" targets="${weblogic.adminserver}"/>
</target>

 

最后,findbugs

<target name="findbugs-test">
      <findbugs home="${findbugs.home}"
                output="xml"
                outputFile="findbugs/findbugs-test.xml"
                jvmargs="-Xmx640m">
        <auxClasspath>
          <fileset dir="${basedir}/test/lib" >
            <include name="*.jar" />
          </fileset>
          <pathelement location="${emma.jar}" />
        </auxClasspath>
        <sourcePath path="${basedir}/test/src" />
        <class location="${basedir}/test/dist/classes" />
      </findbugs>
</target>

 

有了这些分类以后,我们就简单得按照上篇的想法来进行组织,此处仅组织持续集成的,项目创建的根据各自不同可以自己组织。

<target name="ci" description="">
        <antcall target="build-test"/>
        <antcall target="findbugs-test"/>       
        <parallel>               
            <antcall target="startup"/>
            <sequential>
                <waitfor maxwait="5" maxwaitunit="minute" checkevery="1" checkeveryunit="second">
                     <http url="http://${weblogic.host}:${weblogic.port.adminserver}"/>
                 </waitfor>               
                <antcall target="integration-test"/>
                <antcall target="shutdown"/>
             </sequential>
        </parallel>
</target>

 

 

0
0
分享到:
评论

相关推荐

    teamcity-ant脚本.rar

    TeamCity是一款强大的持续集成(CI)/持续部署(CD)工具,它可以帮助开发团队自动构建、测试和部署软件。在TeamCity中,Ant脚本扮演着至关重要的角色,因为Ant是Java项目常用的构建工具,能够定义和执行构建过程。...

    ant打包Web工程

    9. **持续集成**:在实际开发中,Ant常与持续集成服务器(如Jenkins、TeamCity)配合使用,自动执行构建、测试和部署流程,提高开发效率和产品质量。 总结,Ant作为Java开发中的重要工具,其在打包Web工程中的应用...

    Ant自动构建总结

    - Ant脚本可以集成到持续集成工具(如Jenkins、TeamCity)中,自动化构建和测试过程。 10. **最佳实践**: - 保持构建脚本简洁清晰,避免过于复杂的嵌套和条件。 - 将配置信息与脚本分离,便于维护和重用。 - ...

    ANT 自动化构建

    10. **ANT与持续集成**:如果博文深入,可能会提到ANT在持续集成服务器如Jenkins或TeamCity中的应用。 通过学习和实践ANT自动化构建,开发者可以有效地管理项目的构建流程,提高开发效率,保证代码的一致性和可重复...

    在.NET环境中实现每日构建--NAnt篇

    你可以使用持续集成服务器,如Jenkins、TeamCity或Bamboo,配置它们在每天固定的时间自动运行NAnt脚本。这样,每当有新的代码提交时,系统就会自动进行编译和测试,确保代码质量。 ### 提高构建效率 - **编译优化**...

    7 第七章 DevOps工具链.pdf

    - **TeamCity**: JetBrains开发的CI服务器。 ##### 2.5 配置管理工具 - **Chef**: 基础设施即代码工具,用于自动化配置管理。 - **Puppet**: 通过定义资源状态来管理服务器配置。 - **Ansible**: 无需在目标机器上...

    使用_Selenium_和_TestNG_进行编程式测试1

    通过它们,可以轻松地运行整个Selenium测试套件,甚至集成到持续集成(CI)环境中,如Jenkins或TeamCity,从而在每次代码变更后自动执行测试,确保代码质量。 总结起来,Selenium和TestNG的结合使用提供了强大的Web...

    手把手教您构建自己的 DevOps 流水线

    2. 持续集成:通过Jenkins、TeamCity、Team Foundation Server等工具实现代码集成、编译和测试,及时发现并修复问题。 3. 第三方持续集成服务:考虑DaoCloud Services、CloudBees DEV@cloud、Travis CI或CircleCI等...

    gradle用户手册中文版

    - Gradle可以很好地与其他开发工具集成,如IDEs(IntelliJ IDEA、Eclipse)、持续集成服务器(Jenkins、TeamCity)等。 - 支持生成各种格式的构建报告,如HTML、XML等,方便团队协作。 #### 三、Gradle的基本概念...

    msbuild

    5. **持续集成**:在持续集成工具(如Jenkins、TeamCity)中,利用Groovy插件与MSBuild集成,实现自动化的构建和部署。 总之,MSBuild提供了强大的.NET项目构建能力,而Groovy的灵活性和便利性则可以进一步增强和...

Global site tag (gtag.js) - Google Analytics