我们使用自制的构建服务器(基于Ubuntu 12.04)来构建嵌入式Linux项目。我们通过ssh登录并执行构建脚本执行必要的构建工作,成功使用此服务器一段时间没有问题。
我们希望使用jenkins自动化构建。我们实际上认为这应该很容易,因为jenkins工作只需要调用构建脚本来完成这项工作。
然而,它失败并永远挂在构建脚本中的某个while循环上。 while循环看起来像这样(它用于接受来自make config的默认建议)
file:create.sh
[... other stuff]
Configure project sources ...
从其他脚本(build.sh)调用create.sh,该脚本再次从其他脚本(如simple-build.sh)调用。这是因为create.sh使用一些环境变量,这些变量由build.sh为特定的构建环境设置,而simple-build.sh调用build.sh脚本来为构建服务器设置环境。因此,构建者只需登录并调用" simple-build.sh"一切都在没有任何进一步设置的情况下完成。
如果从jenkins调用脚本,则控制台输出如下所示:
jenkins控制台输出
<script>
$(document).ready(function() {
var title = 'Tes ajax';
var raw = 'very good';
//Validate fields if required using jQuery
var postForm = { //Fetch form data
'api_key' : 'bf_apikey',
'api_username': 'username',
'title' : title,
'raw' : raw,
'category' :'categoryname'//Store name fields value
};
$.ajax({ //Process the form using $.ajax()
type : 'POST', //Method type
url : 'http://example.com/posts', //Your form processing file URL
data : postForm, //Forms name
dataType : 'application/json',
success: updatesuccess,
error: updatefailure
// return response; // <- tried that one as well
});
function updatesuccess(result)
{
alert(result+"Successs")
}
function updatefailure()
{
alert("failure")
}
});
</script>
然后......它永远挂起,直到在jenkins中手动中止进程才结束。如果删除while循环,例如取而代之的是一定量的睡眠和回声进入返回,它的工作原理。但是,最好不要更改构建脚本(在脚本中多次使用while循环方法)。
为什么这个while循环导致麻烦的任何想法?它甚至是while循环还是我们错过了其他的东西?
答案 0 :(得分:1)
既然是工作,请在脚本中尝试“echo y”。我认为你的作品是期待你的,而你却什么都没有。
(while true ; do echo y; done
) | make config_config >> $WORKDIR/project.log 2>&1
由于