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

Reply via email to