Bamboo統合
CppDepend と Bamboo 統合による開発効率の向上
この素晴らしい詳細チュートリアルはに基づく NDepend (.NET版CppDepend相当) 統合 Nordès Lamarre 著。著者の許可を得て以下に転載。
Bambooとは?
簡単に言うと、Bamboo は次の会社のビルド サーバーです Atlassian CI スタックに。多くの場合 BitBucket との統合とともに使用され、他のあらゆるリポジトリ(GitHub を含む)への接続の可能性も提供します。Bamboo 自体では、ビルドプロジェクトの作成、デプロイメント戦略、他の Atlassian ツールとの相互接続、あるいはビルドステータスを含むメッセージを #Slack チャンネルに自動送信することさえ可能です。Jenkins、Bamboo、GitLab をすでに使ったことがあれば、そのようなツールの日常的な使用にはすでに精通しているはずです。Bamboo の詳細については、 このリンクをたどると、Bamboo の詳細が表示されます.
前提条件
- Windows 上の Bamboo Server(または Agent)。新しいインスタンスをインストールする必要がある場合 ここをクリックしてBambooをダウンロード.
- スペースを含まない名前のフォルダーに JDK 1.8(または JRE でも動作するようです)を使用またはインストールする必要があります。8 より大きいバージョンは動作しません。これは将来サポートされる予定です。
- 動作を確認するためにローカルでテスト サーバーを実行する場合、http://localhost:8085/ でアクセスできます
- 初回ウィザードでは、アクティベーション用のキー(30 日間または正規ライセンス)が必要です。30 日間のライセンスを取得するには、Atlassian スペースにアクセスするか、単純に次を使用します このリンク アカウントの評価ライセンスをリクエストするため
- ビルド マシン(または Bamboo をローカルで実行する場合は現在のマシン)でアクティブな CppDepend DevOps ライセンスまたは CppDepend トライアル
- PowerShell は必須ではありませんが、後で説明するように、エラーのない適切なビルドを行うには必須です
Bamboo - CppDepend機能を追加
Bambooの機能とは
Bamboo では、ビルド関連のツールを使用できるようにするには、通常、各エージェントに特定のケーパビリティを追加するように設定する必要があります。この場合、Windows エージェントに CppDepend ケーパビリティを追加します。そのケーパビリティは次を指します CppDepend.Console.exe 以前にインストール/ダウンロードした CppDepend パッケージからの実行可能ファイル。ライセンスをトリガーするために、少なくとも 1 回は起動することを忘れないでください。詳細はドキュメントに記載されています。私の場合、[D:\CppDepend\] にインストールされています。フォルダー名にバージョンを含めておくことを好みます。こうすると、エージェントがツールの適切なバージョンを使用しているかどうかを簡単に確認できます。実行可能ファイルのフォルダーを変更すると、このケイパビリティはそれを使用しているすべてのビルドに自動的に影響します。いかなる場合でも、自動ビルドが再トリガーされることはありません。変数は次のビルドから再適用されます。
これらの機能や実行可能ファイルをこの画面に保持するのが一般的です。エージェントのすべての機能がグループ化されます。 この機能の詳細は Atlassian の Web サイトで確認できます.
注意: ケーパビリティは、既存のビルドとの依存関係を表示します。ただし、スクリプト内でケーパビリティ変数が使用されている場合、アクティブな依存関係があることはどこにも表示されません。そのため、複数のエージェントがある場合は、ビルドステージにどのエージェントを使用するかを手動で指定する必要があります。
エージェント設定へ移動
- クリック オプションホイール;
- 選択 エージェント;
- これにより、管理パネル内の次の場所に直接ジャンプします エージェント ビルドリソース;
- いずれかを選択 Windowsビルドエージェント クリックして。

エージェントサマリー
- を確認 エージェント名 は有効;
- 選択 機能 タブ;
- クリック 機能を追加 リンクボタン。

機能の追加
- 機能タイプ: 実行ファイル
- 型: コマンド
- 実行ファイルラベル: CppDepend
- パス: D:\CppDepend\CppDepend.Console.exe
- ボタンをクリック 追加

エージェント固有の機能を参照
ご覧のとおり、前の手順を実行すると、エージェント固有のケーパビリティが追加されます。これで、ビルド中にそのケーパビリティを使用できます。

Bamboo ビルド構成 - Capabilities(簡単)
ビルドが既に存在し、次を追加したいとします CppDepend.Console.exeコマンド 以下のチュートリアルでは、サンプルとしてシンプルな Dotnet Core 2.1 ソリューションを使用します。ビルドの名前は IdentityServer4.LdapExtension (GitHub プロジェクト)。ここには、Git リポジトリ、CppDepend プロジェクト、および基本ビルド(チェックアウトとビルド)が既に構成されています。
ビルドステージに新しいタスクを追加
- プロジェクトの構成画面にいることを確認してください。
- 通常テストなどを実行するビルド ジョブに移動します。
- 内で タスク タブには、現在のジョブの詳細がすべて表示されます。
- 新しいタスクを追加します。

ポップアップが表示されたら
- コマンドを検索 検索ボックスで;
- コマンドを選択 クリックして。

