Comments 3
у меня build.bat получился много сложнее
Поддерживается разные инстансы для сборки, используется совмествно с плагином матрица конфигураций, там задаю параметр CACHEVERS и перечисляю под названия инстансов для которых нужно делать сборку
Так же сборка у меня делается с помощью %InstallerManifest, сборка сложная, с кучей разной компиляцией и деплоем.
Поддерживается разные инстансы для сборки, используется совмествно с плагином матрица конфигураций, там задаю параметр CACHEVERS и перечисляю под названия инстансов для которых нужно делать сборку
Так же сборка у меня делается с помощью %InstallerManifest, сборка сложная, с кучей разной компиляцией и деплоем.
Скрытый текст
:::::::::::::::::::::::
:: .BAT ФАЙЛ СБОРКИ ::
:::::::::::::::::::::::
::
:: Проверим переменные, нужные для сборки
IF NOT DEFINED CACHEVERS EXIT 1
IF NOT DEFINED WORKSPACE EXIT 1
IF NOT DEFINED BUILDNAME EXIT 1
set SRCDIR=%WORKSPACE%
set CCONTROL=C:\InterSystems\Ensemble12\bin\Ccontrol.exe
%CCONTROL% qlist %CACHEVERS% nodisplay > instanceinfo
set /p INSTANCEINFO= < instanceinfo
del instanceinfo
for /f «delims=^ tokens=2» %%a IN ("%INSTANCEINFO%") DO (
set CACHEDIR= %%a
)
set CACHEBIN=%CACHEDIR%\bin\cache
:: Приготовим файл для вывода
set OUTFILE=%CD%\outFile
del "%OUTFILE%"
set BUILDNAMEFILE=%CD%\version
del "%BUILDNAMEFILE%"
:: Приготовимся вызвать Cache
::
:: Установка флага strictchecking в 0
echo zn "%%sys" >inFile
echo s db = ##class(SYS.Database).%%OpenId(«cachelib») >>inFile
echo if db.ReadOnly s db.ReadOnly = 0 s status=db.%%Save() >>inFile
echo s ^^%%qCacheObjectSys(«strictchecking»)=0 >>inFile >>inFile
echo zn «user» >>inFile
:: Сначала загружаем класс сборки в область USER
echo set sc=$SYSTEM.OBJ.Load("%SRCDIR%\svn\cls\Letograf.Build.xml",«ck») >>inFile
:: Если не получилось, покажем ошибку
echo if sc'=1 do $SYSTEM.OBJ.DisplayError(sc) >>inFile
:: Запускаем сборку
echo if sc=1 set sc=##class(Letograf.Build).Build("%BUILDNAME%","%SRCDIR%","%BUILDNAME%",.build) >>inFile
:: Если не получилось, покажем ошибку
echo if sc'=1 do $SYSTEM.OBJ.DisplayError(sc) >>inFile
:: Если не получилось, создадим файл-флаг ошибки
echo if sc'=1 set fileName="%OUTFILE%" o fileName:(«NWS») u fileName do $SYSTEM.OBJ.DisplayError(sc) c fileName >>inFile
echo if $g(build)'="" set fileName="%BUILDNAMEFILE%" o fileName:(«NWS») u fileName w build c fileName >>inFile
:: Вот и все
echo halt >>inFile
:: Вызываем Cache
%CACHEBIN% -s %CACHEDIR%\mgr -U USER <inFile
:: Удаление временного скрипта
del inFile
:: Если есть файл-флаг ошибки, выдаем ошибку
IF EXIST "%OUTFILE%" EXIT 1
:: .BAT ФАЙЛ СБОРКИ ::
:::::::::::::::::::::::
::
:: Проверим переменные, нужные для сборки
IF NOT DEFINED CACHEVERS EXIT 1
IF NOT DEFINED WORKSPACE EXIT 1
IF NOT DEFINED BUILDNAME EXIT 1
set SRCDIR=%WORKSPACE%
set CCONTROL=C:\InterSystems\Ensemble12\bin\Ccontrol.exe
%CCONTROL% qlist %CACHEVERS% nodisplay > instanceinfo
set /p INSTANCEINFO= < instanceinfo
del instanceinfo
for /f «delims=^ tokens=2» %%a IN ("%INSTANCEINFO%") DO (
set CACHEDIR= %%a
)
set CACHEBIN=%CACHEDIR%\bin\cache
:: Приготовим файл для вывода
set OUTFILE=%CD%\outFile
del "%OUTFILE%"
set BUILDNAMEFILE=%CD%\version
del "%BUILDNAMEFILE%"
:: Приготовимся вызвать Cache
::
:: Установка флага strictchecking в 0
echo zn "%%sys" >inFile
echo s db = ##class(SYS.Database).%%OpenId(«cachelib») >>inFile
echo if db.ReadOnly s db.ReadOnly = 0 s status=db.%%Save() >>inFile
echo s ^^%%qCacheObjectSys(«strictchecking»)=0 >>inFile >>inFile
echo zn «user» >>inFile
:: Сначала загружаем класс сборки в область USER
echo set sc=$SYSTEM.OBJ.Load("%SRCDIR%\svn\cls\Letograf.Build.xml",«ck») >>inFile
:: Если не получилось, покажем ошибку
echo if sc'=1 do $SYSTEM.OBJ.DisplayError(sc) >>inFile
:: Запускаем сборку
echo if sc=1 set sc=##class(Letograf.Build).Build("%BUILDNAME%","%SRCDIR%","%BUILDNAME%",.build) >>inFile
:: Если не получилось, покажем ошибку
echo if sc'=1 do $SYSTEM.OBJ.DisplayError(sc) >>inFile
:: Если не получилось, создадим файл-флаг ошибки
echo if sc'=1 set fileName="%OUTFILE%" o fileName:(«NWS») u fileName do $SYSTEM.OBJ.DisplayError(sc) c fileName >>inFile
echo if $g(build)'="" set fileName="%BUILDNAMEFILE%" o fileName:(«NWS») u fileName w build c fileName >>inFile
:: Вот и все
echo halt >>inFile
:: Вызываем Cache
%CACHEBIN% -s %CACHEDIR%\mgr -U USER <inFile
:: Удаление временного скрипта
del inFile
:: Если есть файл-флаг ошибки, выдаем ошибку
IF EXIST "%OUTFILE%" EXIT 1
+1
Видео отличное, особенно порадовала фоновая музыка =)
Реквестирую заказываю аналогичный ролик для Atlassian Bamboo.
0
Sign up to leave a comment.
Овсянка, сэр! Собираем проект на InterSystems Caché с помощью Jenkins