我有一个用Jenkins创建的简单矩阵项目。
我正在尝试执行一个简单的shell脚本。在此之前,我运行svn checkout来获取源代码。我尝试了很多方法来执行shell脚本,但一切都行不通 这意味着我无法看到shell脚本的输出。
我试图执行以下行:
_make.sh
./_make.sh
bash -ex _make.sh
#!/bin/sh
./_make.sh
我在755上手动chmod了文件( _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
答案 0 :(得分:2)
问题:您的脚本是否也从Subversion签出?
=====
确保_make.sh实际上在您的工作区中。矩阵作业工作区位于:
http://yourserver.com/jenkins/jobs/<JOBNAME>/label=<SLAVEorLABEL-NAME>/ws/
假设它是,
在“执行外壳”中,尝试以下操作:
source ./_make.sh
或
source ./_make.sh 2>&1
在_make.sh中,请确保您拥有#!/ bin / bash 或#!/ bin / sh ,具体取决于您需要的内容。
您可以尝试查看脚本是否正常工作的另一件事是将以下行添加到脚本并运行它:
echo "A" > test
如果在脚本运行并且包含“A”后工作区中存在文件测试,则表示您的脚本正在执行。
最后,还有另一个原因导致您的脚本无法执行,尽管这通常会给您一个错误。
如果您在Windows中创建了脚本,则可能是错误的行结尾。尝试:
dos2unix _make.sh
这会将行结尾转换为unix样式。我遇到过这个问题,但对我来说却显示错误。
答案 1 :(得分:1)
据我可以判断你的输出是来自父作业 - 而不是来自矩阵子作业(否则它会说'由上游项目开始......')。
你需要进入子控制台输出 - 然后我确信它会变得清楚它失败的原因。您可以通过单击父项目中的球来到达子项目,然后查找“控制台输出”链接。
或者您可以尝试手动访问它 - 它将位于[jenkins_root]/jobs/[parent_job_name]/configurations/**/builds/[build_id]/log
中(其中**
表示目录树中的任何多个级别)。
请注意,@ Sagar建议您的文件必须签出到子项目工作区,而不是父项。