2012-08-23 12 views
5

Ich renne Jenkins auf einem redhat Linux-Box. Mein Build ist ein maven 2.2.1-Projekt, das Selen-Tests enthält. Ich habe das gleiche Setup auf einer Ubuntu-Box, das funktioniert gut, aber wenn ich versuche, den gleichen Maven-Befehl der obersten Ebene auf meiner Redhat-VM aufzurufen, erhalte ich den folgenden Fehler.Jenkins bekommt Erlaubnis verweigert Fehler beim Ausführen von Maven

org.apache.maven.surefire.booter.SurefireExecutionException: Unable to create file for report: /var/lib/jenkins/jobs/selenium/workspace/target/surefire-reports/com.MyComp.bio.PreferencesTest.txt (Permission denied); nested exception is java.io.FileNotFoundException: /var/lib/jenkins/jobs/selenium/workspace/target/surefire-reports/com.MyComp.bio.PreferencesTest.txt (Permission denied); nested exception is 
org.apache.maven.surefire.report.ReporterException: Unable to create file for report: /var/lib/jenkins/jobs/selenium/workspace/target/surefire-reports/com.MyComp.bio.PreferencesTest.txt (Permission denied); nested exception is java.io.FileNotFoundException: /var/lib/jenkins/jobs/selenium/workspace/target/surefire-reports/com.MyComp.bio.PreferencesTest.txt (Permission denied) 
org.apache.maven.surefire.report.ReporterException: Unable to create file for report: /var/lib/jenkins/jobs/selenium/workspace/target/surefire-reports/com.MyComp.bio.PreferencesTest.txt (Permission denied); nested exception is   
java.io.FileNotFoundException: /var/lib/jenkins/jobs/selenium/workspace/target/surefire-reports/com.MyComp.bio.PreferencesTest.txt (Permission denied) 
java.io.FileNotFoundException: /var/lib/jenkins/jobs/selenium/workspace/target/surefire-reports/com.MyComp.bio.PreferencesTest.txt (Permission denied) 
at java.io.FileOutputStream.open(Native Method) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:212) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:165) 
at java.io.FileWriter.<init>(FileWriter.java:90) 
at org.apache.maven.surefire.report.AbstractFileReporter.testSetStarting(AbstractFileReporter.java:57) 
at org.apache.maven.surefire.report.ReporterManager.testSetStarting(ReporterManager.java:219) 
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138) 
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) 
at org.apache.maven.surefire.Surefire.run(Surefire.java:177) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) 
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] There are test failures. 

Bei dem Versuch, dieses Problem, das ich

sudo service jenkins restart 

aber es bleibt Neustart Jenkins haben zu lösen. Wer ist schon einmal darauf gestoßen?

+4

Überprüfen Sie den Eigentümer/Berechtigungen für das Verzeichnis, das Jenkins zu schreiben versucht. Der Benutzer, unter dem Jenkins läuft, muss in der Lage sein, in dieses Verzeichnis zu schreiben, oder Sie erhalten einen Fehler mit der Berechtigung – renab

+0

@renab. Ihr Vorschlag erlaubte es jenkins, die Berechtigungsfehler zu umgehen, aber die Berechtigungen zwischen den Ubuntu- und Redhat-Boxen waren Gleiches, als ich den Fehler bekam. Wieder kann ein chmod a + rw zu den fraglichen Dateien eine Arbeit sein, obwohl es scheint, als ob mir noch etwas fehlt. – OrwellHindenberg

+0

Wird Jenkins unter dem gleichen Benutzer auf beiden Ubuntu- und Red Hat-Boxen ausgeführt? Wenn ja, zeigt ein ls -lrt an, dass der Jenkins-Benutzer die Verzeichnisse besitzt, in die er zu schreiben versucht? Das Eigentumsrecht ist in diesem Fall genauso wichtig wie die Berechtigungen, da die Berechtigungen für den Eigentümer korrekt sein können, um in ein Verzeichnis zu schreiben. Wenn der Benutzer jedoch nicht der Eigentümer ist, kann ihm die Berechtigung verweigert werden. – renab

Antwort

3

Verwenden Sie ls -al, um die Berechtigungen für Dateien anzuzeigen.

Weitere Informationen finden Sie unter this link.

Lesen Sie das Dienststartskript, um den Namen des Benutzers zu überprüfen, unter dem Jenkins ausgeführt wird.

less /etc/init.d/jenkins

Sie manuell jenkins zu einem Java EE Container wie tomcat6 installiert haben. Wenn dies der Fall ist, sollten Sie verwenden:

less /etc/init.d/tomcat6

Verwandte Themen