2012-08-23 12 views
5

Używam Jenkinsa na pudełku z linkiem redhat. Moja kompilacja to projekt maven 2.2.1, który zawiera testy selenu. Mam takie same ustawienia na pudełku ubuntu, które działa dobrze, ale kiedy próbuję wywołać to samo polecenie maven najwyższego poziomu na mojej maszynie Redhat VM, otrzymuję następujący błąd.Jenkins otrzymuje błędy odmowy uprawnień podczas uruchamiania programu

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. 

Próbując rozwiązać ten problem, ja już restart Jenkinsa

sudo service jenkins restart 

ale nie ustąpi. Czy ktoś już kiedyś to robił?

+4

Sprawdź właściciel/uprawnienia katalogu Jenkins próbuje pisać. Użytkownik, na którym działa Jenkins, musi mieć możliwość zapisu do tego katalogu lub otrzymasz błąd odmowy zgody. – renab

+0

@Jeśli zgłosisz swoją sugestię, zezwalasz jenkinsowi na pominięcie błędów uprawnień, ale uprawnienia między polami ubuntu i redhat były tak samo, gdy otrzymywałem błąd. Znowu chmod a + rw do plików, o których mowa, może być pracą dookoła, chociaż wydaje się, że nadal czegoś brakuje. – OrwellHindenberg

+0

Czy Jenkins działa pod tym samym użytkownikiem w pudełkach Ubuntu i Red Hat? Jeśli tak, to czy ls-lrt pokazuje, że użytkownik Jenkins jest właścicielem katalogów, do których próbuje pisać? Własność jest tak samo ważna jak uprawnienia w tym przypadku, ponieważ uprawnienia mogą być poprawne dla właściciela, aby zapisywać do katalogu, ale jeśli pisanie przez użytkownika nie jest właścicielem, można odmówić mu pozwolenia. – renab

Odpowiedz

3

Użyj ls -al, aby wyświetlić uprawnienia plików.

Aby uzyskać więcej informacji, zobacz this link.

Przeczytaj skrypt uruchamiania usługi, aby sprawdzić nazwę użytkownika, na którym działa Jenkins.

less /etc/init.d/jenkins

Być może ręcznie zainstalować Jenkins do kontenera Java EE, takich jak tomcat6. Jeśli tak jest, należy użyć:

less /etc/init.d/tomcat6

Powiązane problemy