2016-04-21 11 views
0

Ich richte einen Jenkins-Job in einer Salve-Maschine ein und ich bin neu in der Linux-Shell. Jetzt habe ich ein Problem:Wie man "./gradlew" das gleiche wie "sudo ./gradlew" macht?

Angemeldet als jenkins (ein Benutzerkonto Satz für Jenkins Job), führen Sie es ./gradlew, als es https://downloads.gradle.org/distributions/gradle-2.10-bin.zip zum Download startet, und es wäre wegen des schlechten Netzwerk ausfallen, während es beginnt, normal normal zu laufen, wenn es "sudo ./gradlew" ausgeführt wird.

Kann mir jemand helfen und mir sagen, wie man "./gradlew" genauso macht wie "sudo ./gradlew" als Benutzer jenkins?

Die Shell-Skripte stammten von git für alle, also kann ich sie nicht ändern, indem ich "sudo" hinzufüge.

Hinzufügen log in meinem realen Arbeits Szenario:

[email protected]:/local/jenkins/workspace/SV_TEST_/automation/robot$ id 
uid=180(jenkins) gid=0(root) group=0(root) 

[email protected]:/local/jenkins/workspace/SV_TEST_/automation/robot$ sudo ./gradlew webAPI:compileJava 
Starting a new Gradle Daemon for this build (subsequent builds will be faster). 
:common:compileJava 
warning: [options] bootstrap class path not set in conjunction with -source 1.7 
:common:processResources UP-TO-DATE 
:common:classes 
:common:jar 
:webAPI:compileJava 
warning: [options] bootstrap class path not set in conjunction with -source 1.7 

BUILD SUCCESSFUL 

Total time: 10.204 secs 
[email protected]:/local/jenkins/workspace/SV_TEST_/automation/robot$ /local/jenkins/workspace/SV_TEST/automation/robot/gradlew -g /local/jenkins/.gradle -p /local/jenkins/workspace/SV_TEST/automation/robot clean 
Downloading https://services.gradle.org/distributions/gradle-2.10-bin.zip 
... 
+1

Es könnte ein Berechtigungsproblem sein. Schauen Sie hier, wenn es Ihnen helfen kann. Http://stackoverflow.com/questions/33820638/travis-yml-gradlew-permission-denied –

+1

Es würde helfen, wenn Sie das Konsolenprotokoll dieses Fehlers mit Kontext veröffentlicht. –

+3

Do ** not ** Benutzer jenkins hinzufügen, um root zu gruppieren und tun ** nicht ** sudo zum Ausführen von Gradlew. Beides sind Sicherheitsrisiken für Ihren Server. Versuchen Sie stattdessen, Ihr Setup so zu reparieren, dass ein normales Gradlew funktioniert. Und selbst wenn Sie wirklich sudo verwenden müssen (Sie müssen wahrscheinlich nicht) fügen Sie keine jenkins zur Stammgruppe hinzu, sondern fügen Sie der Datei/etc/sudoers hinzu, dass Benutzer jenkins diesen einen Befehl mit sudo ausführen kann, ohne zu liefern ein Passwort. Aber noch einmal, repariere dein Setup, so dass kein Sudo notwendig ist. Wie tony19 vorgeschlagen, geben Sie uns die Konsolenausgabe, und vielleicht können wir Ihnen helfen, Ihr * real * -Problem zu lösen. – Vampire

Antwort

0

Thankyou alle für die netten Antworten, finde ich die Art und Weise zu lösen das Problem :-)

Ich wechselte auf root zu überprüfen ~/.gradle, und fand die Dateien waren ziemlich vollständig, während ~/.gradle für jenkins hatte nur einen Wrapper-Ordner, so Ich habe alles in ~/.gradle für root auf das für jenkins kopiert, dann lief es normalerweise normal, ohne als jenkins heruntergeladen zu werden.

0

Versuchen Sie, die letzte Zeile in gradlew mit dem Follow ersetzen:

exec sudo "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "[email protected]" 
+0

Danke für die Hilfe, Entschuldigung ein weiteres Detail in meiner Frage zu verpassen - der Code war von Git, ich kann nicht ändern, da es für alle ist, muss ich es in lokalen lösen und mit dem Berechtigungsproblem umgehen. –

Verwandte Themen