Подскажите по Jenkins: разные задачи для разных узлов
какой язык ? как собираются проекты (система сборки типа MSBuild) ? на какой OS стоит jenkins? подписывать на той же машине, где компилируются проекты гораздо проще. обязательно на другой машине это делать?
везде винда. дженкинс на винде.
исходники и сборочная среда изолированы от интернета.
на подписывающей машине должен быть интернет - для доверенного timestamp.
микрсофот для моих целей доверяет только http://timestamp.verisign.com/scripts/timstamp.dll к сожалению
обмен через доверенную расшаренную папку
вот думаю, как разрулить.
Язык везде С, вижуалстудия, msbuild
исходники и сборочная среда изолированы от интернета.
на подписывающей машине должен быть интернет - для доверенного timestamp.
микрсофот для моих целей доверяет только http://timestamp.verisign.com/scripts/timstamp.dll к сожалению
обмен через доверенную расшаренную папку
вот думаю, как разрулить.
Язык везде С, вижуалстудия, msbuild
Язык везде Ссобираешь через MSBuild?
сколько бинарей требуется подписать (кол-во бинарей \ кол-во мегабайт)?
msbuild, да.
дебаг/релиз х64 х86 1 длл 1 ехе = 8 штук.
всего 20 мегабайт
дллка в среднем 1.5мб
экзешник 3мб
дебаг/релиз х64 х86 1 длл 1 ехе = 8 штук.
всего 20 мегабайт
дллка в среднем 1.5мб
экзешник 3мб
msbuild, да.кол-во нужно было чтобы оценить следует ли скопом подписывать либо поштучно. думаю, при таком малом кол-ве бинарей можно и поштучно
дебаг/релиз х64 х86 1 длл 1 ехе = 8 штук.
в общем, я решал эту задачу немного в других условиях:
1) не jenkins
2) подписывалка локальная
но думаю, подход может сработать и в твоих условиях
1) на CI размещается скрипт (путь к скрипту можно в env var приписать который на вход принимает путь к длл и на выходе дает уже подписанную длл (исходная длл перезаписывается)
2) далее в тех проектах (файл vcxproj) , где требуется подпись вручную (то есть проект надо изменить в notepad.exe) вставляется (лучше через импорт другого документа типа Signing.proj) волшебный xml, который после билда бинаря запускает скрипт из пункта 1
подписывание опять же можно сделать опциональным в зависимости от env var
может, ты так уже пробовал сделать? с каким сложностями столкнулся?
Я сделал пачку батников, "собрать" "подписать" "собрать дистр" "подписать дистр"
Вручную подпись через signtool.
Процесс сейчас выглядит как-то так:
01.build_all.bat - строит всё что нужно, копирую папку Bin в обменник.
02.sign_all.bat - запускаю на подписывалке, она подписывает файлы в Bin, копирую обратно.
03.build_distr.bat - собираю дистрибутив, в обменку
04.sign_distr.bat - подписать дистрибутив
05.export.bat - положить на раздачу для тестов.
Вот думал, что разными задачами/типами узлов можно сделать что-то подобное на Jenkins
пока не понятно, можно ли подписывалку втянуть под управление jenkins, или написать самописный сервис, который подписывает всё подряд что ему подсовывают
Вручную подпись через signtool.
Процесс сейчас выглядит как-то так:
01.build_all.bat - строит всё что нужно, копирую папку Bin в обменник.
02.sign_all.bat - запускаю на подписывалке, она подписывает файлы в Bin, копирую обратно.
03.build_distr.bat - собираю дистрибутив, в обменку
04.sign_distr.bat - подписать дистрибутив
05.export.bat - положить на раздачу для тестов.
Вот думал, что разными задачами/типами узлов можно сделать что-то подобное на Jenkins
пока не понятно, можно ли подписывалку втянуть под управление jenkins, или написать самописный сервис, который подписывает всё подряд что ему подсовывают

