Jenkins с несколькими рабами, использующими одну и ту же машину - PullRequest
2 голосов
/ 20 февраля 2012

В настоящее время моя установка Jenkins ограничена одним исполнителем. Это в значительной степени требование нашей сборки, потому что у нас есть специальный файл журнала, который создается при каждой сборке. Чтобы получить нескольких исполнителей, я просто настроил рабов на локальном компьютере. Я хотел, чтобы все наши подчиненные использовали одно и то же рабочее пространство, поэтому я просто создал символическую ссылку. Тем не менее, я должен был chmod 775 в рабочей области, чтобы он был больше группового рабочего пространства. В любом случае, если несколько рабов jenkins совместно используют одно рабочее пространство?

Редактировать: в отношении моего ограничения 1 исполнителя. Наше приложение представляет собой приложение ActionScript, и у нас есть много модульных тестов, которые выполняются во время нашей сборки и создают флэш-журнал. Мы хотим иметь возможность иметь флэш-журнал для каждой сборки. Флэш-журнал Unix хранится в домашнем каталоге пользователя. Начиная с версии 10.1, вы не можете изменить местоположение в mm.cfg. Поскольку Jenkins работает как пользователь, мы не можем одновременно запускать несколько тестов flexunit и можем правильно записывать флэш-журнал.

Вот некоторые неудачи с перми, которые я получаю:

Fetching upstream changes from git@company:repo/repo.git
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Error performing command: git fetch -t git@company:repo/repo.git             
+refs/heads/*:refs/remotes/origin/*
Command "git fetch -t git@company:repo/repo.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: error: insufficient permission for adding an object to repository database .git/objects

fatal: failed to write object
fatal: unpack-objects failed

at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:776)
at hudson.plugins.git.GitAPI.launchCommand(GitAPI.java:741)
at hudson.plugins.git.GitAPI.fetch(GitAPI.java:190)
at hudson.plugins.git.GitAPI.fetch(GitAPI.java:978)
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:765)
at hudson.plugins.git.GitSCM.access$100(GitSCM.java:80)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1003)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:970)
at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2045)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:287)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

Вызвано: hudson.plugins.git.GitException: Команда «git fetch -t git @ company: repo / repo.git + refs /head / : refs / remotes / origin / » вернула статус код 128: ошибка: недостаточно прав для добавления объекта в базу данных хранилища .git / objects

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Обновление : этот ответ неправильный, см. Комментарий.

Перейдите к конфигурации узла для каждого ведомого (http://[jenkins_server]/computer/[slave_name]/configure) и установите для Удаленный корень FS значение Домашний каталог ведущего . Домашний каталог master можно найти через http://[jenkins_server]/configure. На всякий случай нажмите Дополнительно в разделе Домашний каталог и убедитесь, что для Корневой каталог рабочего пространства установлено что-то вроде ${ITEM_ROOTDIR}/workspace (потому что ведомые будут создавать свои рабочие пространства в [Remote FS root]/workspace).

Тем не менее, я не могу гарантировать, что вы не столкнетесь с различными проблемами, пытаясь запустить задания от разных ведомых в одной рабочей области.

0 голосов
/ 20 февраля 2012

Я предполагаю, что вы храните некоторую информацию в рабочей области, которую хотите сохранить / разделить между сборками.Для этого вы можете рассмотреть возможность использования Copy to Slave Plugin .

...