2013-11-21 4 views
0

질문을 한 번 게시했지만 불완전한 정보라고 생각합니다. 여기 제 질문입니다. 나는 젠킨스를 처음 사용합니다. 젠킨스에서 무료 스타일의 프로젝트를 운영하고 있습니다. 이전에는 모든 빌드에 BuildForge를 사용했습니다.Jenkins 빌드 번호 문제

문제는 abc.properties 파일에 등록 정보 파일이 있다는 것입니다. 그것은 포함

Buildnumber = 이전에 내가 "BuildNumber는"현재 빌드 번호와 동기화 얻을 수있는을 통해 XML과 BTM 파일을 사용하고 있었다

0. C : BUILDBASEDIR % \ myfile을 \ ABCbuild.number 에코 build.number = % ABCBuild

C %의 BUILDBASEDIR BTM 파일의 코드

에코 build.number = % ABCBuild 리디렉션이고 \ 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.

그리고 그것은 abc.properties 파일이 빌드 번호를 포함하는 zip 파일을 만듭니다.

안전 청소 : XML 파일에 포함

단계 준비

있습니다

만들 파일을 :

만들-현재 파일 qpack :

을 파일 생성 - Q 팩 :

,빌드 파일 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"/> 

빌드 단계는

닦아 아웃 작업 공간

억지로 동기화

실행 배치 명령

호출 개미 (단계 앞서 언급 한)

빌드 성공

실행 포스트 스크립트 (배치)

는 우편 나는 현재 빌드 번호를 대체하는 배치 파일을 작성했습니다

를 생성

makdir을 구축 할 수 있습니다. 그러나 ANT가 파일을 업데이트하지 않기 때문에 항상 게임 오버 상황을 실행합니다. 배치 스크립트는

배치 스크립트를 사용하고 있습니다.

@echo off 

호 : FindReplace "Buildnumber = 0", "Buildnumber = %의 BUILD_NUMBER %의" abc.properties 출구/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 

% 임시 % _ VBS 에코

Wscript가 가진.

% temp % _ .vbs echo set args = .gargs % temp % _ .vbs echo .StdOut.Write _ % temp % _ .vbs echo (.StdIn.ReadAll, ar gs (0), args (1), 1, -1,1) % temp % _. vbs echo end.내가 zip 파일에 buildnumber을 넣을 수있는 방법

지금 누군가가 .. 말해 줄 수주십시오. 예, zip 파일은 작업 공간이 아닌 로컬 저장소 경로에서 생성됩니다.

내 코드 체크인 및 동기화에 Perforce를 사용하고 있습니다.

"Create-current-file"은 내 파일 및 속성 파일도 채우고 있다고 생각합니다.

도와주세요. 젠킨스에서 유사한 로직을 사용하여 zip 파일에 빌드 번호를 가질 수 있기를 바랍니다. 위의 스크립트는 정말 도움이됩니다 그것은 작업 공간에서 빌드 번호를 변경하지만 ANT가 게임을 변경 한 후에도 효과가 없습니다. PERFORCE의 빌드 번호가 항상 0이기 때문에 buildNumber를 0으로 설정했습니다.

참고 : ANT는 P4가 저장 한 작업 공간의 파일.

수행해야 할 작업. 제발 도와 줘요. 벌써 사흘을 보냈어요.

답변

0

하나의 프로젝트에서이 값을 사용하는 경우 빌드 번호를 얻으려면 마법이나 스크립팅 테스트가 필요하지 않습니다. ;)

job (IMHO)에는 환경 변수를 사용할 수있는 기능이 있습니다.

다음 링크 참조 : http : // <your_build_server_name> /env-vars.html/? 예를 들면.

SCM 및 빌드 스크립트 (Maven, Ant,?)를 사용하는 한 자유롭게 사용할 수 있습니다. 윈도우 배치에서 호출 된 경우 $ {} 구문이 아닌 %%를 사용하여 액세스하십시오. ;)

+1

감사합니다. HX :) 문제를 파악했습니다. 빌드를 생성하려면 Build.Properties 파일이 필요합니다. 자바 코드를 작성하고 pushd와 popd를 사용하여 특성 파일 내에이 값을 삽입하십시오. 다시 한번 감사합니다 – vicky