簡體   English   中英

Jenkins C ++構建鏈

[英]Jenkins C++ build chain

我在一個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')
    }
}    

這是我的管道,當我嘗試在Build守護程序階段編譯Myapplication時,gcc失敗:

構建應用程序'release / HOST / octogtwd',版本=='0.0.1',構建配置=='release'g ++ -o版本/ HOST / octogtwd版本/HOST/configuration_handler.opp版本/HOST/gtw_logger.opp版本/ HOST / main.opp -Wl,-rpath = / opt / OctopusIoT / lib -pthread -rdynamic -Wl,-pie -L ../ liboctopus / release / HOST -lrt -lpthread -lsystemd -loctopus -ljson-c / usr / bin / ld:不可能的trovare -loctopus collect2:錯誤:ld返回1退出狀態make:*** [Makefile:74:release / HOST / octogtwd]錯誤1

我已經在jenkins目錄中創建了到庫的符號鏈接:

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

該項目在HOST機器上編譯(相對路徑工作)。 不是詹金斯。

在這種情況下,您需要將Job分成3個Job(構建腳本,Mylibrary,MyApplication),然后使用copy-artifact插件將工件從一個作業復制到另一個作業。 例:

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
}

我找到了這個鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM