Jenkins构建失败:Minimal CMake Jenkinsfile失败

85次阅读
没有评论

问题描述

在使用Jenkins构建时遇到了问题,他想知道为什么构建失败,并且想知道如何编写一个Jenkins文件来测试这个简单项目的构建。
以下是他提供的相关代码:

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv ){
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out <Image_Path>\n");
        return -1;
    }
    Mat image;
    image = imread( argv[1], 1 );
    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                cmakeBuild
                installation: 'InSearchPath'
            }
        }
    }
}

Jenkins输出:

WorkflowScript: 6: Expected a step @ line 6, column 17.
               cmakeBuild
               ^
WorkflowScript: 7: Expected a step @ line 7, column 31.
               installation: 'InSearchPath'

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据用户提供的Jenkinsfile,构建失败的原因可能是两个问题:
1. 没有正确安装CMake插件。
2. 在Jenkinsfile中的cmakeBuild语句缺少括号。

以下是解决方案的步骤:
1. 确保已正确安装CMake插件。可以在Jenkins的插件管理页面中搜索并安装CMake插件。
2. 在Jenkinsfile中的cmakeBuild语句周围添加括号。修改后的Jenkinsfile如下所示:

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                cmakeBuild(
                    installation: 'InSearchPath'
                )
            }
        }
    }
}

请注意,这里的修改是在cmakeBuild语句周围添加了括号。

方案2

如果方案1中的修改仍然无法解决问题,可以尝试使用其他构建步骤来替代cmakeBuild步骤。以下是一个示例:

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                sh 'cmake .'
                sh 'make'
            }
        }
    }
}

在这个示例中,我们使用了两个shell步骤来执行cmake和make命令来构建项目。请确保在Jenkins节点上已经安装了CMake和make工具。

请根据你的具体需求选择适合的解决方案。

以上是关于如何解决Minimal CMake Jenkinsfile构建失败的方案。希望对你有帮助!

正文完