Jenkins C++ build chain

Jenkins C++ build chain

本文关键字:chain build C++ Jenkins      更新时间:2023-10-16

我正在进行一个c++项目,我必须设置jenkins slave。我的项目有3个不同的目录(构建脚本、Mylibrary、MyApplication),每个目录都是一个git存储库。

node {
stage ('Checkout'){
checkout([$class: 'GitSCM', 
branches: [[name: '*/devel_dimant']], 
doGenerateSubmoduleConfigurations: false, 
extensions: [[$class: 'RelativeTargetDirectory', 
relativeTargetDir: 'build_scripts']], 
submoduleCfg: [], 
userRemoteConfigs: [[url: 'file:///home/antonio/Projects/Azalea/rc_octo_cmn_build']]
])
checkout([$class: 'GitSCM', 
branches: [[name: '*/devel_dimant']], 
doGenerateSubmoduleConfigurations: false, 
extensions: [[$class: 'RelativeTargetDirectory', 
relativeTargetDir: 'liboctopus']], 
submoduleCfg: [], 
userRemoteConfigs: [[url: 'file:///home/antonio/Projects/Azalea/rc_octo_cmn_core']]
])
checkout([$class: 'GitSCM', 
branches: [[name: '*/devel_dimant']], 
doGenerateSubmoduleConfigurations: false, 
extensions: [[$class: 'RelativeTargetDirectory', 
relativeTargetDir: 'gateway_daemon']], 
submoduleCfg: [], 
userRemoteConfigs: [[url: 'file:///home/antonio/Projects/Azalea/rc_gtw_octogtwd']]
])    
}
stage ('Build liboctopus'){
dir("liboctopus"){
sh ('./../build_scripts/octo_build.sh')
}
dir('liboctopus/release/HOST'){
sh('ls')
}
}
stage ('Build gateway_daemon'){
dir("gateway_daemon"){
sh ('./../build_scripts/octo_build.sh')
}
}    

这是我的管道,当我试图在阶段构建守护进程中编译Myapplication时,gcc失败:

正在构建应用程序"release/HOST/octgtwd",版本=="0.0.1",构建配置=="release"g++-o版本/HOST/octogtwd版本/HOST/configuration_handler.opp发布/HOST/gtw_logger.opp发布[HOST/main.opp-Wl,-rpath=/opt/OctopusIoT/lib-phread-rdynamic-Wl,-pie-L/liboctopos/release/HOST-lrt-lpthread-lsystemd-lotopus-ljson-c/usr/bin/ld:impossibile trovare-locatopuscollect2:错误:ld返回1退出状态make:***[Makefile:74:release/HOST/octgtwd]错误1

我已经在jenkins目录中创建了指向库的符号链接:

liboctopus-0.1.0.a
liboctopus.so
liboctopus.so.0
liboctopus.so.0.1.0

项目在HOST计算机上编译(相对路径工作)。不是詹金斯。

在这种情况下,您需要将作业拆分为3个作业(构建脚本、Mylibrary、MyApplication),并使用复制工件插件将工件从一个作业复制到另一个作业。示例:

node {
// setup env..
// copy the deployment unit from another Job...
step ([$class: 'CopyArtifact',
projectName: 'webapp_build',
filter: 'target/orders.war']);
// deploy 'target/orders.war' to an app host
}

我找到了这个链接。