Hi Les, Finally, the first sentence in "*Distributed builds*<https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds>" wiki and the list from Kohsuke Kawaguchi<https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds#Distributedbuilds-Example%3AConfigurationonUnix>started making sense to me. Thank you once more for sharing your experience.
Regarding the list (*shown below, and somewhat shortened and edited by me, e.g. s#/var/jenkins#/var/lib/jenkins#*), could you please comment on - #1 (the bold faced part). Is it really necessary? For example, the uid/gid usage in Fedora differ quite much from that of Ubuntu. I doubt even NIS would make it simpler. My approach is to review the /etc/passwdand /etc/group of all target platforms, pick a pair of uid/gid that are not used by all, and assign the pair for Jenkins' use (on both the master and slaves). The packages provided on Jenkins pkg site (e.g http://pkg.jenkins-ci.org/redhat/) don't make this task transparent, so the above step seems to be necessary. - #7. Do you think it's a nearly optimal way to do as part of setting up a slave? - #8. IMHO this is optional. What would you recommend? 1. Each computer has an user called jenkins and a group called jenkins. *All computers use the same UID and GID*. (If you have access to NIS, this can be done more easily.) This is not a Jenkins requirement, but it makes the slave management easier. 2. On each computer, /var/lib/jenkins directory is set as the home directory of user jenkins. Again, this is not a hard requirement, but having the same directory layout makes things easier to maintain. 3. All machines run sshd. Windows slaves run cygwin sshd. 4. All machines have ntpdate client installed, and synchronize clock regularly with the same NTP server. 5. Master's /var/lib/jenkins have all the build tools beneath it. 6. Master's /var/lib/jenkins/.ssh has private/public key and authorized_keys so that a master can execute programs on slaves through ssh, by using public key authentication. 7. *On master, I have a little shell script that uses rsync to synchronize master's /var/lib/jenkins to slaves (except /var/lib/jenkins/workspace) I use this to replicate tools on all slaves. * 8. (*optional*) /var/lib/jenkins/bin/launch-slave is a shell script that Jenkins uses to execute jobs remotely. 9. Finally all computers have other standard build tools like svn and cvsinstalled and available in PATH. Regards, -- Zack