Jenkins与多个奴隶使用同一台机器

时间:2012-02-20 00:02:49

标签: hudson jenkins master-slave

目前,我的Jenkins设置仅限于一个执行程序。这几乎是我们构建的要求,因为我们有一个用户特定的日志文件,每次构建都会创建。为了获得多个执行器,我只是在本地盒子上设置了奴隶。我希望我们所有的奴隶共享相同的工作区,所以我只创建了一个符号链接。话虽如此,我不得不在工作空间上使用chmod 775,这样它就更像是基于组的工作区。反正有多个jenkins奴隶共用一个工作区吗?

编辑:关于我的1执行人限制。我们的应用程序是一个actionscript应用程序,我们在构建期间运行了很多单元测试,并创建了一个flash日志。我们希望能够为每个构建都有闪存日志。 unix上的flash登录存储在用户主目录中。从版本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 / heads / :refs / remotes / origin / ”返回状态码128:错误:将对象添加到存储库数据库.git / objects

的权限不足

2 个答案:

答案 0 :(得分:1)

更新:此答案不正确,请参阅评论。

转到每个从站(http://[jenkins_server]/computer/[slave_name]/configure)的节点配置,并将远程FS根目录设置为主站主目录的值 master 的主目录可以通过http://[jenkins_server]/configure找到。以防万一主目录下单击高级按钮,并确保工作区根目录设置为${ITEM_ROOTDIR}/workspace(因为奴隶将在[Remote FS root]/workspace)中创建他们的工作区。

尽管如此,我不能保证您不会遇到尝试从同一工作区中的各个从属服务器运行的各种问题。

答案 1 :(得分:0)

我假设您在工作区中存储了一些您希望在构建中持久保存/共享的信息。为此,您可以考虑使用Copy to Slave Plugin