2016-08-22 11 views
0

私たちは、マルチリポジトリプロジェクトでいくつかの継続的インテグレーションプロセスをセットアップすることに決めました。アイデアは、すべてのターゲット環境を自動的に構築し、回帰テストを実行することです。 Jenkinsはその目的のための包括的なFOSSソリューションのようであり、Pipelineプラグインの使用を促進します。 examleについてはJenkins Pipeline:前のステージで構築されたライブラリの使い方は?

は、我々はライブラリBの必要な依存であるライブラリを、持っていると仮定しましょう。フリースタイルのプロジェクトを構築しました。は、Aのクローンとコンパイルに成功しました。 the documentationとスニペットジェネレータから は、我々は、その最初のステップビルドを実行することであるパイプラインを開始しまし

node { 
    stage 'Build dependencies' 
    build 'build A' 
    // 
    stage 'Build executable' 
    git url: '[email protected]:projectB', credentialsId: 'jenkins' 
    sh 'cmake -DPATH_TO_A=XXX ./' 
    // We do not know what to do then to use the built dependencies ? 
    // In particular, XXX should be replaced by a path to the header and binaries 
    // provided by A's build step. 
} 

我々は、この構築された依存関係のビルドでを使用する方法を見つけることができませんでしたプロジェクトB

答えて

0

libAにlibBをコピーしてアクセスできます。あなたの現在のパイプラインのワークスペースから../project-A-name

詳細については、この

https://www.cloudbees.com/blog/copying-artifacts-between-builds-jenkins-workflow

+0

ありがとうございます。質問の文脈でどのように実行できるかを示す最小限のコード例を追加してください。あなたの答えは自立していますか?'Gitの@のgitrepo:ProjectBの'、credentialsId: 'ジェンキンス' ステップ( –

+0

あなたは{ 段階 // 段階 gitのURL '実行可能ファイルをビルドし' '構築' ビルド '依存関係のビルド' を、このノードのような何かを行うことができます[$ class: 'CopyArtifact'、 projectName: 'ビルドA'、 フィルタ: 'target/builda.zip'、target: '。']); sh 'cmake -DPATH_TO_A =。/ builda.zip' //ビルドされた依存関係を使用するにはどうすればいいですか? //特に、XXXはヘッダへのパスに置き換え、バイナリ //はAのビルドステップによって提供されます。 } – Tim

+0

答えを編集してコード例を追加してください。これははるかにリダイレクト可能です:) – Pom12

0

使用して、フォルダの表記に

単純なフォルダの表記法を使用して他の仕事を得るために非常に簡単であるべきをrefをすることができます。私は変数の置換を有効にするには、二重引用符を使用してcmakeステップの簡単な引用符を置き換え

node { 
    stage 'Build dependencies' 
    def jobAName = "A" 
    build "build ${jobAName}" 

    stage 'Build executable' 
    git url: '[email protected]:projectB', credentialsId: 'jenkins' 
    sh "cmake -DPATH_TO_A=../${jobAName}/yourartifact" 
} 

注:

あなたのスクリプトは次のようになります。

また、あなたは私がjob Aの名前を記録するための変数を定義したことに注意しますが、もちろん、あなただけbuildshステップで直接あなたの仕事の名前を使用することができますが、私は、定数のエラーが発生しやすいの繰り返し見つけます。ティムは彼の答えでそれをmentionnedとしてコピーアーティファクトプラグイン

を使用して

、また、あなたの現在のproject BパイプラインにジョブにアーティファクトをコピーするCopy Artifact Pluginを使用することができます。パイプラインは次のようになります。

node { 
    stage 'Build dependencies' 
    def jobAName = "A" 
    build "build ${jobAName}" 

    stage 'Build executable' 
    step ([$class: 'CopyArtifact', projectName: "${jobAName}", filter: 'target/yourartifact', target: '.']); 
    sh 'cmake -DPATH_TO_A=yourartifact' 
} 

ここでも、変数置換には二重引用符を使用しています。

このステップでfilter paramを使用すると、プロジェクトAのワークスペース内のアーティファクトの相対パスを選択できます。targetのパラメータは、プロジェクトBのワークスペース内でアーティファクトをコピーする場所を指定します。

関連する問題