Das Problem ist, dass der Jenkins-Slave versucht, eine UI zu starten, was aber natürlich nicht erlaubt ist. Ich habe den gleichen Fehler gefunden, der sich auf einen offiziellen Fehlerbericht bezieht: https://issues.jenkins-ci.org/browse/JENKINS-15697
Die Lösung besteht in diesem Fall darin -Djava.awt.headless=true
, JVM-Optionen hinzuzufügen, was zur folgenden Konfiguration eines LaunchDaemon führt.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.example.ci</string> <key>ProgramArguments</key> <array> <string>sudo</string> <string>/usr/bin/java</string> <string>-Djava.awt.headless=true</string> <string>-jar</string> <string>/Developer/jenkins/slave.jar</string> <string>-jnlpUrl</string> <string>http://ci.****/computer/****/slave-agent.jnlp</string> <string>-jnlpCredentials</string> <string>user:apitoken</string> </array> <key>KeepAlive</key> <true/> <key>StandardOutPath</key> <string>/Developer/jenkins/stdout.log</string> <key>StandardErrorPath</key> <string>/Developer/jenkins/error.log</string> </dict> </plist>
Ich habe das getestet und es funktioniert.