2012-02-02 66 views
1

我有一個用Jenkins創建的簡單矩陣項目。Shell腳本沒有記錄在矩陣項目中

我想執行一個簡單的shell腳本。在此之前,我運行svn checkout來獲取源代碼。我嘗試了很多方法來執行shell腳本,但都不起作用。
這意味着我看不到shell腳本的輸出。

以下幾行我曾試圖執行:

_make.sh 
./_make.sh 
bash -ex _make.sh 

#!/bin/sh 
./_make.sh 

我手動上755 chmod'ed文件(_make.sh),但它沒有什麼區別。

感謝您的任何建議。

編輯:
我總是得到以下的輸出:

Started by user anonymous 
Building in workspace /var/lib/jenkins/jobs/ABC/workspace 
Triggering all 
all completed with result FAILURE 
Finished: FAILURE 

_make.sh

#!/bin/bash 

echo "A" > test 

g++ -c src/*.cc src/*.h -pthread -D_REENTRANT -I"gtkmm/include/gtkmm-2.4" -I"gtkmm/lib/gtkmm-2.4/include" -I"gtkmm/include/giomm-2.4" -I"gtkmm/lib/giomm-2.4/include" -I"gtkmm/include/pangomm-1.4" -I"gtkmm/lib/pangomm-1.4/include" -I"gtkmm/include/gtk-2.0" -I"gtkmm/include/gtk-unix-print-2.0" -I"gtkmm/include/atkmm-1.6" -I"gtkmm/include/gdkmm-2.4" -I"gtkmm/lib/gdkmm-2.4/include" -I"gtkmm/include/glibmm-2.4" -I"gtkmm/lib/glibmm-2.4/include" -I"gtkmm/include/glib-2.0" -I"gtkmm/lib/glib-2.0/include" -I"gtkmm/include/sigc++-2.0" -I"gtkmm/lib/sigc++-2.0/include" -I"gtkmm/include/cairomm-1.0" -I"gtkmm/lib/cairomm-1.0/include" -I"gtkmm/include/pango-1.0" -I"gtkmm/include/cairo" -I"gtkmm/include/pixman-1" -I"gtkmm/include/freetype2" -I"gtkmm/include/directfb" -I"gtkmm/include/libpng12" -I"gtkmm/lib/gtk-2.0/include" -I"gtkmm/include/atk-1.0" -I"gtkmm/include/gio-unix-2.0" -I"gtkmm/include/fontconfig" -I"gtkmm/include" -D FREEGLUT_STATIC -I"freeglut/include/GL" -I"freeglut/include" -I"freeglut/include" -I"DevIL/include" -I"mysql/include" -I"lib3ds" -mconsole 

g++ *.o -o test.exe -pthread -L"gtkmm/lib"-lgtkmm-2.4 -latkmm-1.6 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lgtk-x11-2.0 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -L"freeglut/lib" -L"DevIL/lib" -L"lib3ds/lib3ds/.libs" -L"gtkglextmm/gtkglext/gtkmm/gl/.libs" -L"gtkglextmm/gdkglext/gdkmm/gl/.libs" -L"mysql/lib/opt" -l3ds -lgtkglextmm-win32-1.2-0 -lgdkglextmm-win32-1.2-0 -lmysql -lfreeglut -lDevIL -lilut -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -lws2_32 -Wl,--subsystem,windows -mconsole 
+1

1)什麼是控制檯輸出? 2)您是否已手動檢查文件是否在工作區中 - 矩陣版本具有複雜的目錄結構。點擊矩陣中的球,然後點擊「工作區」,你會看到你的文件嗎? – 2012-02-02 17:04:20

+0

輸出見上面,是的文件在正確的地方在工作區。 – CSchulz 2012-02-03 09:44:20

回答

1

據我可以從你的輸出判斷它來自父母的工作 - 而不是從矩陣子工作(否則它會說'上游項目開始......')。

您需要進入子控制檯輸出 - 然後我相信它會明白爲什麼會失敗。您可以通過在父項目中單擊其球來查看子項目,然後查找「控制檯輸出」鏈接。

或者你可以嘗試手動到它 - 它會在[jenkins_root]/jobs/[parent_job_name]/configurations/**/builds/[build_id]/log(其中**意味着在目錄樹下的任何多級)的某處。

請注意,由於@Sagar建議您的文件必須檢出到子項目工作區中,而不是父項。

+0

到目前爲止,這是問題所在。現在我找到了包含錯誤的日誌文件。 – CSchulz 2012-02-03 11:22:41

2

問:你的腳本還從Subversion簽出?

=====

確保_make.sh實際上是在您的工作空間。該矩陣的工作工作區是:

http://yourserver.com/jenkins/jobs/<JOBNAME>/label=<SLAVEorLABEL-NAME>/ws/ 

假設是,

在你的 「執行shell」,請嘗試以下操作:

source ./_make.sh 

source ./_make.sh 2>&1 

在你的_make.sh,請確保你有#!/ bin/bash#!/ bin/sh取決於你需要哪個。

另一件事,你可以嘗試看看,如果腳本運行在所有的,是以下行添加到腳本並運行它:如果腳本後,在工作區中的文件存在測試

echo "A" > test 

已經運行並且包含「A」,腳本正在執行。

最後,還有一個原因是爲什麼你的腳本不會執行,儘管這通常會給你一個錯誤。

如果您在Windows中創建腳本,則可能會出現錯誤的行尾。試試:

dos2unix _make.sh 

這會將行結束符轉換爲unix樣式。我遇到了這個問題,但對我來說它顯示了一個錯誤。

+0

對於你的問題,是的,它來自SVN,但它沒有區別。我已經完成了結賬,之後禁用了SVN。你提到的任何想法都沒有幫助我。測試文件已創建,但在任何情況下都沒有控制檯輸出。我在腳本中測試了一個簡單的回聲,但沒有成功。 – CSchulz 2012-02-03 09:52:52