ジェンキンスは次のようにすることができますか?Jenkins + Windows + CMake +複数のビルドタイプ(Debug、Release)
チェックアウトトランク/ SVNから、構成のための重複したジョブを持たずに、CMakeを使用してデバッグとリリースをビルドします。
ジェンキンスは次のようにすることができますか?Jenkins + Windows + CMake +複数のビルドタイプ(Debug、Release)
チェックアウトトランク/ SVNから、構成のための重複したジョブを持たずに、CMakeを使用してデバッグとリリースをビルドします。
を使用し、私はあなたがソースディレクトリを再利用したい場合は、できるだけ少数のジョブを使用する必要があることがわかりました。
Jenkinsのデフォルト設定では、各ビルドがワークスペースとして別のディレクトリを使用します。これは、ビルドごとに完全なSVNチェックアウトを行うことを意味します。それは永遠にかかる。
すべてのビルドで同じソースディレクトリを使用する場合は、同期について心配する必要があります。ビルドは一度に1つのみです。私が知る限り、Jenkinsには組み込みの同期手段はありません。唯一の方法は、1つのエグゼキュータを使用することです。それでもエグゼクティブが次の仕事を選ぶ方法を制御することはできません。
たとえば、ジョブ「SVN更新」がジョブ「ビルド」をトリガーするとします。誰かが "SVN update#33"を開始します。これは "Build#33"を引き起こすはずです。しかし、Jenkinsの "Poll SCM"機能がその間に "SVN update"#34をスケジュールしていた場合、 "Build#33"を "SVN update#34"の前に実行する必要があります。だから、 "Build#33"の前に "SVN update#34"が実行されてしまい、すべてが失敗します。ポーリングジョブを手動で無効にしない限り。もちろん、後でそれを再び有効にすることを思い出してください。
とにかく。 Jenkinsを2年間使用した後、私は以下のように答えました。リソースを共有する複数のジョブ(ソースディレクトリのようなもの)を絶対に使わず、すべてのロジックをシェルスクリプトに書き換えます。
Jenkins Matrix jobを使用してください。いずれかの軸をbuild_modeの値でのデバッグとリリースと定義します。次に、使用するコンパイルツール(XCode、gcc、VisualStudioなど)の両方の設定を作成するCMakeを実行します。まるで環境変数であるかのようにbuild_modeを使用し、実際のコンパイルを行うステップを構築するためにそれを渡すことができます。
ありがとうございます。私はそれほど分かりませんでしたが、細部まで細分化するのにまだしばらく時間がかかりました。 –
答えが本当に役に立ちましたら、[受諾](http://meta.stackexchange.com/a/5235/177981)または[upvoting](http://meta.stackexchange.com/a/130054/177981)を検討してください。それ。 –
これはcmakepluginで動作しますか?私は$ build_typeを "Other Build Type"に入れますが、それを展開しません。 – shenshei
これを理解するためにしばらく時間がかかりました。ここで私はそれをどうにかしてやった。
ビルドで、次のWindowsバッチコマンドを追加します。これはビルドディレクトリをクリーンアップするために使用します。なんらかの理由で、CMakeはこれを行う方法を提供していません。
cd c:\
rmdir /S /Q build
mkdir build
cd build
cmake --version
rem optionally: svn info c:\src
cmake -G "Visual Studio 10" c:\src
「ビルド」という別のジョブを作成すると、今回は「マルチ構成」ジョブになります。このジョブは、各設定(デバッグ/リリース)ごとに実行されます。
をトリガ設定しました。残念ながら、Jenkins用のCMakeビルダープラグインは、複数構成のジョブでは機能しません。 cmake --buildは、デバッグ設定を常にビルドしているので、使用することすらできません。あなたは、全体のソリューションを構築する代わりにALL_BUILD.vcxprojのの.slnファイルを指定したい場合は
cd c:\build
call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
msbuild ALL_BUILD.vcxproj /verbosity:minimal /maxcpucount:1 /property:Configuration=%configuration%
:構築するために、我々は別のバッチスクリプトを使用する必要があります。あなただけの特定のプロジェクトを構築したい場合は、しばらくの間、今ジェンキンスを使用した後
msbuild <solution>.sln /target:<project>
私が知る限り、 "camke --build"常にデバッグバージョンをビルドします。 msbuild Project.sln/m/p:Configuration = Releaseをリリースする必要があります – Lap
うん、そうです。私はそれに応じて私の答えを変更します。 –
Visual Studioの発電機を使用する場合は、あなたがcmake --build
-commandに構築するために設定を渡すことができます。
cmake --build . --config Release
cmake --build . --config Debug
もCMake docsを参照してください。
使用している発電機によって異なります。これはMakefileのようなジェネレータには効果がありません。 'cmake -DCMAKE_BUILD_TYPE = Release' –
Windowsに関する質問があったので、私はVisual Studioを前提としていたので、私は自分の答えを編集するでしょう。 –
"Jenkins Build Blocker"(https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin)-pluginを使って "SVN update"ジョブをブロックすることができます。ジョブが実行中です。 –