2013-11-21 3 views
0

Я задал вопрос один раз, но я думаю, что это была неполная информация. Вот мой вопрос. Я новичок в jenkins. Я работаю над проектом в стиле jenkins. Раньше я использовал BuildForge для всех своих сборников.Дженкинс номер выпуска номер

Проблема заключается в том, что в файле свойств указан файл abc.properties. Он содержит

BuildNumber = 0

Раньше я был с помощью XML и BTM файл, через который "BuildNumber" получает в синхронизации с текущим номером сборки. Код BTM файла

эхо build.number =% ABCBuild перенаправлять: с:% BUILDBASEDIR \ MyFile \ ABCbuild.number эхо build.number =% ABCBuild

с:% 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 redirect to: c:% BUILDBASEDIR \ myfile \ filebuild.properties echo collector.build.number =% 1> с:% BUILDBASEDIR \ MyFile \ filebuild.properties эхо collector.build.type = Indiv добавить к: с:% BUILDBASEDIR \ MyFile \ filebuild.properties эхо collector.build.type = Indiv >> с:% BUILDBASEDIR \ myfile \ filebuild.properties echo.

И создать почтовый файл, в котором файл abc.properties содержит номер сборки.

Шаги, участвующие в XML-файле,

Приготовьте:

безопасной чистый:

создать-файл:

создания тока-файла-QPack:

create-file-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"/> 

Строительные шаги, вовлеченные в Дженкинс являются

обтирочного рабочее пространство

неволей Синхронизировать

Run Batch Command

Invoke Ant (шаги уже упоминалось ранее)

Построение Успешно

Run сообщение сценария сборки (Batch)

makdir

создает ZIP

Я написал пакетный файл, чтобы заменить текущий номер сборки. Но после того, как ANT запускает свою всегда игру, потому что она не обновляет файл. Пакетный сценарий:

Batch script я использую есть.

@echo off 

вызова: FINDREPLACE "BuildNumber = 0" "BuildNumber =% BUILD_NUMBER%" abc.properties выхода/б

: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, ar gs (0), args (1), 1, -1,1) % temp% _. vbs echo end with.

Теперь Пожалуйста, может кто-то сказать мне .. Как я могу поместить BuildNumber в почтовый файл. Да, zip-файл создается на локальном пути репо, а не в рабочей области.

Я использую Perforce для всех моих кодов регистрации и синхронизации.

Я думаю, что «Create-current-file» также заполняет файл и файл свойств.

Пожалуйста, помогите. Я хочу использовать подобную логику в jenkins, чтобы я мог иметь номер сборки в zip-файле. Сценарий, приведенный выше, действительно полезен. Он изменяет номер сборки в рабочей области, но не эффективен, поскольку после того, как ANT INVOKES изменит игру, я получил номер сборки как 0, потому что номер массива в perforce всегда равен 0.

Примечание: ANT получает свой файл из рабочей области, где P4 хранит его.

Что нужно сделать. Пожалуйста, помогите, я уже три дня на нем.

ответ

0

Вам не нужны никакие магические или скриптовые советы, чтобы получить номер сборки, если вы используете это значение в рамках одного проекта. ;)

Каждый (и любой вид проектов типа поддерживаемых дженкинсов) (IMHO) имеет возможность использовать переменные среды.

Посмотрите эту ссылку: http: // <your_build_server_name> /env-vars.html/? как пример.

До тех пор, пока вы используете SCM и Build SCripting (Maven, Ant,?), Вы можете свободно их использовать. Если вы вызываете из пакета windows, обращайтесь к ним, используя синтаксис %%, а не $ {}. ;)

+1

Спасибо HX :) У меня есть проблема. Для создания сборки требуется файл Build.Properties. Я написал код Java и использую pushd и popd для вставки этого значения в файл свойств. Еще раз спасибо – vicky

Смежные вопросы