免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10554 | 回复: 17
打印 上一主题 下一主题

hudson执行不了gmake [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-24 09:01 |只看该作者 |倒序浏览
Dear ALL
     我的hudson一个任务想执行gmake命令去编译后台的模块。hudson里面是这么配置的Execute shell->Command :/var/lib/hudson/build.sh -label $JOB_NAME-$BUILD_NUMBER
build.sh脚本如下:
#!/bin/bash

#OB_REL=/root/result

cd $WORKSPACE
echo "WORKSPACE:="$WORKSPACE;
gmake -f Makefile
cd $OB_REL
cd $OB_REL/lib
ls -tlr *.sl
dltest *.sl
能加载到WORKSPACE目录下,但是执行gmake不正确,手工执行没问题。
还请高人指点!

论坛徽章:
0
2 [报告]
发表于 2011-05-24 10:00 |只看该作者
好亲切啊,第一次在shell版看到有人问Hudson的……

论坛徽章:
0
3 [报告]
发表于 2011-05-24 10:07 |只看该作者
设置步骤没问题,我有几个疑问:
1,Hudson搭在哪里?
2,命令行中有 -label选项,但是你的脚本中呢?没用到啊?
3,$WORKSPACE是环境变量,但是$OB_REL呢,是什么变量?
4,你的命令是在哪里执行的?master上,还是slave上?什么OS环境?

论坛徽章:
0
4 [报告]
发表于 2011-05-24 10:15 |只看该作者
回复 3# xiaopan3322


    1.HUDSON大家在Linux环境下面
    2.应该是我不太理解-label选项的意义 还望讲解下
    3.$WORKSPACE是HUDSON的任务工作区,没有加载到环境变量中,这个能shell脚本中应该能直接调用 $OB_REL是环境变量
    4.命令应该是在master上面执行
       [root@rhel142 hudson]# uname -a
Linux rhel142 2.6.18-128.2.1.el5 #1 SMP Wed Jul 8 11:54:47 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

论坛徽章:
0
5 [报告]
发表于 2011-05-24 10:21 |只看该作者
回复 4# 只为踏雪寻梅


    -label就是你自己脚本里写的入参……不过我想这里应该没关系,因为你没有错误判断
    WORKSPACE是Hudson本身的环境变量,可以直接使用的
   
WORKSPACE
    The absolute path of the workspace.

   
    把你的Hudson的Console Output贴出来!!!

论坛徽章:
0
6 [报告]
发表于 2011-05-24 10:40 |只看该作者
回复 5# xiaopan3322


    Started by user anonymous
[workspace] $ /bin/sh -xe /tmp/hudson8655029990995273156.sh
+ /var/lib/hudson/build.sh example-31
WORKSPACE:=/var/lib/hudson/jobs/example/workspace
Makefile:8: /etc/Tmp.mk: No such file or directory
Makefile:59: /etc/CALLmake: No such file or directory
gmake: *** No rule to make target `/etc/CALLmake'.  Stop.
ls: *.sl: No such file or directory
[dltest] ERROR dlopen: *.sl: cannot open shared object file: No such file or directory

Tmp.mk和CALLmake在$OB_REL的etc目录下面都有  而且本身Makefile定义的路径也定义在$(OB_REL)/etc/

论坛徽章:
0
7 [报告]
发表于 2011-05-24 10:54 |只看该作者
回复 6# 只为踏雪寻梅


Makefile:8: /etc/Tmp.mk: No such file or directory
Makefile:59: /etc/CALLmake: No such file or directory
gmake: *** No rule to make target `/etc/CALLmake'.  Stop.
ls: *.sl: No such file or directory
[dltest] ERROR dlopen: *.sl: cannot open shared object file: No such file or directory

Tmp.mk和CALLmake在$OB_REL的etc目录下面都有  而且本身Makefile定义的路径也定义在$(OB_REL)/etc/


打印一下${OB_REL}这个变量

论坛徽章:
0
8 [报告]
发表于 2011-05-24 10:56 |只看该作者
回复 7# xiaopan3322


    [root@rhel142 workspace]#
[root@rhel142 workspace]# echo $OB_REL
/root/result

论坛徽章:
0
9 [报告]
发表于 2011-05-24 11:07 |只看该作者
本帖最后由 xiaopan3322 于 2011-05-24 11:09 编辑

回复 8# 只为踏雪寻梅


    好,那你再回过头去看看你的log:
Makefile:8: /etc/Tmp.mk: No such file or directory
Makefile:59: /etc/CALLmake: No such file or directory
gmake: *** No rule to make target `/etc/CALLmake'.  Stop.
ls: *.sl: No such file or directory
[dltest] ERROR dlopen: *.sl: cannot open shared object file: No such file or directory

Tmp.mk和CALLmake在$OB_REL的etc目录下面都有  而且本身Makefile定义的路径也定义在$(OB_REL)/etc/

而你的$OB_REL路径却是:
[root@rhel142 workspace]# echo $OB_REL
/root/result

    明白了吗???

论坛徽章:
0
10 [报告]
发表于 2011-05-24 11:14 |只看该作者
本帖最后由 xiaopan3322 于 2011-05-24 11:27 编辑

再和你说的简单点吧:
就是把你的脚本中的这句话打开,不要注释掉:
#OB_REL=/root/result
->
OB_REL=/root/result

这样做的原因是:
Hudson并不认你的系统上(包括master和slave)的环境变量,它只认自己内部的环境变量……
如果你想用也可以,应该有三种方法:
1. 直接再定义一遍,也就是你这里的情况
2. source .bashrc或者其他的写有环境变量的脚本
3. 配置Hudson的node中的环境变量:
Hudson -> Nodes -> <node name> -> Configure -> Node Properties -> Environment variables中设置
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP