ラベル TeamCity の投稿を表示しています。 すべての投稿を表示
ラベル TeamCity の投稿を表示しています。 すべての投稿を表示

2016年10月2日日曜日

TeamCity ビルド結果をダウンロードできるようにする

概要

TeamCityで実行したビルド結果を、TeamCityのWebページ上からダウンロードできるようにする設定方法。

手順

ダウンロードしたいビルド結果を作るビルド の Build Configuration を開く
このようなページ:

General Settings の Artifact Paths に、ダウンロードしたいビルド結果ファイルを追加する
(ここで指定するパスは、基本的にチェックアウトしたフォルダからの相対パス)

設定例1)生成されたファイルの内、dllファイルをArtifactにする。
+:SimpleClassLibrary/bin/*/*.dll

設定例2)生成されたファイルの内、pdbファイルを除いてArtifactにする。
+:SimpleClassLibrary/bin/*/*
-:SimpleClassLibrary/bin/*/*.pdb

※bin フォルダ直下のフォルダ名が「/*」となっているのは、”Debug”でも”Release”でも正しく保存されるようにするため

パスの手前に「+:」がついているパスから、「-:」がついているパスに該当するファイルが除外されて、最終的にArtifact として保存されるファイルが決まる。

使える特殊文字
* 任意のファイル名、フォルダ名を表す
** 任意のフォルダ階層。


「Save」ボタンをクリックして、設定を保存する

ビルド結果のダウンロード

上記までの手順だけで、ビルドすると、ビルド結果の「Artifact」タブで、指定したファイルがダウンロードできるようになっている。

ビルド結果例)
Artifact タブで、 dll ファイルなどがダウンロード出来るようになっている:


よく起こりがちな「どの状態で試験したのかわからない」「試験実行時の環境を再現できない」「いつ不具合が作りこまれたのか?」といった問題を回避・調査するのに、かなりの効果があるように思う。

以上。

2016年8月21日日曜日

TeamCity上からSonarQube にテスト結果を含める手順 for OpenCover

概要

TeamCityのBuild Stepから、VSTestと、OpenCoverで、SonarQubeにテスト実施状況とカバレッジを表示させる手順。

前提

  • TeamCity上から、SonarQube の解析の実行までできる状態であること(こちらの投稿で、最低限の手順を記載済)
  • OpenCoverをダウンロード済であること(zipを任意の場所に解凍でOK)
  • 対象のBuild Configuration にて、Version Control Settingsの「Clean build」が有効になっていること(毎回溜まっていくテスト結果の処置に困るため)

手順

  1. 対象のBuild Step の編集画面を開く
  2. テスト実行を行うBuild Step を追加する。
テスト実行のBuild Step は、ビルドより後、SonarQube の解析終了コマンドより手前に配置する。
テスト実行のBuild Step は以下のような雰囲気:
  1. SonarQube の解析開始側のBuild Step に、以下コマンドライン引数を追加する
/d:sonar.cs.vstest.reportsPaths="TestResults\*.trx"
この時点で、SonarQube のDashBoard に、テスト結果が表示されるようになる。

  1. OpenCover のBuildStepを追加する。
実行コマンド:
<OpenCover解凍フォルダ>\OpenCover.Console.exe

コマンド引数:
-output:opencover.xml
-register:Path32
“-target:%teamcity.dotnet.vstest.14.0%" -targetargs:SimpleClassLibraryTest\bin\Release\SimpleClassLibraryTest.dll

※OpenCoverのBuildStep は、ビルドより後、SonarQube の解析終了コマンドより手前に配置する。
※-targetargs の中身は、テスト対象のDLL。対象の内容に応じて、書き換え
  1. SonarQube の解析開始側のBuild Step に、以下コマンドライン引数を追加する
/d:sonar.cs.opencover.reportsPaths="opencover.xml"
  1. ※”overcover.xml”は、OpenCoverの実行コマンドの”-output”に指定したファイル名
  2. 最終的なBuild Steps:

実行結果

SonarQube 側のプロジェクト毎のホーム画面、ダッシュボードで、カバレッジとテスト結果の確認が行えるようになる。
プロジェクトホーム画面より抜粋:
ダッシュボード画面より抜粋:
補足:
※TeamCity側で何もエラーが発生していないのに、コードカバレッジが上手く表示されていない場合には、該当のビルドのBuild Logを、TeamCity上で確認してください。Coverageを実行しているBuild Stepで、何らか起きているはず。
※上手くいかない場合は、コマンドライン引数の”-register:Path”部分を、”-register:User”か”-register:Path64”かに変更で、上手く行く…かもしれない

カバレッジが通っていないコードなども確認可能:
赤いバーが表示される:


参考ページ:


以上。

2016年8月19日金曜日

TeamCity のBuild で SonarQube のソース解析を実行する(MSBuild)

概要

SonarQubeの「SonarQube Scanner for MSBuild」を、TeamCityから起動できるようにするまでの手順。
とりあえずやってみたらとりあえず出来た! というレベル。もっと良い手段もある、と、思う。。

前提

  • TeamCity の BuildAgent に「SonarQube Scanner for MSBuild」がインストール済であること。
  • SonarQube サーバが起動済であること

手順

  1. Build Agent に実行ファイルの場所を追加する(省略可能*1)
以下ファイルをメモ帳なり、任意のエディタで開く
<Build Agentのインストールフォルダ>\conf\buildAgent.properties
※<Build Agentのインストールフォルダ>は、TeamCity上で、Agentの「Agent Parameters」タブの”agent.home.dir”に記載されている
  1. 開いたファイルに、以下内容を追加
system.msBuildSonarQubeRunnerPath=<SonarQube Scanner for MSBuild を配置した場所>
※”<>”の間の部分は、適宜読み替えてください。。c:\\sonarqube\\bin とか。”/”をエスケープするのをお忘れなく

  1. Build Step に 普通にビルドを実行するBuild Step を追加する
以下のような。

  1. ビルドを実行するBuild Stepの手前に、以下のBuild Stepを追加する
実行コマンドの内容:
%system.msBuildSonarQubeRunnerPath%\MSBuild.SonarQube.Runner.exe
パラメータの内容(*2):
begin /k:"%system.teamcity.projectName%" /n:"%teamcity.project.id%" /v:"%build.number%"

  1. 後続に、以下のBuild Stepを追加する
実行コマンドの内容:
%system.msBuildSonarQubeRunnerPath%\MSBuild.SonarQube.Runner.exe
パラメータの内容:
end

  1. 全体的には、以下のような Build Configuration になる:

補足

*1 Build Step内でパラメータを使って実行ファイルのパスを指定しているので、Build Agent にパラメータを追加している。不必要だと思うのであれば、省略して、Build Stepに直接ファイルパスを記載してください
*2 Scanner for MSBuild の引数として引き渡しているTeamCityのパラメータの意味合いは以下の通り
  • system.teamcity.projectName : 現在ビルドを実行中のプロジェクトの名前。
  • teamcity.project.id : プロジェクト作成時に指定したID
  • build.number : ビルド毎に更新される番号。何も設定していない場合は「ビルドを実行した回数」が設定されるはず(Build Configuration の General Settings にて設定可能)

実行結果の確認

実行すると、SonarQube 側のページで、以下のような雰囲気で確認が可能。
(2行目が、追加された解析結果)

SonarQube は、実行結果を勝手に蓄積していくので、後々の品質評価等にも、役立つ情報が得られる。デプロイのような作業が必要ないようなプロジェクトでも、チェックインする度にソース解析が実行される状態にしておくことは、非常に有益であると思う。

以上。

2016年8月16日火曜日

TeamCity Visual Studio Test補足:VSTest と MSTest の差分

概要

TeamCity の Build Step、 Visual Studio Test の「Test engine type」で選択できる, ”VSTest”と”MSTest”の差分についての覚書。
VSTestの方が新しく、細かめの設定が出来るようなので、特にこだわりが無ければ、VSTestで実施するようにした方が無難、かもしれない。。

設定上の差分

下記TeamCityの「Visual Studio Test」のページで確認できる:
VSTest側は、実行するテストケースのフィルタリング、実行する.NETフレームワークの指定ができる、各テストを別々のプロセスで実施など、細かい指定ができるようだ。

試験実施上の差分

Fake Framework を使った試験が存在する場合には、VSTestが必須。MSTestは、Fake Framework に非対応のようだ。

補足:

その他、VSTestとMSTestの差分が説明されていたページ:

以上。

TeamCity 試験の実施 を行うBuild Step(Visual Studio Test)

概要

試験実施を行う「Visual Studio Test」Build Step についての、作り方、簡単な使い方。
これで「試験実施に失敗したら後続フェーズに進まない」ようなビルドの設定を実現できる。

前提条件

実施の上での前提

試験向けのBuild Step より手前に、普通にビルドが終わっている必要がある。
試験向けBuild Step は、基本的に、出来上がっているdll に対してテストを実行する仕組みなので、まずは、普通にビルドを実行するBuild Step を実行する必要がある。

VSTest Build Agent の環境前提

Webアプリをビルドするのでなければ、以下がインストールされていれば大体は問題ないはず(あるいは、Visual Studio)。
  • Microsoft Build Tools 2015 (MSBuildによるビルドに必要)
  • Agents for Microsoft Visual Studio 2015(VSTest, MSTestによるテスト実施に必要)

Build Step の追加

  1. TeamCityサーバにログイン
  2. 対象のプロジェクトを開く
  3. ビルドの設定を開く
  4. 左側のメニューの「Build Steps」をクリック
  5. 「Add build step」ボタンをクリックか、既存のBuild StepのEditをクリック

  1. 最小限の設定は、以下の通り:

設定内容の補足

  • 「Test engine type」が”VSTest”でも“MSTest”でも、最小限の設定は同じ
  • 「Test file names」には、テストの実施対象となるdllを記載する。
    • DLLのパスは、VCSルートからの相対パスで記載。
    • パスにはワイルドカード(*)が使える
    • すぐ下の「Edit excluded assemblies」をクリックすると、テスト実施対象から除外するdllも設定できる

実行結果の確認

テストの実行に失敗した場合は、普通にBuild Stepがビルド失敗した場合と同様に扱われる
成功した場合と失敗した場合の実行結果例)

ので、Build Step の設定で、「テストに失敗していたら、後続のデプロイは実施しない」といった処理が実現できる。

なお、Build列のリンクをクリックで、各テストの結果を詳細に確認できる。
Visual Studio上で実行した場合と、同程度の情報は参照できる。

「Test」タブをクリックすると、試験実施結果を一覧で参照できる。

以上。

2016年8月15日月曜日

TeamCity での ASP.NET MVC ビルド・デプロイの設定(pubxmlファイルを使ったデプロイ)

概要

TeamCity での、ASP.NET MVC のプロジェクトをデプロイするBuild Stepを作る手順。パブリッシュプロファイル(.pubxml)ファイルを使用。
※以下手順、Azureへのデプロイでは確認済。他環境でも(多分)上手くいくとは思う。。

前提条件

  • NuGetの設定が終わっていること。ASP.NET MVC を使用するプロジェクトでは、大体NuGet を使用していると思われるため、先にその設定を行っておく。手順はこちらの投稿に記載。
  • .publixml ファイルが存在すること。このファイルは、Visual Studio からWebサイトの発行を行うと、「Properties\PublishProfiles」あたりに作成されるはず。
  • BuildAgent に Visual Studio がインストールされている。(Web Express でOK)

手順

  1. TeamCity サーバへアクセスし、管理者としてログイン

  1. 左上の「Projects」をクリックし、設定を変更したいプロジェクトの、右側の「下三角」ボタンをクリックする

  1. 開いたメニューで「Edit Settings」をクリック

  1. 対象のBuild Configuration の行をクリック

  1. 左側のメニューの「Build Steps」をクリック

  1. 開いたメニューで「Add Build Step」ボタンをクリック(あるいは、既存のBuild Step の「Edit」リンクをクリック)

  1. Runner type: として、「MSBuild」を選択

  1. Build file path に、ソリューションファイル名を選択
※右側のボタンをクリックで、接続しているバージョン管理システムから、ファイルを選べる

  1. Build Target を “Rebuild” に設定

  1. Command line parameters に、以下のパラメータを入力(“{}”で囲まれた部分は、実際の値に置き換える)
   /p:DeployOnBuild=true
   /p:PublishProfile={pubxmlファイルの拡張子を除いたファイル名*1}
   /p:Password={デプロイ先のパスワード}

*1 補足:ファイル名が「hogehoge.pubxml」である場合は、「/p:PublishProfile=hogehoge」 と設定する。

  1. 「Save」ボタンをクリックして、BuildStepを保存


上記で追加したBuildStepで、Visual Studio がインストールされているBuild Agentであれば、上記でデプロイまで実施できる。

補足:Azureのデプロイ情報の取得はこっちに投稿。

以上。

TeamCity で BuildAgent を作る手順(Windowsインストーラー)

概要

Windowsインストーラを使った、TeamCity のBuildAgentを新規に追加するための手順。

BuildAgent のインストール

  1. BuildAgentにするマシンから、TeamCity サーバにアクセスし、管理者でログインする。

  1. Agents をクリックする
  2. MS Windows Installer リンクをクリックする(2つ目以降のBuildAgentの場合は、まず右上の「Install Build Agents」リンクをクリック)
  1. BuildAgent の初期化に必要なインストーラがダウンロードされるので、そのファイルを実行する
※ 特にこだわりが無ければ、「Next」で、どんどん進めて、インストール。
※インストールの途中で、Build Agent ユーザの設定を求められるが、色々な権限を持つ必要がある。
サーバと通信できる、Build Agent のフォルダに対する完全な権限を持っている、「サービスとしてログオン」権限がある、サービスの起動/停止が行える、プログラムのデバッグが行える、等。


インストールの最後に、Build Agent Properties の設定画面が開く

  1. 「serverUrl」に、TeamCity サーバのurlを入力する。(Build Agent マシンから、ブラウザで入力するURLと同様で良い)
例)以下のような値になるはず

  1. 右下の「Save」ボタンをクリックして、設定を保存する

Build Agent の追加結果を確認

  1. 「serverUrl」で入力したTeamCityサーバにログイン
  2. 上側のメニューの「Agents」をクリック
  3. 「Connected」か「Unauthorized」タブの中身で、追加したAgent が確認できるはず。
  1. サーバと別マシンにBuild Agentを追加した場合、まず「Unauthorized」タブに表示されるので、「Unauthorized」リンクをクリックして、出てきたウィンドウで「Authorize」ボタンクリックで、使用可能なBuild Agentになる。

TeamCityサーバでビルド等を起動すると、ここで追加されたBuildAgentが実際のビルド処理を行う。
ので、Build Agent の追加のためのセットアップだけではなく、予定されるビルド処理に必要なアプリがあれば、別途インストールす必要がある。(Visual Studioとか、JDKとか、MSBuildとか)

以上。