非常感谢 laofo 整理帖子并提供详细资料 ^_^
如果以后遇到类似的问题,可以试试 i 子休说的方法,把 spawn 接的命令写成具体应用程序路径,看是不是 Jenkins 读取的环境变量没有找到 lunch 的路径。
貌似 lunch 可以直接跟参数,如果你的选项是固定的,试试直接跟参数试试呢?
有的时候把所有执行命令直接写在 Jenkins 的 command 框中会有莫名其妙的问题,你可以试试把这些命令都放在一个 shell 脚本中,然后在 Jenkins 的 command 框中只写一条调用 shell 脚本的命令。调用的时候可以加上 debug 的参数,让它输出更多信息,便于排查。
[i=s] 本帖最后由 wshzhn 于 2013-4-18 16:26 编辑
那直接在 Slave 上分析就可以了吧? 你是想把 Save 上生成的日志拿到 Master 上去分析吗?
如果想实现 Master 和 Slave 之间的文件拷贝的话,可以试试 Copy To Slave Plugin 这个插件。 https://wiki.jenkins-ci.org/display/JENKINS/Copy+To+Slave+Plugin
因为每个 branch 每天需要跑在 6 个平台,每个平台有 3 个产品,还有衍生出的一些其他的相关产品,包括编译和测试,这样拆分开的话会建很多 job 和 slave,太麻烦了。
非常感谢大家^_^
dcwang 说的 Matrix job 的方式基本可以满足需求,虽然做不到可以针对每个 slave 执行相应的脚本或者命令,至少可以同时触发多个平台的构建,套了一层脚本,脚本中针对不同平台做个判断,然后执行相应的命令。
是要同时触发。 比如 build 需要同时在 Linux、Sun、IBM 等多个平台上进行,一个 job 同时触发配置好的多个平台的相应的 slave,最好也能每个平台可以填写 label 或者多个 node,然后从每个平台的这组候选中选择一个负载轻的运行。
貌似比较新的 Email-ext plugin 插件中已经直接带有附件功能了,有专门的一项,指定 workspace 下的一个相对路径即可。
[i=s] 本帖最后由 wshzhn 于 2012-11-7 22:35 编辑
貌似是编译的代码中用了一些 jdk 较低版本支持的、但在较高版本的 JDK 中被弃用的 API。就是说你用于编译的 JDK 版本太高了。 让开发人员根据提示检查一下吧。或者你换成跟开发人员使用的同样的 JDK 版本。
按照 laofo 提供的网址里边的解释,出现你的问题,貌似是由于 workspace 路径配置的不对,导致 Jenkins 找不到这个 job 的 workspace,就会自动启动去获取 workspace。 再检查一下相关设置吧。
如果是固定 slave 的话,建议把 Slave 服务设置成系统服务。
找一下你们使用的 MyEclipse 中的编译器版本,这个具体我没有找过,你可以上网查查,或者看看官网,应该有介绍。然后把 Ant 中 javac 任务中的编译器指定成跟 MyEclipse 中相同的就行了。
可以两种触发都设置啊
通过 [b] Build periodically[/b] 设置
我觉得这种两台机器需要交互的使用 Slave 方便一些。
我当时遇到的问题是确实他们的代码写的不太规范,但是 eclipse 编译器校验的不是很严格,所以编译过了,javac 编译时校验的严格,所以编译不过,修改代码后就可以了。
哈哈~恭喜恭喜
没有说编译结果不同会影响代码的功能,只是针对他的问题解释了一下。 不同编译器对 JAVA 规范的遵守程度和处理可能稍有差别,编译结果不太一样。 确实有出现过同样的代码,Eclipse 中的编译器能编译过,SUN 的 javac 编译不过的情况。
你在哪儿把启动 Jenkins 的用户设置为对 CC 有权限的域用户的?
我知道 Eclipse 使用的编译器是自带的,不是 SUN 的 JDK,所以编译结果跟 javac 编译的不同; Myeclipse 是集成了 Eclipse 的,估计编译器也跟 Eclipse 用的相同的,但是具体没有查证,你可以自己查查看。 Ant 如果没有特殊设置的话是使用 JDK 的 javac 编译的。
呃。。。貌似说过
你要把启动 Jenkins 的用户设置为对 CC 有权限的用户。 登陆 Jenkins 的用户跟 Jenkins 里边执行 CC 操作的用户是不同的。
加个 trycatch
嘿~你这爆料的 貌似只有长胖的最悲催:'(