Я пишу ферму параллельной сборки для создания кросс-платформенных приложений C++ для разных платформ/сред. Каждый раз, когда новый код переносится на git repo, я строю и тестирую последний код на всех платформах.GNU Parallel host sticky jobs
Я установил параллельное правильное распределение заданий среди нескольких хостов с помощью опции -sshlogin. Передача файлов, сбор результатов и результатов. Это все работает более чем нормально, и мне нравится этот инструмент.
Время сборки иногда довольно долго для некоторых платформ, я хотел бы, чтобы сборка была как можно более инкрементной.
Моя единственная проблема заключается в том, что сборка является только инкрементальной, если планировщик отправляет задания на один и тот же компьютер и повторно использует артефакты предыдущей сборки на этом конкретном хосте.
Скажите, что у меня 3 хостов, у меня есть 1 шанс в 3 для построения, чтобы быть инкрементным. Если хосты не создали эту платформу через некоторое время, это может занять много времени.
Возможно ли получить контроль над хостом, какой конкретный источник входного сигнала будет запущен и только резерв на другие хосты, если хост занят?
В идеале, мне бы хотелось увидеть систему тегов, в которой я помещаю источник ввода с именем и тегом нескольких хостов с именем, создавая пулы заданий и пулы машин, специализирующихся на этом типе сборки.
Но очень простая реализация, в которой источники входного сигнала распределены в том же порядке, что и порядок, определяемый sshlogins, может быть простым операционным исправлением & в моей ситуации.
Я попытался найти исходный код, чтобы реализовать его сам, но я вижу только генерацию документа, когда просматриваю код в Savannah.
Любые идеи?
Спасибо,
M