詹金斯建立了数字问题

时间:2013-11-21 17:54:36

标签: xml batch-file ant jenkins batch-processing

我已经发布了一次这个问题,但我认为这是不完整的信息..这是我的问题..我是詹金斯的新手。我正在jenkins运行一个自由风格的项目。以前我使用BuildForge进行所有构建。

问题是,有一个属性文件说abc.properties文件。它包含

  

Buildnumber = 0

以前我使用的是xml和BTM文件,“BuildNumber”通过该文件与当前版本号同步。 BTM文件的代码是

  

echo build.number =%ABCBuild重定向到:   c:%BUILDBASEDIR \ myfile \ ABCbuild.number echo build.number =%ABCBuild

     
    

c:%BUILDBASEDIR \ myfile \ ABCbuild.number echo build.number =%ABCBuild重定向到:c:%BUILDBASEDIR \ myfile \ GUIbuild.number echo     build.number =%ABCBuild>     c:%BUILDBASEDIR \ myfile \ GUIbuild.number echo collector.build.number =%1     重定向到:c:%BUILDBASEDIR \ myfile \ filebuild.properties echo     collector.build.number =%1>     c:%BUILDBASEDIR \ myfile \ filebuild.properties echo     collector.build.type = indiv追加到:     c:%BUILDBASEDIR \ myfile \ filebuild.properties echo     collector.build.type = indiv>>     c:%BUILDBASEDIR \ myfile \ filebuild.properties echo。

  

它创建一个zip文件,其中abc.properties文件包含内部版本号。

xml文件涉及的步骤是

  

准备:

     

安全清洁:

     

创建文件:

     

创建电流文件-qpack:

     

创建文件-qpack:

     

积文件qpack:

     

创建电流文件-RPACK:

     

创建文件-RPACK:

     

积文件RPACK:

     

制备-anystudio:

     

填充文件道具:

     

创建电流-文件:

    <target name="create-current-file" depends="prepare-anystudio,fill-file-props">
    <property name="file.name" value="${file.name}"/>
    <property name="file.version" value="${file.version}"/>
    <property name="file.path" value="${file.path}"/>

    <echo message="Building file ${file.name} version ${file.version}......."/>

    <delete dir="${cur.dirname}/${dir.final}/files/${file.name}"/>
    <echo message="-sourcefiles ${file.path}/${file.name} -output            ${cur.dirname}/${dir.final}"/>
    <java dir="${cur.dirname}/${dir.filestudio.exec}"
          classname="com.comp.cas.ucf.configtool.DistributionUtil" failonerror="true"     fork="yes">
        <classpath refid="classpath.studio"/>

jenkins涉及的构建步骤

  

擦除工作区

     

Perforce Sync

     

运行批处理命令

     

调用Ant(前面提到的步骤)

     

建立成功

     

运行Post Build Script(批处理)

     

makdir

     

创建zip

我编写了批处理文件来替换当前的内部版本号。但是在ANT运行后它始终是Game Over情况,因为它不会更新文件。批处理脚本是

我正在使用的批处理脚本是。

@echo off
     

调用:FindReplace“Buildnumber = 0”“Buildnumber =%BUILD_NUMBER%”       abc.properties exit / b

:FindReplace <Buildnumber=0> <Buildnumber=111> <collector.properties>
set tmp="%temp%\tmp.txt" If not exist %temp%\_.vbs call :MakeReplace
for /f "tokens=*" %%a in ('dir "%3" /s /b /a-d /on') do (   for /f
"usebackq" %%b in (`Findstr /mic:"%~1" "%%a"`) do (
echo(&Echo Replacing "%~1" with "%~2" in file %%~nxa
<%%a cscript //nologo %temp%\_.vbs "%~1" "%~2">%tmp%
if exist %tmp% move /Y %tmp% "%%~dpnxa">nul   ) ) del %temp%\_.vbs exit /b

:MakeReplace
     

%temp%_。vbs使用Wscript回显

     
    

%temp%_。vbs echo set args = .arguments     %temp%_。vbs echo .StdOut.Write _     %temp%_。vbs echo替换(.StdIn.ReadAll,args(0),args(1),1,-1,1)     %temp%_。vbs echo end with。

  

现在请有人告诉我..如何将buildnumber放在zip文件中。是的,zip文件是在本地repo路径而不是在工作区中创建的。

我正在使用Perforce进行所有代码签入和同步。

我认为“创建当前文件”也填充了我的文件和属性文件。

请帮忙。我想在jenkins中使用类似的逻辑,这样我也可以在zip文件中使用内部版本号。上面的脚本非常有用它改变了工作空间中的内部版本号,但是在ANT INVOKES游戏发生变化之后无效,我将buildNumber设置为0,因为perforce中的buildnumber始终为0。

注意:ANT从P4存储它的工作区获取其文件。

需要做什么。请帮忙,我已经花了三天时间。

1 个答案:

答案 0 :(得分:0)

如果在一个项目中使用此值,则不需要任何魔术或脚本集合来获取内部版本号。 ;)

每个(以及任何类型的jenkins支持的项目类型)作业(IMHO)都能够使用环境变量。

请看这个链接:http:// <your_build_server_name> /env-vars.html/?例如。

只要您使用SCM和Build SCripting(Maven,Ant,?),您就可以自由使用它们。如果从Windows批处理调用,则使用%%而不是$ {}语法访问它们。 ;)