Используйте умные сборщики или много планировщиков для компиляции и тестирования 5 сборок - PullRequest
0 голосов
/ 05 февраля 2011

Я хочу настроить среду непрерывной интеграции с тремя операционными системами (MacOSX, Windows и Linux). Мне нужно собрать пять разных сборок: win32bit, win64bit, lin32bit, lin64bit и mac. Для каждой сборки мне нужно сделать следующие шаги:

-compile
-put some files in the binary folder
-make a 7z-archive of the binary folder
-upload the 7z-archive to a server

Конечно, есть зависимости. Например, бесполезно создавать и загружать 7z-архив, если компиляция не удалась.

Моей первой попыткой было построить небольшую иерархическую систему планировщиков и сборщиков, но я не знаю, как обрабатывать зависимости в каждой сборке:

Мой план (Start_scheduler прослушивает коммиты svn):

\Start_scheduler, kicks off win_builder, lin_builder, and mac_builder
 \win_builder, compiles and uploads win32bit and win64bit
   -compile 32bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 32bit compile was succesful
   -compile 64bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 64bit compile was succesful
 \lin_builder, compiles and uploads lin32bit and lin64bit
   -compile 32bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 32bit compile was succesful
   -compile 64bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 64bit compile was succesful
 \mac_builder, compiles and uploads mac
   -compile
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -triggerupload_scheduler to  upload IF compile was succesful
\upload_scheduler
 -upload 7z-archive to central server
 -send notification about new archive

В основном у меня две проблемы. Во-первых, как я могу определить IF-зависимость между компиляцией и загрузкой, но в то же время сделать 64-битную компиляцию независимой от 32-битной: система сборки должна пытаться компилировать 64-битную, даже если 32-битная ошибка. И во-вторых, можно ли параметризовать upload_scheduler, чтобы я мог использовать его для каждой сборки? Было бы утомительно, если бы мне нужно было поддерживать отдельный upload_scheduler для каждой сборки.

Ответы [ 3 ]

0 голосов
/ 05 февраля 2011

Вы не можете превзойти Хадсона (теперь называемого Дженкинс) системой непрерывной интеграции для Python. Google для "Гудзон питон".

0 голосов
/ 08 марта 2011

Вместо использования одного компоновщика как для 32-битных, так и для 64-битных сборок, вы можете использовать отдельные сборки платформ, которые будут работать на одной сборке.В этом случае 32-битные сборки создаются отдельно от 64-битных сборок, и одна сборка никогда не подведет другую.

Что касается планировщика загрузки, вам может потребоваться TriggerableScheduler .

0 голосов
/ 05 февраля 2011

Эти вещи хорошо обрабатываются Ant и Cruise Control на стороне Java.

Интересно, может ли PyAnt помочь вам с Python.

...