How to setup a macOS Jenkins node¶
Table of Contents
Note
Last installed/updated on 2017-11-20 (Mac OS 10.13.1 High Sierra) and see this older (private) document for previous instructions.
Install macOS High Sierra¶
Install: APFS case-sensitive Post-install: No Siri, no location services, no cloud anything, no analytics, no filevault disk encryption.
Setup SSH/VNC for Remote Access¶
Make sure you don’t use too long of a password. That makes VNC auth fail in bizarre ways. In particular, VNC auth limits you to 8 characters.
Go to: Apple->System Preferences->Sharing
set hostname to something reasonable
check “Remote Login”
check “Screen Sharing”
add Terminal to the dock
Go to: Apple->System Preferences->Energy Saver
set sleep to never
uncheck everything
Go to: Apple->Security
click lock to unlock it
“Allow Apps from app store and verified developers”
uncheck “Require password after 5 minutes” box
uncheck “Disable automatic login”
Host Setup¶
Install XCode tools:
$ xcode select --install
Install JDK for Jenkins.
Easiest way is to type java at the terminal and let Apple link you to Oracle’s JDK download.
I installed the latest JDK 8 (withholding Java 9 for now).
Install Homebrew following instructions at https://brew.sh
Install ssh-askpass via homebrew
$ brew tap theseal/ssh-askpass
$ brew install ssh-askpass
Create ~/.bash_profile with this one line:
. ~/.bashrc
Create ~/.bashrc with one line:
export ROS_DOMAIN_ID=XXX # where XXX is chosen from this document
Set up dummy git names:
$ git config --global user.email "nobody@osrfoundation.org"
$ git config --global user.name "HOSTNAME"
Install ROS 2 Dependencies¶
Install them according to our install instructions.
Including:
brew packages
pip packages
the optional RTI Connext and OpenSplice packages
everything but downloading the source and building ROS 2 (unless you want to do so for testing the setup)
RQt dependencies¶
brew install sip pyqt5Fix some path names when looking for sip stuff during install (see ROS 1 wiki):
ln -s /usr/local/share/sip/Qt5 /usr/local/share/sip/PyQt5brew install graphvizpython3 -m pip install pygraphviz pydotbrew link --force qtThis is the quickest solution but may cause issues when upgrading Qt or if other packages are expecting Qt 4. Another option is to update your
PATHandCMAKE_PREFIX_PATHto include the Qt install location:$ export PATH="$(brew --prefix qt)/bin:$PATH" $ export CMAKE_PREFIX_PATH="$(brew --prefix qt):$CMAKE_PREFIX_PATH"
RTI Connext Specific Instructions¶
The Open Robotics license is here (private repo): https://github.com/osrf/rticonnextdds-src/blob/license/rti_license.dat
Open the RTI launcher application
In the RTI launcher, open the file dialog to choose the license file.
Install it for all users.
Click the Installation tab
Click RTI Package installer
Navigate to the connext extracted directory (usually something like
/Applications/rti_...Select the
rti_security rtipkg(don’t bother with the openssl ones, we use system openssl)
Set the shared memory parameters from https://community.rti.com/kb/osx510
Do not bother to reboot yet.
Setting up the Jenkins Workspace and Agent¶
$ mkdir jenkins jenkins-agent
$ cd jenkins-agent
$ wget http://ci.ros2.org/jnlpJars/slave.jar
Copy the jenkins agent plist from https://gist.github.com/nuclearsandwich/c9546e76ba63767bc1025c393e85235b
Edit the file to match the jnlp url and secret of the host you’re setting up. You may need to create a new agent if you’re not re-imaging an existing one.
$ mkdir ~/Library/LaunchAgents
$ cp ~/jenkins-agent/org.ros2.ci.jenkins-agent.plist ~/Library/LaunchAgents
$ launchctl load -w ~/Library/LaunchAgents/org.ros2.ci.jenkins-agent.plist
Reboot! You should be good to go, run some test CI jobs.