コマンドを設定しましょう
- 新しいコマンド タスクが既に表示されているはずです。
- この場合のタスクの説明: CppDepend;
- エージェント機能に対して作成した実行可能ファイルを選択します: CppDepend;
- CppDepend プロジェクトファイル(.cdproj 拡張子)のフルパスを引数として入力します。その前に、CppDepend UI の CppDepend Project Properties > Paths Referenced ですべてのパスが(プロジェクトファイルの場所に対する)相対パスとして定義されていることを確認してください。例: ${bamboo.build.working.directory}/IdentityServer.LdapExtension.cdproj
追加できます /silent CppDepend からのすべての出力ログを表示したくない場合のオプションですが、ビルド内でこれを行うことは強くお勧めしません。ログを使用してデバッグする必要がある場合があります。 - 設定を保存

新しい構成をビルド
変更を加えた後は必ずビルドすることをお勧めします。そうすれば、ビルドの失敗が本当の理由(構成)によるものか、コード変更(トリガーされたビルド)によるものかを簡単に確認できます。
注目 CppDepend.Console.exe を返す 非ゼロ終了 コード(少なくとも 1 つの Quality Gate が失敗した場合)。この終了コードを使用して、そのような状況でビルドプロセスを停止できます。詳細な説明については、次を参照してください クオリティゲートページ.
レポートは失敗時にも存在しますが、ビルドは赤になり、アーティファクトは利用できない可能性があります。次がないため /ErrorLevel 終了コードのカスタム構成を使用する場合、これらのエラーを無視するには別の方法を取る必要があります。
- オプション1: CppDepend の特別なタグをコード内に追加してエラーを無視します。その場合は、必要な場所に CppDepend の無視属性を追加し、コミット後にビルドを再実行するだけです。
- オプション2: フローを完全に制御し、品質ゲートの問題があっても続行できるように、コマンドの代わりにスクリプトを使用します。これが次のセクションのトピックです。
Bamboo ビルド構成 - PowerShell スクリプト(複雑)
前述のとおり、このセクションは、Quality Gate を失敗させるような深刻な問題のないプロジェクトをすでに持っている人、または Quality Gate で失敗させたいがレポートも生成したい人を主な対象としています。
誤解しないでください、 機能 作成する価値があります。ただし、この場合の唯一の欠点は、Capability が CppDepend へのビルド依存関係を検出しないことです。
この場合、コマンドを作成する代わりに、スクリプトを作成します(または現在の Dotnet Core ビルド スクリプトに追加します)
- ビルド構成のデフォルト ステージ(または特定のステージ)に移動し、次をクリック タスクを追加;
- 選択 スクリプト 型;
- 入力 説明 を選択 Windows PowerShell インタプリタとして;
- この場合、を使用します インライン タイプ(PS1 シェルスクリプトではなく)。このオプションは、バックグラウンドでシェルスクリプトを自動的に作成します。画像の下のコードスニペットを書き写すだけです。

PowerShell は既存の CppDepend プロジェクトファイル(*.cdproj 拡張子、これは XML ファイル)を使用しています。次に、最終コマンドを作成して実行します(Invoke-Expression)。上の図で使用されている PowerShell スクリプトは次のとおりです。
# この方法では、インラインの代わりにビルド スクリプトを使用でき、そのビルド スクリプトは
# ビルドリポジトリの一部にできます。
$cdproj = "IdentityServer.LdapExtension.cdproj"
# CppDepend XMLプロジェクトファイルを読み込み。
$ndependXml = [xml](Get-Content .\${cdproj})
# CppDependコマンドを起動
$expr = "${bamboo.capability.system.builder.command.CppDepend} " +`
"${bamboo.build.working.directory}\${cdproj} " +`
"/OutDir ${bamboo.build.working.directory}\CppDependOut"
Invoke-Expression $expr
# 実行結果のシンプルな出力。
write-host "The exit code was: ${LASTEXITCODE}"
CppDependアーティファクトを生成
これで、ビルドして CppDepend 出力フォルダーを取得できるはずです。このデモでは、次があります CppDependOut フォルダーと同じです。そのためには、アーティファクト構成を追加する必要があります。ビルド構成と、CppDepend スクリプトがあるデフォルトステージに戻ってください。これが完了したら、次を選択します アーティファクト タブをクリック アーティファクトを作成 ボタン。
入力フィールド:
- 名前: CppDepend
- 場所: CppDependOut
- コピーパターン: **/*
これが完了したら、プロジェクトをリビルドして、ビルドアーティファクトがあるかどうかを確認できるはずです。ビルドを比較したい場合は、共有アーティファクトを再利用できることに注意してください。これは少し複雑ですが可能であり、このチュートリアルでは扱いません。新しいビルドのたびにビルドフォルダーをクリーンアップしないようにすることもできます。お勧めはしませんが、うまくいく可能性のある方法です。
たとえば、次のような成功したビルドがあります:
- グリーンビルド = 成功
- ビルドのアーティファクトへ移動
- 目的のアーティファクト名(この場合は CppDepend)をクリック

アーティファクトが開くと、ZIP ファイルの内容が表示されます。ファイルをクリックするだけです CppDependReport.html。そうすると次のようなリンクが開きます: http://localhost:8085/artifact/I4E-ID/shared/build-19/CppDepend/CppDependReport.html#Main
ページは次のようになります(実際にはプロジェクトによって異なります):

