我已经发布了一次这个问题,但我认为这是不完整的信息..这是我的问题..我是詹金斯的新手。我正在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存储它的工作区获取其文件。
需要做什么。请帮忙,我已经花了三天时间。
答案 0 :(得分:0)
如果在一个项目中使用此值,则不需要任何魔术或脚本集合来获取内部版本号。 ;)
每个(以及任何类型的jenkins支持的项目类型)作业(IMHO)都能够使用环境变量。
请看这个链接:http:// <your_build_server_name>
/env-vars.html/?例如。
只要您使用SCM和Build SCripting(Maven,Ant,?),您就可以自由使用它们。如果从Windows批处理调用,则使用%%而不是$ {}语法访问它们。 ;)