2014-11-25 98 views
4

我有Jenkins安裝在Linux機器上(CentOS),我試圖在主控主機上構建基於Gradle的項目。我的項目使用Stash基於Git的存儲庫作爲SCM。詹金斯`使gradlew可執行`選項不使`gradelw可執行

在Jenkins構建作業中,我啓用了Clean before checkout選項。我發現gradlew腳本沒有可執行權限被檢查。所以,我爲該任務設置了Make gradlew executable複選框。但我仍然看到問題:

java.io.IOException: Cannot run program "/project/dir/gradlew" (in directory "/project/dir/"): error=13, Permission denied 

我檢查gradlew權限並沒有對文件沒有可執行文件。

有誰知道如何調試/設置它?

現在,我必須使用addetional構建步驟execute shell script來設置gradlew的可執行權限。

注意1:我使用Use Gradle Wrapper構建選項而不是Invoke Gradle,因爲我在Internet上找到了一些建議。

注意2:我發現make gradlew script executable問題,並檢查我的Jenkins版本應該包含此修復程序。我使用詹金斯版本1.581

回答

12

讓我們假設script.sh文件需要設置可執行位。使用command git ls-tree檢查文件的權限:

C:\views\myproject>git ls-tree HEAD 
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe script.sh 

正如你可以看到該文件具有644權限(忽略100)。我們想將其更改爲755:

C:\views\myproject>git update-index --chmod=+x script.sh 
C:\views\myproject>git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
#  modified: script.sh 
# 

現在該文件已暫存。請注意,文件內容不會更改,只有元數據。我們必須提交文件,以便保存更改:

C:\views\myproject>git commit -m "Changing file permissions" 
[master 77b171e] Changing file permissions 
0 files changed, 0 insertions(+), 0 deletions(-) 
mode change 100644 => 100755 script.sh 

運行git ls-tree再次看到了變化:

C:\views\myproject>git ls-tree HEAD 
100755 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe script.sh 

Source