Процесс сейчас выглядит как-то таккак-то многовато батников. почему сборку не делаешь встроенными средствами CI (для запуска msbuild обычно есть встроенные таски)?
если в каждом проекте пропилить подписывалку, то имхо самописных скриптов будет меньше.
MSBuild собирает проект, сам проект уже подписывает свой выхлоп.
для запуска удаленного скрипта можно заюзать psexec
как-то многовато батников. почему сборку не делаешь встроенными средствами CI (для запуска msbuild обычно есть встроенные таски)?Скрипт сборки практичнее, потому что покрывает сразу два кейса:
-  сборка в рамках CI
 
- сборка на произвольно взятой машине
Хотя, да, при этом теряются интерактивность и прочие плюшки от кастомных билдеров CI.
батник на построение выглядит как мычание:
msbuild project.sln /t:Rebuild /p:Configuration=Release;Platform=win32
msbuild project.sln /t:Rebuild /p:Configuration=Release;Platform=x64
msbuild project.sln /t:Rebuild /p:Configuration=Debug;Platform=win32
msbuild project.sln /t:Rebuild /p:Configuration=Debug;Platform=x64
Я не нашёл способа встроить подписывание в проект
У меня проект на практически чистом С (условно - драйвер). Подписывание есть только в managed.
Вот тут даже советуют вручную подписывать:
http://msdn.microsoft.com/en-us/library/ms537364%28v=vs.85%...
Предлагаете вставлять подписывание как custom build step ?
ну и чем это лучше батника?
к тому же у меня условие - подписывать на другой машине, отличной от сборочной.
msbuild project.sln /t:Rebuild /p:Configuration=Release;Platform=win32
msbuild project.sln /t:Rebuild /p:Configuration=Release;Platform=x64
msbuild project.sln /t:Rebuild /p:Configuration=Debug;Platform=win32
msbuild project.sln /t:Rebuild /p:Configuration=Debug;Platform=x64
Я не нашёл способа встроить подписывание в проект

У меня проект на практически чистом С (условно - драйвер). Подписывание есть только в managed.
Вот тут даже советуют вручную подписывать:
http://msdn.microsoft.com/en-us/library/ms537364%28v=vs.85%...
Предлагаете вставлять подписывание как custom build step ?
ну и чем это лучше батника?
к тому же у меня условие - подписывать на другой машине, отличной от сборочной.
батник на построение выглядит как мычание:встроенные средства хороши тем, что есть доп возможности типа отключения некоторых шагов сборки и они тупо удобнее (поставить галочку через web гораздо проще, нежели менять скрипты на удаленной машине или в системе контроля версий). к примеру, для построения релиза продукта вполне можно отключить сборку Debug
Я не нашёл способа встроить подписывание в проектдля сей + MSBuild нет такого механизма (во всяком случае, пару лет назад я копал эту тему и ничего не нашел). приходится городить скрипты
У меня проект на практически чистом С (условно - драйвер). Подписывание есть только в managed.
Предлагаете вставлять подписывание как custom build step ?типа того, я использовал секцию AfterBuild в vcxproj:
<Project>
.....
<Import Project="SCRIPTS\Signing.proj" />
<Target Name="AfterBuild">
<CallTarget Targets="Sign" />
</Target>
</Project>
ну и чем это лучше батника?тем, что это интегрировано с системой сборки MSBuild (хранится внутри проекта) и не требует ручного запуска отдельного скрипта. если проекты используются в разных солюшенах, то такой подход может упростить настройку билдов
к тому же у меня условие - подписывать на другой машине, отличной от сборочной.это просто приведет к более сложному скрипту для подписывания
в общем, я поделился способом, который использовал сам. как говорится, не нравится - не ешь =)
Оставить комментарий
						
			
yolki
Есть проект.Нужно его:
1) собрать
2) подписать бинарники
3) собрать дистрибутив
4) подписать дистрибутив
5) протестировать на разных платформах.
я пока справился только с 1).
У меня есть отдельная машина, на которой есть ключ и сертификат - для CodeSigning. как бы автоматизировать этот процесс с jenkins?
нужно доставить туда пачку бинарников, подписать, забрать обратно.
Собрать дистрибутив из подписанных бинарников и проделать тоже самое с дистрибутивом - отправить на подписывалку, подписать, забрать обратно, распределить по тестовым узлам.