检查版本控制中的最新版本

时间:2011-05-09 09:52:58

标签: ant cruisecontrol snapshotcm

我目前正在编写一个ANT脚本,其中包含一些用于检查事物的情报。我使用True Blue Software的SnapshotCM作为我的版本控制,并使用CruiseControl作为我的夜间构建的框架。 基本上,我需要始终检查我的版本控制中找到的最新版本并执行命令。在这种情况下,这是一个例子:

<project name="nightly_build" default="main" basedir="checkout">
    <target name="init">
        <property file="initial.properties"/>
    </target>
    <target name="main" depends="init">
            <!-- need some code to set variable -->
            <!-- need some code to increment variable -->
        <!-- need some code here to check for the latest version -->
        <exec executable="C:/Program Files/True Blue Software/SnapshotCM/wco.exe">
            <arg line='-f -R "C:/Work/7.10.000_Tip/7.10.000_Tip_GUI_TEST/"'/>
        </exec>
    </target>
</project>

在上面的代码中,我将加载“initial.properties”文件。 算法应如下:

  1. 加载初始属性文件

  2. 获取build_number

  3. 将build_number增加1(让这个新变量为X)

  4. 如果找到X,则将X增加1(如果未找到则跳转到6。)

  5. 如果找到X,重复4(直到找不到X)

  6. 否则使用<arg line ='-f -R "C:/..../7.10.100.X..../"'/>

  7. 中的内部版本号

    initial.properties文件如下:

    Major_Version=7
    Minor_Version=10
    Project_Number=100
    Build_Number=036
    Product_Version=${Major_Version}.${Minor_Version}.${Project_Number}.${Build_Number}
    

    任何人都可以指导我吗?

1 个答案:

答案 0 :(得分:1)

Ant不是一种编程语言。它是一种依赖矩阵语言。

这意味着您没有在Ant中指定执行顺序。 Ant将计算运行目标所需的顺序。它还意味着Ant无法执行循环,甚至在设置属性后更改属性的值。

有一些基于Ant构建的软件包。旧备用数据库是Antcontrib。 Antcontrib具有变量的概念,它们就像可变属性一样。它还具有各种循环结构。但是,我不确定<foreach><for>任务是否符合您的要求......

您可以在shell脚本中按顺序搜索下一个内部版本号。事实上,我强烈推荐这一点。

我只使用Ant进行构建,并将我的CM函数保留在build.xml文件之外。相反,我依靠我的构建系统来完成与构建本身无关的所有事情。这包括检出代码,保存工件和编译单元测试。这样,如果我改变了使用连续构建系统或版本控制系统的方式,我就不必修改我的build.xml文件。