2017-10-20 12 views
0

状況...Jenkinsパイプライン:Gitでの使用方法、特に複数のGit reposでの使用方法

私はビルドに必要ないくつものギルトレポを持っています。私は積極的に1つのコードを開発していますが、他のコードは私が使用するライブラリコードを含んでいます。各レポは独立しているので、もちろんそれらはすべて異なるブランチ名を持っています。

私のJenkinsビルドでは、各リポジトリから適切なバージョンのコードを取り出し、適切なサブディレクトリに配置してプロジェクトを構築したいと思います。理想的には、(これらのリポジトリのうちの1つが大きいために)浅いクローンを作成し、必要なパスのみのスパースなチェックアウトを実行できるようにする必要があります。

Multiple SCMs pluginは仕事には理想的なツールのようでした。しかし、それは積極的な開発ではなく、私はそれが他の人が話している主張を投げかけているのを見ました。

私はthis questionを見て、これを行うためのJenkins Pipelineの使い方に答えるので、私はJenkins Pipelineを調べました。私はすぐにGit Pipeline documentationから、Gitに対するサポートが最も慈善的に「最小」と表現されることを発見しました。これはPipelineコンセプトの残りの部分についても同様です。 (これは、完璧に実行可能なUIをテキストのみのインターフェイスに置き換える悪夢に入る前です。メンテナンスの悪夢、多くは?)

私もGitサブプロジェクトを設定することができます。私は、Jenkinsの最新バージョンの不備を解決する方法として、このルートを下回る必要はありませんが、それが唯一の解決策であれば必要です。

ジェンキンス以外のソリューションは、私たちの会社でジェンキンスをしばらく使用していて、何か別のものを設定する必要がないので、実際には選択肢ではないと言います。

答えて

0

私はパイプラインのgitのサポートが全く欠けていないと思います。少なくとももうこれ以上はない。パイプラインは非常に強力です。確かに最小限ではありません。多分あなたは古い文書を見ているでしょう。宣言的なパイプラインはまだ少し未成熟だと考えられるかもしれませんが、まだパワフルで簡単です。

gitビルドステップについて投稿したドキュメントは、非常に単純なgit操作に使用できるcheckout scmステップの単なるラッパーです。これは、Jenkinsでgitを使用するために利用できるオプションの範囲ではありません。

特に、私はgit repoを監視するマルチブランチパイプラインジョブを持っています。変更が検出されると、レポがプルダウンされ、次に、別のレポのスパースチェックアウトをサブディレクトリにプルダウンし、別の完全レポを別のディレクトリにプルダウンします。ビルドスクリプトをいくつか実行します。 Zipファイルを展開してから、リモートサーバー上のパッケージを使ってリモートsshプロセスを実行してください。あなたはまた、浅いクローンを行うことができます

dir("package/infra") { 
    deleteDir() //start with a clean directory 

    checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [[$class: 'SparceCheckoutPaths', sparseCheckoutPaths: [[path: "my/path/here"]]]], userRemoteConfigs: [[credentialsId: 'asdf-fdsa-werw5-asjksadf-wlfjsdf', url: '[email protected]:ABC/DEF.git']]]) 

} 

、および複雑なgitの行動のすべての方法:宣言型のパイプラインで

私はこれはまばらなチェックアウトのために行います。

ライブラリ用の2番目のビルドを使用して、ビルドされたアーティファクトをアーティファクトに保存するか、Jenkinsにアーカイブする方がよい場合があります。アーティファクトをartifactoryから持って来るか、Artifactsプラグインのコピーを使用してください。彼らを別の仕事から連れて来る。しかし、すべての状況が異なります。

+0

ありがとうございます。だから、問題はプラグインができることではなく、ドキュメントです。:/私は掘り続けます。 – Graham

関連する問題