2016-04-21 90 views
0

我在一臺salve機器上設置了一個Jenkins作業,而我是Linux shell的新手。現在我有一個問題:如何使「./gradlew」與「sudo ./gradlew」相同?

登錄身份詹金斯(詹金斯作業的用戶帳戶組),其執行./gradlew,比它會開始下載https://downloads.gradle.org/distributions/gradle-2.10-bin.zip,它會失敗,因爲糟糕的網絡,而如果它執行「sudo ./gradlew」,它將開始正常運行gradle。

有人可以幫助並告訴我,如何使用「./gradlew」與用戶jenkins中的「sudo ./gradlew」相同?

shell腳本來自所有的git,所以我不能通過添加「sudo」來修改它。

添加日誌中我的實際工作場景:

[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

這可能是一個權限問題。看看這裏,如果它可以幫助你.http://stackoverflow.com/questions/33820638/travis-yml-gradlew-permission-denied –

+1

這將有助於如果你發佈上下文的這個錯誤的控制檯日誌。 – 2016-04-21 09:31:34

+3

做**不**請將用戶jenkins添加到組根目錄並且不**使用sudo執行gradlew。兩者都對您的服務器有安全風險。而是嘗試修復你的設置,以便正常的gradlew工作。即使你真的必須使用sudo(你很可能不需要)不要將jenkins添加到根組,但添加到/ etc/sudoers文件中,用戶jenkins可以使用sudo執行這一個命令,而不提供一個密碼。但是,再次,更好地解決您的設置,以便不需要sudo。正如tony19的建議,給我們控制檯輸出,也許我們能夠幫助你解決你的*真實*問題。 – Vampire

回答

0

三江源所有的那種答案,我找到解決辦法問題:-)

我切換到根檢查〜/ .gradle,並發現文件是相當完整的,而〜/。格林詹金斯只有一個包裝文件夾,所以我將〜/ .gradle中的所有內容複製到jenkins的一箇中,而不是像jenkins一樣正常運行gradle。

0

嘗試與後續替換最後一行gradlew

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

感謝您的幫助,抱歉錯過了我的問題中的另一個細節 - 代碼是從git,我無法修改,因爲它是所有的,我必須在本地解決它,並處理權限問題。 –