Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 将生成步骤执行的控制台输出存储在Jenkins管道中_Shell_Jenkins_Jenkins Pipeline - Fatal编程技术网

Shell 将生成步骤执行的控制台输出存储在Jenkins管道中

Shell 将生成步骤执行的控制台输出存储在Jenkins管道中,shell,jenkins,jenkins-pipeline,Shell,Jenkins,Jenkins Pipeline,在jenkins管道中,我使用“executeshell命令”运行gradle构建脚本。 现在,我想检查构建是否失败,在这种情况下,我希望读取控制台输出,将其存储在字符串中,并将其发布到空闲通道。 我尝试过的代码如下所示: try { for (int i = 0 ; i < noOfComponents ; i++ ){ component = compileProjectsWithPriority[i] node {

在jenkins管道中,我使用“executeshell命令”运行gradle构建脚本。 现在,我想检查构建是否失败,在这种情况下,我希望读取控制台输出,将其存储在字符串中,并将其发布到空闲通道。 我尝试过的代码如下所示:

try {
    for (int i = 0 ; i < noOfComponents ; i++ ){
        component = compileProjectsWithPriority[i]
        node {       
            out = sh script: "cd /home/jenkins/projects/${component} && ${gradleHome}/bin/gradle build", returnStdout: true}
    }
}
catch (e){
    def errorSummary = 'Build failed due to compilation error in '+"${component}"+'\n'+"${out}"
    slackSend (channel: '#my_channel', color: '#FF0000', message: errorSummary)
}
试试看{
for(int i=0;i
但是,它甚至不执行shell脚本,并且控制台输出为null。正确的方法是什么

提前感谢

Jenkins pipelines中的命令可能无法与
cd
等shell内置程序一起使用。或许可以尝试使用,如下所示:

node {
    dir("/home/jenkins/projects/${component}") {
        out = sh script: "${gradleHome}/bin/gradle build", returnStdout: true
    }
}

对于
目录
{
}
中的所有命令将以指定目录作为其工作目录执行。这将克服内置的
cd
shell可能存在的任何问题。

看起来一般都很好,对我来说也很好。您需要发布更多的Jenkins文件和生成输出。@Christopher“由于测试服务null中的编译错误,生成失败”。这是我在slack频道得到的信息。您使用的管道插件的版本是什么?我的是2.4,不管最新版本是什么。您可以尝试在
try
之前添加
def组件
def out
,但它仍然可以工作。