Continuous-integration-quick-guide
継続的インテグレーション-概要
継続的インテグレーションは、*クルーズコントロール*と呼ばれるソフトウェアで2000年に初めて導入されました。 長年にわたり、継続的インテグレーションはあらゆるソフトウェア組織で重要なプラクティスになりました。 これは、ソフトウェアチームに加えられたすべてのコード変更に対してビルドとその後のテストが確実に実行されるように開発チームを呼び出す開発プラクティスです。 この概念は、ビルドライフサイクルで問題の発生を遅らせる問題を取り除くことを目的としていました。 開発者が単独で作業して十分な統合を行わない代わりに、コードの変更とビルドが単独で行われないようにするために、継続的統合が導入されました。
なぜ継続的統合なのか?
継続的インテグレーションは、ソフトウェア開発プロセスの非常に不可欠な部分になっています。 継続的な統合プロセスは、ソフトウェア開発チームにとって次の質問に答えるのに役立ちます。
- すべてのソフトウェアコンポーネントが必要に応じて連携して動作しますか? –システムが非常に複雑になり、各コンポーネントに複数のインターフェースが存在する場合があります。 このような場合、すべてのソフトウェアコンポーネントが相互にシームレスに動作することを保証することが常に重要です。
- コードは統合のために複雑すぎますか? –継続的インテグレーションプロセスが失敗し続ける場合、コードが複雑すぎる可能性があります。 そして、これは適切な設計パターンを適用して、コードの複雑さを軽減し、保守性を高めるためのシグナルになる可能性があります。
- コードは確立されたコーディング標準に準拠していますか? –ほとんどのテストケースでは、コードが適切なコーディング標準に準拠していることを常にチェックします。 自動ビルド後に自動テストを実行することにより、これは、コードが必要なコーディング標準をすべて満たしているかどうかを確認するのに適しています。
- 自動テストでカバーされるコードの量は? –テストケースがコードの必要な機能をカバーしていない場合、コードをテストしても意味がありません。 そのため、書かれたテストケースがアプリケーションのすべての主要なシナリオをカバーすることを保証することは常に良い習慣です。
- 最新の変更後、すべてのテストは成功しましたか? –テストが失敗した場合、コードの展開を進める意味がないため、これはコードが展開ステージに移行する準備ができているかどうかを確認するのに適したポイントです。
ワークフロー
次の図は、ソフトウェア開発プロジェクトで継続的インテグレーションワークフロー全体がどのように機能するかの簡単なワークフローを示しています。 これについては、以降の章で詳しく説明します。
したがって、上記のワークフローに基づいて、これは一般に継続的インテグレーションプロセスの仕組みです。
- 最初に、開発者がコードをバージョン管理リポジトリにコミットします。 その間、統合ビルドマシン上のContinuous Integrationサーバーは、ソースコードリポジトリを変更のためにポーリングします(数分ごとなど)。
- コミットが発生するとすぐに、Continuous Integrationサーバーはバージョン管理リポジトリで変更が発生したことを検出するため、Continuous Integrationサーバーはリポジトリからコードの最新コピーを取得し、ソフトウェアを統合するビルドスクリプトを実行します
- Continuous Integrationサーバーは、指定されたプロジェクトメンバーにビルド結果を電子メールで送信することにより、フィードバックを生成します。
- そのプロジェクトのビルドに合格すると、単体テストが実行されます。 テストが成功すると、コードをステージングサーバーまたは運用サーバーに展開する準備が整います。
- 継続的インテグレーションサーバーはバージョン管理リポジトリの変更をポーリングし続け、プロセス全体が繰り返されます。
継続的インテグレーション-ソフトウェア
ソフトウェア部分は、継続的インテグレーションプロセスの最も重要な側面です。 この章では、継続的インテグレーションプロセス全体に必要なソフトウェアに焦点を当てます。
ソースコードリポジトリ
ソースコードリポジトリは、すべてのソースコードとそれに加えられたすべての変更を維持するために使用されます。 ソースコードリポジトリ管理で最も人気のある2つはSubversionとGitで、Gitは最新の人気システムです。 次に、Gitをシステムにインストールする方法を見ていきます。
システム要求
Memory | 2 GB RAM (recommended) |
Disk Space | 200 MB HDD for the installation. Additional storage is required to store the project source code and this is dependent on the source code being added. |
Operating System Version | Can be installed on Windows, Ubuntu/Debian, Red Hat/Fedora/CentOS, Mac OS X. |
Gitのインストール
- ステップ1 *-Gitの公式Webサイトはhttps://git-scm.com/です。 リンクをクリックすると、次のスクリーンショットに示すように、Gitの公式Webサイトのホームページが表示されます。
- ステップ2 *-Gitをダウンロードするには、画面を下にスクロールして[ダウンロード]セクションに移動し、[ダウンロード]をクリックします。
- ステップ3 *-Windowsリンクをクリックすると、Gitのダウンロードが自動的に開始されます。
- ステップ4 *-Gitのダウンロードした.exeファイルをクリックします。 この例では、Git-2.6.1-64-bit.exeファイルを使用しています。 次の画面に表示される「実行」をクリックします。
- ステップ5 *-次の画面に表示される[次へ]ボタンをクリックします。
- ステップ6 *-次の画面で[次へ]をクリックして、一般ライセンス契約に同意します。
- ステップ7 *-Gitインストールの場所を選択します。
- ステップ8 *-[次へ]をクリックして、インストールする必要があるデフォルトコンポーネントを受け入れます。
- ステップ9 *-WindowsからGitを使用するため、「WindowsコマンドプロンプトからGitを使用する」オプションを選択します。
- ステップ10 *-次の画面で、「Windowsスタイルのチェックアウト、Unixスタイルの行末のコミット」のデフォルト設定を受け入れて、「次へ」をクリックします。
- ステップ11 *-次の画面で、「Windowsのデフォルトコンソールウィンドウを使用する」オプションを選択します。これは、Gitのインストール用システムとしてWindowsを使用しているためです
これでインストールが開始され、インストールが完了したら、Gitを構成するための後続の手順を実行できます。
Gitの設定
Gitをインストールしたら、Gitの初期構成のために構成手順を実行する必要があります。
最初に行う必要があるのは、GitでIDを構成してから、ユーザー名と電子メールを構成することです。 すべての* Gitコミット*がこの情報を使用し、作成を開始するコミットに不変に焼き付けられるため、これは重要です。 これを行うには、コマンドプロンプトを開き、次のコマンドを入力します-
git config –global user.name “Username”
git config –global user.email “emailid”
次のスクリーンショットは、理解を深めるための例です。
これらのコマンドは実際にGitの構成ファイルをそれに応じて変更します。 設定を有効にするには、次のコマンドを発行してGit構成ファイルの設定を一覧表示できます。
git config --list
出力の例を次のスクリーンショットに示します。
継続的インテグレーションサーバー
継続的統合パイプライン全体に必要な次の重要なソフトウェアは、継続的統合ソフトウェア自体です。 以下は、業界で使用される最も一般的に使用される継続的統合ソフトウェアです-
- * Jenkins *-これは、多くの開発コミュニティで使用されているオープンソースの継続的統合ソフトウェアです。
- Jet Brains TeamCity -これは利用可能な最も人気のある商用継続的統合ソフトウェアの1つであり、ほとんどの企業は継続的統合のニーズにこれを使用しています。
- Atlassian Bamboo -これは、Atlassian Pvtという会社が提供するもう1つの人気のある継続的統合ソフトウェアです。 Ltd.
上記のソフトウェアはすべて、継続的インテグレーションの同じモデルで動作します。 このチュートリアルでは、Continuous Integrationサーバーの Jetbrains TeamCity を取り上げます。
TeamCityのインストール
以下は、コンピューターにJet Brains TeamCityをインストールするための手順とシステム要件です。
システム要求
Memory | 4 GB RAM (recommended) |
Disk Space | 1 GB HDD for the installation. Additional storage is required to store the build workspace for each project. |
Operating System Version | Can be installed on Windows, Linux, Mac OS X. |
インストール
- ステップ1 *-TeamCityの公式Webサイトはhttps://www.jetbrains.com/teamcity/です。 特定のリンクをクリックすると、次のスクリーンショットに示すように、TeamCity公式Webサイトのホームページに移動します。 このページを参照して、TeamCityに必要なソフトウェアをダウンロードできます。
ステップ2 *-ダウンロードした.exeは、 *TeamCity-9.1.6.exe を実行する目的で使用されています。 実行可能ファイルをダブルクリックし、ポップアップ表示される次の画面で「実行」をクリックします。
- ステップ3 *-[次へ]をクリックしてセットアップを開始します。
- ステップ4 *-[同意する]ボタンをクリックして、ライセンス契約に同意し、インストールを続行します。
- ステップ5 *-インストールの場所を選択し、[次へ]をクリックします。
- ステップ6 *-インストールのデフォルトコンポーネントを選択し、[次へ]をクリックします
これにより、インストールプロセスが開始されます。 完了すると、構成プロセスが続きます。
ステップ7 *-実行するサーバーのポート番号を選択します。 *8080 などの別のポートを使用することをお勧めします。
- ステップ8 *-次に、TeamCityを実行するアカウントを尋ねます。 SYSTEMアカウントを選択して、[次へ]をクリックします。
- ステップ9 *-次に、開始する必要のあるサービスを要求します。 デフォルトのものを受け入れて、「次へ」をクリックします。
TeamCityの構成
インストールが完了したら、次のステップはTeamCityの構成です。 このソフトウェアは、ブラウザで次のURLを参照して開くことができます-
*http://locahost:8080*
- ステップ1 *-最初のステップは、TeamCityによって実行されるビルドの場所を提供することです。 目的の場所を選択し、[実行]ボタンをクリックします。
ステップ2 *-次のステップでは、すべてのTeamCityアーティファクトを保存するデータベースを指定します。 チュートリアルの目的のために、 Internal(HSQLDB)*を選択できます。これは、テスト目的で製品を使用する場合に最適な内部データベースです。
TeamCityは、必要なすべてのステップを処理して、稼働させます。
- ステップ3 *-次に、ライセンス契約に同意する必要があります。 同じものを受け入れ、[続行]をクリックします。
- ステップ4 *-TeamCityソフトウェアへのログインに使用する管理者アカウントを作成する必要があります。 必要な詳細を入力し、「アカウントの作成」ボタンをクリックします。
TeamCityにログインします。
ビルドツール
ビルドツールは、プログラムが特定の方法でビルドされることを保証するツールです。 ツールは通常、プログラムを適切な方法で構築するために必要なタスクのリストを実行します。 この例では、。Netプログラム*を参照するため、ビルドツールとして *MSBuild を参照します。 MSBuildツールは、プロジェクトのビルドに使用されるタスクのリストを含むビルドファイルを調べます。 Web構成プロジェクトの典型的なビルドファイルを見てみましょう。
ビルドファイルの重要なセクションを次に示しますが、これらは考慮する必要があります。
IIS設定
次の設定を使用して、ポート番号、Webサーバー上のパス、およびアプリケーションの実行時に必要な認証の種類を決定します。 これらは重要な設定であり、チュートリアルの後半で展開の実行方法を学習するときにMSBuildコマンドを使用して変更します。
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPor>
<DevelopmentServerPort>61581</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:61581/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
ItemGroup
これは、このプロジェクトを実行するために必要なすべての依存バイナリをビルドサーバーに伝えるために使用されます。
<ItemGroup>
<Reference Include = "System.Web.ApplicationServices"/>
<Reference Include = "System.ComponentModel.DataAnnotations"/>
<ItemGroup>
<Compile Include = "App_Start\BundleConfig.cs"/>
<Compile Include = "App_Start\FilterConfig.cs"/>
.Net Frameworkバージョン
*TargetFrameworkVersion* は、プロジェクトが機能するために必要な.Netのバージョンを示します。 これは絶対に必要です。なぜなら、ビルドサーバーにこれが配置されていないと、ビルドが失敗するからです。
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
デプロイメント環境-Amazon
このチュートリアルの目的のために、Continuous IntegrationサーバーがアプリケーションをAmazonにデプロイできることを確認します。 このために、次のアーティファクトが適切に配置されていることを確認する必要があります。
データベースサーバー
次の手順を実行して、展開のためにデータベースサーバーがAmazonに配置されていることを確認します。
- ステップ1 *-Amazonコンソールにアクセスします-https://aws.amazon.com/console/[[[1]]]
資格情報でログインします。 Amazonサイトで無料IDを申請できることに注意してください。無料IDを使用すると、Amazonのリソースの一部を無料で使用できます。
- ステップ2 *-RDSセクションに移動して、データベースを作成します。
- ステップ3 *-次のポップアップ画面で[インスタンス]をクリックします。
ステップ4 *-表示される次の画面で[ *Launch DB ]オプションをクリックします。
- ステップ5 *-[SQL Server]タブを選択し、SQL Server Expressの[選択]オプションを選択します。
- ステップ6 *-次の詳細が入力されていることを確認して、Amazonから利用可能なデータベースの無料利用枠を使用していることを確認します。
- ステップ7 *-すべてのフィールドに入力したら、[次のステップ]ボタンをクリックします。
ステップ8 *-表示される次の画面で、すべてのデフォルト設定を受け入れ、[ DBインスタンスの起動*]をクリックします。
ステップ9 *-次に、DBが正常に起動されていることを示す画面が表示されます。 同じページに、DBインスタンスを表示するボタンがあります。 リンクをクリックして、セットアップ中の DBインスタンス*を確認します。
しばらくすると、上記の画面のステータスが変わり、DBインスタンスが正常に作成されたことを通知します。
Webサーバー
次のステップは、WebアプリケーションをホストするAmazon上にWebサーバーを作成することです。 これを行うには、次の手順に従ってこれを設定します。
- ステップ1 *-Amazonコンソールに移動-https://aws.amazon.com/console/。
資格情報でログインします。 Amazonサイトで*無料ID *を申請できることに注意してください。これにより、Amazonのリソースの一部を無料で使用できる無料利用枠を取得できます。
ステップ2 *- EC2セクション*に移動して、Webサーバーを作成します。
- ステップ3 *-次の画面で、[インスタンスの起動]をクリックします。
ステップ4 *-Windows – *Microsoft Windows Server 2010 R2 Base をクリックします。
Microsoft Windows Server 2010 R2ベース
ステップ5 *-無料利用枠の一部である *t2.micro オプションを選択します。 [*次へ:インスタンスの詳細を設定する] *をクリックします。
ステップ6 *-表示される次の画面でデフォルト設定を受け入れ、[*次:ストレージの追加]オプションを選択します。
ステップ7 *-次の画面でデフォルト設定を受け入れ、 *Next:Tag Instance オプションを選択します。
ステップ8 *-次の画面でデフォルト設定を受け入れ、 *Next:Configure Security Group のオプションを選択します。
ステップ9 *-次の画面でデフォルト設定を受け入れ、 *Review and Launch のオプションを選択します。
- ステップ10 *-表示される次の画面で[起動]をクリックします。
ステップ11 *-表示される次の画面で、キーペアを作成するように求められます。 これは、後でサーバーにログインするために使用されます。 キーペアを作成して、[*インスタンスの起動]をクリックします。
これで、インスタンスがAmazonにセットアップされます。
継続的な統合-リスクの低減
プロジェクトで問題が発生する可能性があります。 CIを効果的に実践することにより、プロジェクトが開発サイクルに入った後ではなく、途中のすべてのステップで何が起こるかを知ることができます。 CIを使用すると、リスクが発生した場合にリスクを特定および軽減できるため、具体的な証拠に基づいてプロジェクトの健全性を評価および報告することが容易になります。
このセクションでは、継続的インテグレーションを使用することで回避できるリスクに焦点を当てます。
どのプロジェクトでも、管理する必要のある多くのリスクがあります。 開発ライフサイクルの早い段階でリスクを排除することにより、システムが実際に稼働するときに、これらのリスクが後で問題に発展する可能性が低くなります。
リスク1 –展開可能なソフトウェアの欠如
「私のマシンでは動作しますが、別のマシンでは動作しません」 –これは、おそらくソフトウェア組織で見られる最も一般的なフレーズの1つです。 毎日ソフトウェアビルドに加えられる変更の数のため、ソフトウェアのビルドが実際に機能するかどうかについてほとんど自信がない場合があります。 この懸念には、次の3つの副作用があります。
- ソフトウェアを構築できるかどうかについては、ほとんどまたはまったく自信がありません。
- ソフトウェアを社内(テストチームなど)または社外(顧客など)に提供するまでの長い統合フェーズ。その間は何も行われません。
- テスト可能なビルドを作成および再現できない。
溶液
IDEとビルドプロセス間の密結合を排除します。 ソフトウェアを統合するためだけに別のマシンを使用してください。 ソフトウェアのビルドに必要なものがすべてバージョン管理リポジトリに含まれていることを確認してください。 最後に、継続的インテグレーションシステムを作成します。
Continuous Integrationサーバーは、バージョン管理リポジトリの変更を監視し、リポジトリへの変更を検出するとプロジェクトビルドスクリプトを実行できます。 継続的インテグレーションシステムの機能を強化して、ビルドをテストで実行し、検査を実行し、開発およびテスト環境でソフトウェアを展開することができます。これにより、常に機能するソフトウェアを使用できます。
「データベースと同期できない」-開発者は、開発中にデータベースをすばやく再作成できないため、変更が難しい場合があります。 多くの場合、これはデータベースチームと開発チームの分離によるものです。 各チームは自分の責任に集中し、相互のコラボレーションはほとんどありません。 この懸念は、次の3つの副作用があります-
- データベースまたはソースコードを変更またはリファクタリングすることへの恐怖。
- さまざまなテストデータのセットをデータベースに追加するのが難しい。
- 開発およびテスト環境の維持が難しい(開発、統合、QA、テストなど)。
溶液
上記の問題の解決策は、バージョン管理リポジトリ内のすべてのデータベース成果物の配置が確実に実行されるようにすることです。 これは、データベーススキーマとデータの再作成に必要なすべてのものを意味します。データベース作成スクリプト、データ操作スクリプト、ストアドプロシージャ、トリガー、およびその他のデータベース資産が必要です。
データベースとテーブルを削除して再作成することにより、ビルドスクリプトからデータベースとデータを再構築します。 次に、ストアドプロシージャとトリガーを適用し、最後にテストデータを挿入します。
データベースをテスト(および検査)します。 通常、コンポーネントテストを使用して、データベースとデータをテストします。 場合によっては、データベース固有のテストを作成する必要があります。
リスク2 –ライフサイクルの後半で欠陥を発見
複数の開発者がソースコードに対して頻繁に発生する変更が非常に多いため、後の段階でしか検出できない欠陥がコードに導入される可能性が常にあります。 このような場合、ソフトウェアで後で欠陥が検出されるほど、欠陥を除去するのに費用がかかるため、これは大きな影響を与える可能性があります。
溶液
回帰テスト-これは、ソフトウェア開発サイクルの最も重要な側面であり、テストとテストを繰り返します。 ソフトウェアコードに大きな変更がある場合は、すべてのテストが実行されるようにすることが絶対に必須です。 そして、これは継続的インテグレーションサーバーの助けを借りて自動化できます。
テストカバレッジ-テストケースがコードの機能全体をカバーしていない場合、テストしても意味がありません。 アプリケーションをテストするために作成されたテストケースが完全であり、すべてのコードパスがテストされていることを確認することが重要です。
たとえば、テストが必要なログイン画面がある場合、ログインが成功するというシナリオのテストケースを作成することはできません。 ユーザーがユーザー名とパスワードの異なる組み合わせを入力するネガティブテストケースが必要であり、そのようなシナリオで何が起こるかを確認する必要があります。
リスク3 –プロジェクトの可視性の欠如
手動のコミュニケーションメカニズムでは、プロジェクト情報を適切な人にタイムリーに伝達するために、多くの調整が必要です。 隣の開発者に頼って、最新のビルドが共有ドライブ上にあることを彼らに知らせることは、かなり効果的ですが、あまりうまくスケールしません。
この情報を必要とする他の開発者がいて、休憩中または他の方法で利用できない場合はどうなりますか? サーバーがダウンした場合、どのように通知されますか? 電子メールを手動で送信することにより、このリスクを軽減できると考える人もいます。 ただし、これにより、情報が適切な人に適切なタイミングで伝達されることを保証できません。なぜなら、あなたが誤って関係者を除外し、一部の人がその時点で電子メールにアクセスできない可能性があるためです
溶液
この問題の解決策は、継続的インテグレーションサーバーです。 すべてのCIサーバーには、ビルドが失敗したときにトリガーされる自動メールを送信する機能があります。 すべての主要な利害関係者へのこの自動通知により、ソフトウェアの現在の状態を全員が確実に把握できます。
リスク4 –低品質のソフトウェア
欠陥があり、潜在的な欠陥があります。 ソフトウェアが適切に設計されていない場合、またはプロジェクトの標準に従っていない場合、または保守が複雑な場合、潜在的な欠陥が発生する可能性があります。 これをコードやデザインの匂いと呼ぶこともあります-「何かが間違っているかもしれないという症状」。
低品質のソフトウェアは、プロジェクトの延期された費用(納入後)のみであると考える人もいます。 プロジェクトの延期費用になる可能性がありますが、ユーザーにソフトウェアを提供する前に、他の多くの問題も発生します。 過度に複雑なコード、アーキテクチャに従わないコード、および複製されたコード-すべては通常、ソフトウェアの欠陥につながります。 これらのコードやデザインの匂いを発見してから欠陥を発見することで、時間と費用の両方を節約でき、より高品質のソフトウェアにつながる可能性があります。
溶液
CIソフトウェアと統合できるコード品質チェックを実行するソフトウェアコンポーネントがあります。 これは、コードが実際に適切なコーディングガイドラインに準拠していることを確認するために、コードのビルド後に実行できます。
継続的インテグレーション-バージョン管理
バージョン管理システム(ソース管理、ソースコード管理システム、またはリビジョン管理システムとも呼ばれる)は、ファイルの複数のバージョンを保持するためのメカニズムであるため、ファイルを変更しても以前のリビジョンにアクセスできます。
最初の人気のあるバージョン管理システムは、1970年代に遡る SCCS (ソースコード管理システム)と呼ばれる独自のUNIXツールでした。 これは、Revision Control Systemである RCS と、Concurrent Versions Systemである CVS に取って代わられました。
現在使用されている最も一般的なバージョン管理システムは Subversion と Git です。 まず、バージョン管理システムを使用する必要がある理由を見てみましょう。次に、ソースコードを* Gitソースコードリポジトリシステム*に配置する方法を見てみましょう。
バージョン管理システムの目的
ソース管理よりもバージョン管理という用語を使用する理由の1つは、バージョン管理がソースコードだけではないことです。 ソフトウェアの作成に関連するすべてのアーティファクトは、バージョン管理下にある必要があります。
アプリケーションのすべての情報をソース管理に保存することにより、アプリケーションを実行するテスト環境と運用環境を簡単に再作成できます。 これには、アプリケーションのソフトウェアスタックと、環境を構成するオペレーティングシステム、DNSゾーンファイル、ファイアウォール構成などの構成情報が含まれている必要があります。
最低限、アプリケーションのバイナリとそれらが実行される環境を再作成するために必要なすべてのものが必要です。 目的は、プロジェクトの存続期間の任意の時点で変更される可能性のあるすべてのものを管理された方法で保存することです。 これにより、プロジェクトの履歴の任意の時点で、開発環境から本番環境まで、システム全体の状態の正確なスナップショットを回復できます。
チームの全員が同じ設定を簡単に使用できるようにするため、バージョン管理で開発チームの開発環境の構成ファイルを保持しておくとさらに役立ちます。 アナリストは要件ドキュメントを保存する必要があります。 テスターは、バージョン管理でテストスクリプトと手順を保持する必要があります。 プロジェクトマネージャーは、ここにリリース計画、進行状況チャート、およびリスクログを保存する必要があります。
つまり、チームのすべてのメンバーは、プロジェクトに関連するドキュメントまたはファイルをバージョン管理に保存する必要があります。
ソースコードバージョン管理システムのGitでの作業
このセクションでは、Gitをバージョン管理システムとして使用する方法に焦点を当てます。 コードをバージョン管理システムにアップロードし、その変更を管理する方法に焦点を当てます。
デモアプリケーション
このチュートリアル全体の目的のために、継続的統合プロセス全体に使用される単純な Web ASP.Net アプリケーションを見ていきます。 この演習ではコード全体に焦点を当てる必要はありません。継続的な統合プロセス全体を理解するには、プロジェクトの機能の概要を把握するだけで十分です。 この.Netアプリケーションは、* Visual Studio統合開発環境*を使用して構築されました。
次のスクリーンショットは、Visual Studio環境でのソリューションの構造です。 これは、 Demo.aspx ファイルにメインコードがある非常にシンプルなWebアプリケーションです。
Demo.aspxファイル内のコードは、次のプログラムに示されています-
<html xmlns = "http://www.w3.org/1999/xhtml">
<head runat = "server">
<title>finddevguides</title>
</head>
<body>
<form id = "form1" runat="server">
<div><%Response.Write("Continuous Integration"); %></div>
</form>
</body>
</html>
コードは非常にシンプルで、「Continuous Integration」という文字列をブラウザに出力するだけです。
Google Chromeでプロジェクトを実行すると、出力は次のスクリーンショットのようになります。
ソースコードをGitに移動する
コマンドラインインターフェイスからソースコードをGitに移動する方法を示します。これにより、Gitの使用方法に関する知識がエンドユーザーに明確になります。
ステップ1 *- Gitリポジトリ*を初期化します。 コマンドプロンプトに移動し、プロジェクトフォルダーに移動して、コマンド git init を発行します。 このコマンドは、必要なGitファイルをプロジェクトフォルダーに追加し、リポジトリにアップロードする必要があるときにGitが認識できるようにします。
ステップ2 *-Gitリポジトリに追加する必要があるファイルを追加します。 これは、 git addコマンド*を発行することで実行できます。 ドットオプションは、プロジェクトフォルダー内のすべてのファイルをGitリポジトリに追加する必要があることをGitに伝えます。
- ステップ3 *-最後のステップは、プロジェクトファイルをGitリポジトリにコミットすることです。 このステップは、すべてのファイルがGitの一部になるようにするために必要です。 発行されるコマンドは、次のスクリーンショットに示されています。 * –mオプション*は、ファイルのアップロードにコメントを提供することです。
ソリューションがGitで利用可能になりました。
継続的インテグレーション-機能
以下は、継続的インテグレーションの主な機能またはプラクティスの一部です。
- 単一のソースリポジトリを維持-すべてのソースコードは単一のリポジトリで維持されます。 これにより、ソースコードが複数の場所に散在することを回避できます。 SubversionやGit などのツールは、ソースコードを管理するための最も一般的なツールです。
- ビルドの自動化-ソフトウェアのビルドは、自動化できる方法で実行する必要があります。 実行する必要がある複数のステップがある場合、ビルドツールはこれを実行できる必要があります。 .Netの場合、MSBuildはデフォルトのビルドツールであり、Javaベースのアプリケーションの場合、 MavenやGrunt などのツールがあります。
- ビルドをセルフテストする-ビルドはテスト可能である必要があります。 ビルドが発生した直後に、テストケースを実行して、ソフトウェアのさまざまな機能についてテストを実行できることを確認する必要があります。
- すべてのコミットは統合マシンでビルドする必要があります-統合マシンはビルドサーバーであり、ビルドがこのマシンで実行されることを確認する必要があります。 つまり、すべての依存コンポーネントがContinuous Integrationサーバーに存在する必要があります。
- ビルドの高速化-ビルドは数分で完了します。 これは、ビルド手順が適切に構成されていないことを意味するため、ビルドに数時間かかることはありません。
- 実稼働環境のクローンでテスト-ビルド環境は、実稼働環境に本質的に近いものでなければなりません。 これらの環境の間に大きな違いがある場合、ビルドがビルドサーバーを通過しても、実稼働環境でビルドが失敗する可能性があります。
- 誰もが何が起こっているのかを見ることができます-ビルドとテストと展開のプロセス全体がすべての人に見えるはずです。
- 展開の自動化-継続的インテグレーションは継続的デプロイにつながります。 ビルドをステージング環境または実稼働環境に簡単にデプロイできるようにする必要があります。
継続的インテグレーション-要件
以下は、継続的インテグレーションの最も重要な要件のリストです。
- 定期的なチェックイン-継続的インテグレーションが適切に機能するための最も重要なプラクティスは、ソースコードリポジトリのトランクまたはメインラインへの頻繁なチェックインです。 コードのチェックインは、少なくとも1日に2〜3回行う必要があります。 定期的にチェックインすると、他にも多くのメリットがあります。 変更が小さくなり、ビルドが壊れにくくなります。 これは、以降のビルドでミスが発生した場合に戻す、ソフトウェアの最新バージョンが既知であることを意味します。 +また、コードのリファクタリングに関する規律を強化し、動作を維持する小さな変更に固執するのにも役立ちます。 多くのファイルを変更する変更が他の人の作業と競合する可能性が低くなるようにするのに役立ちます。 これにより、開発者はより探索的になり、アイデアを試し、最後にコミットされたバージョンに戻すことでアイデアを破棄できます。
- 包括的な自動テストスイートを作成します-自動テストの包括的なスイートがない場合、ビルドの合格は、アプリケーションをコンパイルおよびアセンブルできることを意味します。 一部のチームにとってこれは大きなステップですが、アプリケーションが実際に機能していることを確信できるように、ある程度の自動テストが不可欠です。 +通常、継続的インテグレーションでは、ユニットテスト、コンポーネントテスト、および*受け入れテスト*の3種類のテストが実施されます。 +単体テストは、アプリケーションの小さな部分の動作を個別にテストするために作成されています。 通常、アプリケーション全体を起動せずに実行できます。 データベース(アプリケーションにある場合)、ファイルシステム、またはネットワークにはヒットしません。 アプリケーションを本番環境で実行する必要はありません。 単体テストは非常に高速に実行する必要があります。大規模なアプリケーションであっても、スイート全体を10分以内に実行できる必要があります。 +コンポーネントテストは、アプリケーションのいくつかのコンポーネントの動作をテストします。 単体テストのように、アプリケーション全体を常に開始する必要はありません。 ただし、データベース、ファイルシステム、または他のシステム(スタブアウトされている可能性があります)にヒットする可能性があります。 通常、コンポーネントテストの実行には時間がかかります。
- ビルドとテストのプロセスを短く保つ-コードのビルドと単体テストの実行に時間がかかりすぎると、次の問題が発生します。
- ユーザーはフルビルドの実行を停止し、チェックインする前にテストを実行します。 失敗するビルドが増え始めます。
- 継続的インテグレーションプロセスには時間がかかるため、ビルドを再度実行できるようになるまでに複数のコミットが行われるため、どのチェックインがビルドを中断したかはわかりません。
- ソフトウェアがビルドされ、テストが実行されるのを何年も待たなければならないため、チェックインの頻度が少なくなります。
- 壊れたビルドでチェックインしない-継続的インテグレーションの最大の欠点は、壊れたビルドでチェックインすることです。 ビルドが壊れた場合、責任のある開発者はそれを修正するのを待っています。 破損の原因をできるだけ早く特定し、修正します。 この戦略を採用すれば、破損の原因を突き止めてすぐに修正するために常に最適な立場になります。 +同僚の1人がチェックインを行い、その結果ビルドが壊れた場合、それを修正する最善の機会を得るために、問題を明確に実行する必要があります。 このルールが破られると、ビルドの修正に時間がかかります。 人々は、ビルドが壊れているのを見ることに慣れ、非常に迅速に、ビルドが常に壊れたままになる状況に陥ります。
- コミットする前にすべてのコミットテストをローカルで常に実行する-CIサーバーで実行する前に、アプリケーション用に設計されたテストがローカルマシンで最初に実行されることを常に確認します。 これは、適切なテストケースが書き込まれるようにするためであり、CIプロセスに障害が発生した場合は、テスト結果が失敗したためです。
- 変更の結果として生じるすべての破損に対する責任を取ります-変更をコミットし、作成したすべてのテストに合格し、他のテストが破損しても、ビルドは破損します。 通常、これは、アプリケーションに回帰バグを導入したことを意味します。 変更の結果として合格していないすべてのテストを修正するのは、変更を行ったためです。 CIのコンテキストではこれは明らかなように見えますが、実際には多くのプロジェクトで一般的な慣行ではありません。
継続的インテグレーション-ソリューションの構築
さまざまなプログラミング言語で使用できるさまざまなビルドツールがあります。 最も一般的なビルドツールには、 Ant for Java および MSBuild for .NET が含まれます。 シェルまたはバッチスクリプトのカスタムセットの代わりに、ソフトウェアのビルド専用に設計されたスクリプトツールを使用することが、一貫性のある反復可能なビルドソリューションを開発するための最も効果的な方法です。
それでは、なぜビルドプロセスが必要なのでしょうか。 まず、継続的インテグレーションサーバーの場合、ビルドプロセスは簡単に操作でき、シームレスに実装できる必要があります。
Netでビルドファイルがどのように見えるかの簡単な例を見てみましょう-.
<?xml version = "1.0" encoding = "utf-8"?>
<project xmlns = "http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name = "Build">
<Message Text = "Building Project"/>
<MSBuild Projects = "project.csproj" Targets = "Build/>"
</Target>
</project>
上記のコードについては、次の側面に注意する必要があります-
- ターゲットは、ビルドの名前で指定されます。 ここで、ターゲットとは、ビルドプロセスで実行する必要がある論理ステップの集合です。 複数のターゲットを設定し、ターゲット間に依存関係を設定できます。
- ターゲットでは、ビルドプロセスの開始時に表示されるオプションメッセージを保持します。
- * MSBuildタスク*は、どの.Netプロジェクトをビルドする必要があるかを指定するために使用されます。
上記の例は、非常に単純なビルドファイルの場合です。 継続的インテグレーションでは、このファイルを最新の状態に保ち、ビルドプロセス全体がシームレスになるようにします。
.Netでのソリューションの構築
NetのデフォルトのビルドツールはMSBuildであり、.Netフレームワークに付属しています。 システムのフレームワークに応じて、関連するMSbuildバージョンが利用可能になります。 例として、デフォルトの場所にインストールされている.Netフレームワークがある場合、次の場所に MSBuild.exe ファイルがあります-.
C:\Windows\Microsoft.NET\Framework\v4.0.30319
サンプルプロジェクトの構築について説明します。 サンプルプロジェクトが C:\ Demo \ Simple というフォルダーにあるとします。
MSBuildを使用して上記のソリューションをビルドするには、コマンドプロンプトを開き、次のプログラムに示すようにMSBuildオプションを使用する必要があります。
msbuild C:\Demo\Simple\Simple.csproj
上記の例では、 csproj は.Netに固有のプロジェクトファイルです。 csprojファイルには、ソフトウェアが適切にビルドするために必要な情報が存在することを確認するためのすべての関連情報が含まれています。 以下は、MSBuildコマンドの出力のスクリーンショットです。
ビルドが成功し、エラーが発生していなければ、出力の警告について心配する必要はありません。
継続的インテグレーション-ビルドスクリプト
次に、MSBuildファイルの特定の側面を見て、その意味を確認します。 これらの側面は、継続的インテグレーションサイクルから知ることが重要です。
ビルドスクリプトは、継続的な統合サイクル全体の一部となるソリューションをビルドするために使用されます。 サンプルソリューションの .Net でVisual Studioの一部として作成された一般的なビルドスクリプトを見てみましょう。 ビルドスクリプトは、単純なソリューションであっても非常に大きなものであるため、最も重要な部分について説明します。 既定では、ビルドスクリプトはVisual Studioのメインソリューションと同じ名前のファイルに保存されます。 したがって、この場合、 Simple.csproj ファイルを開くと、ソリューションのビルドに使用されるすべての設定が表示されます。
- 使用されるMSBuildバージョンへの依存-次の設定では、CIサーバーにインストールされているMSBuildファイルが使用されます。
<VisualStudioVersion Condition = "'$(VisualStudioVersion)' ==
''">10.0</VisualStudioVersion>
<VSToolsPath Condition = "'$(VSToolsPath)' == ''">
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
</VSToolsPath>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<Import Project = "$(MSBuildBinPath)\Microsoft.CSharp.targets"/>
<Import Project = "$(VSToolsPath)\WebApplications\
Microsoft.WebApplication.targets" Condition = "'$(VSToolsPath)' ! = ''"/>
<Import Project = "$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\
WebApplications\Microsoft.WebApplication.targets" Condition = "false"/>
- ソリューションを適切にビルドするために必要なファイル- ItemGroup タグには、プロジェクトを正常にビルドするために必要なすべての必要な.Netファイルが含まれます。 これらのファイルは、それに応じてビルドサーバーに存在する必要があります。
<ItemGroup>
<Reference Include = "Microsoft.CSharp"/>
<Reference Include = "System.Web.DynamicData"/>
<Reference Include = "System.Web.Entity"/>
<Reference Include = "System.Web.ApplicationServices"/>
<Reference Include = "System.ComponentModel.DataAnnotations"/>
<Reference Include = "System"/>
<Reference Include = "System.Data"/>
<Reference Include = "System.Core"/>
<Reference Include = "System.Data.DataSetExtensions"/>
<Reference Include = "System.Web.Extensions"/>
<Reference Include = "System.Xml.Linq"/>
<Reference Include = "System.Drawing"/>
<Reference Include = "System.Web"/>
<Reference Include = "System.Xml"/>
<Reference Include = "System.Configuration"/>
<Reference Include = "System.Web.Services"/>
<Reference Include = "System.EnterpriseServices"/>
</ItemGroup>
- 使用するWebサーバー設定とは何ですか-連続展開のトピックにアクセスすると、MSBuildを使用してこれらの設定をオーバーライドし、選択したサーバーに展開する方法がわかります。
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>59495</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl></IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
CI-サーバー上での構築
次の重要なステップは、ソリューションがビルドサーバー上でビルドされるようにすることです。 継続的統合ツールを使用する前に、クライアントマシンで行われたのと同じ方法でビルドがビルドサーバーで実行されることを最初に確認する必要があるため、最初の部分は手動ステップです。 これを行うには、次の手順を実装する必要があります-
ステップ1 *-ソリューションファイル全体をサーバーにコピーします。 ビルドサーバーとして使用されるAmazonインスタンスサーバーを作成しました。 そのため、。Net *ソリューション全体をサーバーに手動でコピーします。
ステップ2 *-フレームワークがサーバーに存在することを確認します。 クライアントマシン上の.Net framework 4.0でアプリケーションをコンパイルした場合、サーバーマシンにもインストールされていることを確認する必要があります。 サーバーの *C:\ Windows \ Microsoft.NET \ Framework に移動して、目的のフレームワークが存在することを確認してください。
- ステップ3 *-サーバーでMSBuildを実行して、何が起こるか見てみましょう。
わかりましたので、エラーが発生したようです。 継続的インテグレーションには1つの重要な教訓があります。それは、ビルドがビルドサーバーで動作することを確認する必要があるということです。 そのためには、すべての前提ソフトウェアがビルドサーバーにインストールされていることを確認する必要があります。
Netの場合、 Visual Studio Redistributable package というコンポーネントをインストールする必要があります。 このパッケージには、*。Net *アプリケーションがサーバー上でビルドするために必要なすべての必要なファイルが含まれています。 ビルドサーバーで次のインストール手順を実行しましょう。.
- ステップ4 *-実行可能ファイルをダブルクリックして、インストールを開始します。
- ステップ5 *-次のステップで、ライセンス条項に同意し、[インストール]をクリックします。
ステップ6 *-MSBuildを実行する場合、MSBuildを呼び出すときに追加パラメーターを含める必要があります。これは、 *p:VisualStudioversion = 12.0 です。 これにより、MSBuildが前の手順でダウンロードしたファイルを参照するようになります。
これで、ソリューションが適切にビルドされたこと、およびサーバー上でベースラインプロジェクトが正しくビルドされたことを確認できます。
CI-ソースコードのチェックイン
次の重要な側面は、ベースラインコードがGitであるソースコードリポジトリ管理サーバーにチェックインされるようにすることです。 これを行うには、次の手順に従う必要があります。
ステップ1 *-リポジトリを初期化して、Gitにアップロードできるようにします。 これは、 *git initコマンドで行います。 そのため、プロジェクトフォルダーに移動して git init コマンドを発行する必要があります。
ステップ2 *-次のステップはGitのステージングファイルと呼ばれます。 これにより、プロジェクトフォルダー内のすべてのファイルが準備され、Gitに追加する必要があります。 これは、次のスクリーンショットに示すように *git add コマンドを使用して行います。 「。」表記は、ディレクトリおよびサブディレクトリ内のすべてのファイルをコミットに含める必要があることを示すために使用されます。
- ステップ3 *-最後のステップは、Gitリポジトリにファイルをコミットすることです。これにより、ファイルは本格的なGitリポジトリになります。
CI-TeamCityでのプロジェクトの作成
ソースコードがGitリポジトリにあり、すべての初期コードがビルドサーバーで動作するようになったので、Continuous Integrationサーバーでプロジェクトを作成します。 これは、次の手順を介して行うことができます-
ステップ1 *-TeamCityソフトウェアにログインします。 継続的インテグレーションサーバーのURLに移動します- *http://localhost:8080/loginl 。
管理者の資格情報を入力し、サーバーにログインします。
- ステップ2 *-ログインすると、ホーム画面が表示されます。 [プロジェクトの作成]をクリックして、新しいプロジェクトを開始します。
- ステップ3 *-プロジェクトの名前を指定し、[作成]をクリックしてプロジェクトを開始します。 この場合、次のスクリーンショットに示すように、プロジェクトに「デモ」という名前を付けています。
ステップ4 *-次のステップは、プロジェクトで使用されるGitリポジトリについて言及することです。 継続的インテグレーション環境では、CIサーバーはGit対応リポジトリからコードを取得する必要があることに注意してください。 前の手順で、プロジェクトフォルダーをGit対応のリポジトリーとして既に有効にしました。 TeamCityでは、VCSルートを作成する必要があります。 そのためには、プロジェクトのメイン画面で[ *VCS Roots ]をクリックします。
ステップ5 *-次に表示される画面で、次のスクリーンショットに示すように、 *Create VCS root をクリックします。
- ステップ6 *-表示される次の画面で、次のステップを実行します-
- VCSのタイプをGitとして言及します。 VCSルートの名前を指定します。これは任意のわかりやすい名前にすることができます。 App *という名前を付けました。
- Fetch URLを C:\ Demo \ Simple として指定します-これは out git 対応のリポジトリです。
- 画面を下にスクロールすると、テスト接続ボタンが表示されます。 クリックして、Git対応リポジトリーに正常に接続できることを確認します。
- ステップ7 *-[作成]をクリックすると、次の画像のように登録されたリポジトリが表示されます。
- ステップ8 *-次のステップは、プロジェクトのビルドに使用されるビルド構成を作成することです。 * TeamCity→一般設定*のプロジェクト画面に移動します。 [ビルド構成の作成]をクリックします。
ステップ9 *-次の画面で、ビルド構成の名前を指定します。 この例では、 *DemoBuild という名前を付けて、[作成]をクリックします。
ステップ10 *-表示される次の画面で、前のステップで作成された VCSリポジトリ*を選択するよう求められます。 そのため、名前「* App」*を選択して、[添付]をクリックします。
ステップ11 *-次に表示される次の画面で、ビルド手順を構成する必要があります。 「*ビルドステップを手動で設定」ハイパーリンクをクリックします。
- ステップ12 *-次のビルド画面で、次の詳細を入力する必要があります-
- MSBuildとしてランナータイプを選択します。
- ステップ名にオプションの名前を付けます。
- 構築する必要があるファイルの名前を指定します。 前のセクションでMSbuildを指定すると、通常、 Simple.csproj のオプションが指定されていることがわかります。 同じことをここで指定する必要があります。
- MSBuildバージョンを「Microsoft Build Tools 2013」として選択します。
- MSBuild ToolsVersion を12.0として選択します。
- ページを下にスクロールして、設定を保存します。
- ステップ13 *-次の画面で、[実行]をクリックします。
これで、アプリケーションのビルドが進行中になります。
画面が正常に表示されるはずです。これは、ソリューションが適切に構築されていることを示す良い兆候です。
次のスクリーンショットに示すように、ビルドログに移動して、継続的インテグレーションサーバーでカバーされたすべての手順を確認することもできます。
継続的インテグレーション-タスクの定義
Gitに基本コードとContinuous Integrationサーバーへのリンクができたので、いよいよ、Continuous Integrationの最初のステップが実際に動作することを確認します。 これは、トリガーなどの継続的インテグレーションサーバーでタスクを定義することにより行われ、継続的インテグレーションプロセス全体を可能な限りシームレスにします。 Visual Studioでコードを変更しましょう。
ステップ1 *-Visual Studioの *Demo.aspx ページに移動し、ページのタイトルを変更します。
ステップ2 *- *git status コマンドを使用してGitリポジトリをクエリすると、 Demo.aspx ファイルが変更されていることがわかります。
ここで、コードのすべての変更が継続的インテグレーションサーバーのビルドをトリガーすることを確認する必要があります。 このために、次の変更を行う必要があります。
ステップ3 *-プロジェクトダッシュボードに移動し、トリガーセクションをクリックして、[*新しいトリガーを追加]をクリックします。
ステップ4 *-表示される次の画面で、 VCSトリガー*を選択します。これはトリガーを作成するために使用され、リポジトリにチェックインが行われるとビルドがトリガーされます。
- ステップ5 *-*詳細オプションの表示*をクリックして、次のスクリーンショットに示すオプションが選択されていることを確認します。
- ステップ6 *-[保存]をクリックします。 次のスクリーンショットに示すように、トリガーが正常に登録されたことがわかります。
ステップ7 *-コードをGitリポジトリにチェックインして、何が起こるかを確認します。 コマンドプロンプトに移動して、 *git add コマンドを発行し、変更されたファイルをステージします。
ステップ8 *- *git commit コマンドを発行すると、変更がGitリポジトリにプッシュされます。
- ステップ9 *-[プロジェクトの概要]画面に移動すると、新しいビルドがトリガーされて実行されていることがわかります。
*Change log Tab* が表示されている場合は、ビルドをトリガーした* gitコメント*が表示されます。
変更ログタブ
もう一度試してみましょう。 Demo.aspx ファイルに別の変更を加えましょう。 次のコミットメッセージを使用して、 git add コマンドと git commit コマンドを実行してみましょう。
これで、TeamCityのプロジェクトダッシュボードでビルドが自動的にトリガーされます。
ビルドは成功メッセージを表示します。
変更が* gitリポジトリ*にコミットされたときに使用された「Second commit」のメッセージが表示されます。
これで、継続的インテグレーションプロセスの最初の部分が正常に完了しました。
CI-ビルド失敗通知
ビルド失敗通知は、ビルドが失敗するたびにトリガーされるイベントです。 通知は、ビルドが失敗するたびにすべての主要な人々に送信されます。 このような場合に最初に行うべき重要なことは、ビルドが成功するように、失敗したビルドに時間を費やすことです。 次の手順を使用して、ビルド通知がTeamCityに配置されるようにします。
以下は、TeamCityでメール通知を設定する手順です。
ステップ1 *-TeamCityで、プロジェクトダッシュボードに移動し、右上隅の[管理]をクリックします。 左側に *Email Notifier リンクが表示されます。 このリンクをクリックして、電子メールの一般設定を表示します。
ステップ2 *-次のステップは、有効な SMTPサーバー*の詳細を入力することです。 Gmailには無料のSMTP機能があり、誰でも使用できます。 そのため、次のスクリーンショットに示すように表示される次の画面でこれらの詳細を入力できます。
- SMTPホスト-smtp.gmail.com
- SMTPポート番号– 465
- からメールを送信し、SMTPログイン–これは有効なGmail IDである必要があります
- SMTPパスワード–そのGmail IDの有効なパスワード
- 安全な接続–これをSSLとして配置
- ステップ3 *-設定が適切に機能していることを確認するために、*テスト接続*をクリックします。 次に、[保存]をクリックして設定を保存します。
- ステップ4 *-次のステップは、ユーザーのビルド通知を有効にすることです。 最初のタスクは、これらのビルド通知を受け取るユーザーを作成することです。 プロジェクトダッシュボードに移動し、*ユーザーオプション*を選択します。
- ステップ5 *-新しいユーザーを作成します。 必要なユーザー名とパスワードを入力します。 次に、画面の下部にある[ユーザーの作成]ボタンをクリックします。
- ステップ6 *-この新しいユーザーIDとパスワードを使用してTeamCityシステムにログインします。
- ステップ7 *-ログイン後、ユーザーの一般設定が表示されます。 [メール通知]セクションで、[編集]をクリックします。
ステップ8 *-表示される次の画面で、[*新しいルールを追加]をクリックします。
- ステップ9 *-[新しいルールの追加]で、次の2つのオプションを選択し、[保存]をクリックします。
- 選択したプロジェクトからビルド–デモプロジェクトを選択します。
- 「ビルド失敗」のチェックボックスを有効にします。
これらの2つのオプションを有効にすると、デモプロジェクトのビルドが失敗するたびに、ユーザーに demouser という電子メール通知が送信されます。
ステップ10 *-次に、間違ったビルドをトリガーして、実際の動作を確認しましょう。 Visual Studioで、 *demo.aspx.cs ファイルに移動し、間違ったコード行を追加します。
ステップ11 *- *git add および git commit を実行して、Gitからコードをチェックインします。
これで、プロジェクトダッシュボードでビルドが自動的にトリガーされ、次のスクリーンショットに示すようにビルドが失敗したことがわかります。
*demouser* のGmail IDにログインすると、次のスクリーンショットに示すように、実際にビルド失敗通知が表示されます。
CI-ドキュメントとフィードバック
継続的インテグレーションの重要な側面の1つは、ビルドがどのように実行されているかを常に確認し、重要なメトリックを収集し、それらの結果を文書化し、継続的なビルドを通じて継続的なフィードバックを生成することです。
これらのメトリックを適切に配置することの利点は何ですか?
- コードを十分にコミットしていない-開発者がコードをバージョン管理リポジトリに頻繁にコミットしていない場合、その理由は統合ビルドが遅いことです。 ビルド期間の短縮を開始するには、統合ビルド環境の高度な分析を実行して、ボトルネックを特定します。 +次に、調査結果を分析して最も適切な改善点を決定し、ビルドプロセスを変更してビルドの期間を短縮します。 最後に、ビルド期間を再評価して、さらなる改善が必要かどうかを判断します。
- テストのパフォーマンスを改善-正常に機能するCIシステムでも、自動化されたテストの実行により、統合ビルド時間の大部分が占められます。 これらのテストのパフォーマンスを評価および改善すると、ビルド期間を劇的に短縮できます。
- インフラストラクチャの問題-システムインフラストラクチャのために、統合ビルドが遅いことがわかります。 おそらく、ネットワークのパフォーマンスが遅いか、パフォーマンスの遅い仮想プライベートネットワーク接続があります。 +地理的に分散したシステムと信頼性の低いハードウェアまたはソフトウェアも、パフォーマンスの問題を引き起こす可能性があります。 インフラストラクチャリソースを調査および改善して、ビルド期間を短縮します。
測定基準
以下は、継続的インテグレーションサーバーで利用可能なメトリックの一部です。
TeamCityが提供するものを見てみましょう-
メトリックの最も簡単な形式の1つは、プロジェクトダッシュボードで利用できるものです。 ここで重要な要素は、各ビルドの期間を記録することです。 各ビルドの期間が、ビルドされるコードに対して不均衡に増加し始める場合、これは問題になる可能性があります。 したがって、これは実行可能なフィードバックの1つであり、その原因は、CIサーバーのリソースが少なく、サーバーの容量を増やす必要がある可能性があることです。
TeamCityには、インフラストラクチャに関してCIサーバーに実際に何らかの問題があるかどうかを確認する機能があります。 TeamCityの* adminダッシュボード*で、 Disk Usage をクリックして、各ビルドで消費されているディスク容量を確認できます。
さらに詳細が必要な場合は、TeamCityに*診断ボタン*があり、CIサーバーで使用されている* CPUおよびメモリ*の詳細情報を確認できます。
ビルドメトリックの詳細ビュー
特定のプロジェクトのビルドの詳細なビューを長期にわたって見たい場合は、プロジェクトビルドの一部として利用できます。 プロジェクトのビルド画面で、統計画面に移動します。これにより、ビルドのパフォーマンスに関するさまざまな統計とグラフが提供されます。
継続的インテグレーション-テスト
継続的インテグレーションの重要な機能の1つは、継続中のテスト*がCIサーバーによって構築されたすべてのコードを確実に保持することです。 CIサーバーによってビルドが実行された後、必要なコードをテストするためにテストケースが配置されていることを確認する必要があります。 すべてのCIサーバーには、 CIスイート*の一部としてユニットテストケースを実行する機能があります。 .Net では、ユニットテストは* .Netフレームワーク*に組み込まれている機能であり、同じことをCIサーバーにも組み込むことができます。
この章では、*。Net *でテストケースを定義し、ビルドの完了後にTeamCityサーバーでこのテストケースを実行する方法を説明します。 このためには、まずサンプルプロジェクトに対してユニットテストが定義されていることを確認する必要があります。
これを行うには、次の手順に細心の注意を払う必要があります。
- ステップ1 *-ユニットテストで使用する新しいクラスをソリューションに追加しましょう。 このクラスには、文字列「Continuous Integration」を保持する名前変数があります。 この文字列はWebページに表示されます。 Simple Projectを右クリックして、メニューオプション*追加→クラス*を選択します。
ステップ2 *-クラスの名前を *Tutorial.cs として指定し、画面下部の[追加]ボタンをクリックします。
ステップ3 *-Tutorial.csファイルを開き、次のコードを追加します。 このコードは、 *Name という文字列を作成し、コンストラクターで名前を Continuous Integration として文字列値に割り当てます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Simple {
public class Tutorial {
public String Name;
public Tutorial() {
Name = "Continuous Integration";
}
}
}
ステップ4 *-この新しいクラスを使用するために、 *Demo.aspx.cs ファイルに変更を加えましょう。 このファイルのコードを次のコードで更新します。 したがって、このコードは上記で作成したクラスの新しいインスタンスを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Simple {
public partial class Demo : System.Web.UI.Page {
Tutorial tp = new Tutorial();
protected void Page_Load(object sender, EventArgs e) {
tp.Name = "Continuous Integration";
}
}
}
ステップ5 *- *demo.aspx ファイルで、 aspx.cs ファイルで作成された tp.Name 変数を参照します。
<%@ Page Language = "C#" AutoEventWireup = "true"
CodeBehind = "Demo.aspx.cs" Inherits = "Simple.Demo" %>
<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml">
<head runat = "server">
<title>finddevguides1</title>
</head>
<body>
<form id = "form1" runat = "server">
<div>
<% = tp.Name%>)
</div>
</form>
</body>
</html>
これらの変更でコードが正常に機能することを確認するために、Visual Studioでコードを実行できます。 コンパイルが完了すると、次の出力が得られます。
ステップ6 *-次に、ユニットテストをプロジェクトに追加します。 *Solution を右クリックして、メニューオプション Add→New Project を選択します。
ステップ7 *-*テスト*に移動し、右側で*ユニットテストプロジェクト*を選択します。 *DemoTest という名前を付けて、[OK]をクリックします。
- ステップ8 *-*デモテストプロジェクト*で、シンプルプロジェクトと必要な*テストアセンブリ*への参照を追加する必要があります。 プロジェクトを右クリックして、メニューオプション[参照の追加]を選択します。
ステップ9 *-表示される次の画面で、[プロジェクト]に移動し、[*シンプルリファレンス]を選択して、[OK]をクリックします。
ステップ10 *-[参照の追加]をもう一度クリックし、[アセンブリ]に移動して、[検索]ボックスに *Web と入力します。 次に、 System.Web の参照を追加します。
- ステップ11 *-*ユニットテストファイル*で、次のコードを追加します。 このコードは、Tutorialクラスに文字列名変数があることを確認します。 また、名前が「継続的統合」の値と等しくなければならないという事実も主張します。 これは、簡単なテストケースになります。
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Simple;
namespace DemoTest {
[TestClass]
public class UnitTest1 {
[TestMethod]
public void TestMethod1() {
Tutorial tp = new Tutorial();
Assert.AreEqual(tp.Name, "Continuous Integration");
}
}
}
- ステップ12 *-Visual Studioでテストを実行して、動作することを確認します。 Visual Studioで、メニューオプション[テスト]→[実行]→[すべてのテスト]を選択します。
テストを実行すると、Visual Studioの左側にテストが正常に実行されたことがわかります。
TeamCity内での継続的なテストの有効化–すべてのテストケースが準備できたので、これらをTeam Cityサーバーに統合します。
- ステップ13 *-このため、プロジェクト構成でビルドステップを作成する必要があります。 プロジェクトのホームに移動し、[構成設定の編集]をクリックします。
- ステップ14 *-次のスクリーンショットに示すように、[ビルドステップ]→[MSビルド]に移動し、[ビルドステップの追加]をクリックします。
表示される次の画面で、次の値を追加します-
- Visual Studio Testsとしてランナータイプを選択します。
- オプションのテストステップ名を入力します。
- テストエンジンタイプとして VSTest を選択します。
- テストエンジンのバージョンとして VSTest2013 を選択します。
- テストファイル名で、場所を DemoTest \ bin \ Debug \ DemoTest.dll として指定します。 DemoTest はユニットテストを含むプロジェクトの名前であることに注意してください。 DemoTest.dll は、最初のビルドステップで生成されます。
- 画面の最後にある[保存]をクリックします。
これで、プロジェクトに2つのビルドステップがあります。 最初は、アプリケーションコードとテストプロジェクトをビルドするビルドステップです。 そして、次はテストケースを実行するために使用されます。
ステップ15 *-次に、ビルドプロセス全体をトリガーできるように、Gitですべてのコードをチェックインします。 唯一の違いは今回だけです。次のスクリーンショットに示すように、 Demo親フォルダー*から git add および git commit コマンドを実行する必要があります。
ビルドがトリガーされると、テストに合格したことを示す初期出力が表示されます。
- ステップ16 *-テストに合格した結果をクリックして、テストタブに移動すると、UnitTest1が実行され、合格したことがわかります。
継続的インテグレーション-検査
連続検査とは、実際のテストを実行する前にコードに対して実施される検査の自動コードレビューのプロセスです。 ソフトウェアの検査とテストには微妙な違いがあります。 テストは動的であり、機能をテストするためにソフトウェアを実行します。 検査では、事前定義された一連のルールに基づいてコードを分析します。
インスペクター(または静的および動的分析ツール)は、チームが従うべき識別された標準(通常はコーディングまたは設計メトリック)によって指示されます。 検査対象の例には、「文法」標準のコーディング、アーキテクチャの階層化の順守、コードの複製などが含まれます。
継続的な検査により、発見から修正までの時間が短縮されます。 使用可能な連続検査ツールがいくつかあります。 この例では、TeamCityと統合された NCover 3.x を使用します。 連続検査を実行する方法と、それが私たちにできることを見てみましょう。
NCoverのダウンロードとインストール
NCoverは、ダウンロードしてインストールする必要がある別個の製品です。 NCoverをダウンロードするには、次のリンクをクリックして32ビットインストーラーをダウンロードしてください-http://www.ncover.com/info/download[[[2]]]
ダウンロードしたインストーラーを実行し、インストーラーの起動後に[次へ]をクリックします。
ライセンス契約に同意し、[次へ]をクリックします。
デフォルトのコンポーネントを受け入れて、「次へ」をクリックします。
[インストール]ボタンをクリックして、インストールを開始します。
[完了]ボタンをクリックして、インストールを完了します。
*C:\ Program Files(x86)\ NCover \ NCover.Explorer.exe* にアクセスして、NCoverインストールを初めて起動します。 初めてトライアルキーをインストールする必要がありますが、これは簡単なプロセスです。
NCoverを使用するようにTeamCityでプロジェクトを構成する
- ステップ1 *-プロジェクトのホーム画面に移動し、[構成設定の編集]をクリックします。
ステップ2 *-ビルドステップに移動し、 *TestStep の[編集]をクリックします。 連続検査は、定義されている単体テストとともに実行する必要があります。
ステップ3 *-.Net Coverageセクションで、。Net Coverage Tool *をクリックします。 そして、次の設定を選択します。
- .Net CoverageツールをNCover(3.x)として選択します
- x86としてのプラットフォーム
- v4.0としてのバージョン
- C:\ Program Files(x86)\ NCoverとしてのNCoverへのパス
- 他の設定はそのままにしておきます
- ステップ4 *-[保存]をクリックします。
- ステップ5 *-プロジェクトのメイン画面に移動して、[実行]をクリックします。
- ステップ6 *-ビルドが実行されたら、合格したテストをクリックします。 コードカバレッジ画面が表示され、多くのメトリックインジケーターが表示されます。
- ステップ7 *-[コードカバレッジ]タブをクリックして、コード分析の詳細情報を取得できるようになりました。
ステップ8 *- *fullcoveragereportl をクリックします。 これで、*。Netコード*に対して実行された検査に関する完全な包括的なレポートを取得できます。
継続的インテグレーション-データベース
継続的なデータベース統合は、プロジェクトのバージョン管理リポジトリに変更が適用されるたびにデータベースとテストデータを再構築するプロセスです。
データベース統合では、通常、データベース統合に関連するすべての成果物-
- バージョン管理システムに常駐する必要があります。
- 厳密性をテストし、ポリシーのコンプライアンスを検査できます。
- ビルドスクリプトを使用して生成できます。
継続的なデータベース統合に関与できるアクティビティは、次のいずれかです。
データベースのドロップ-データベースをドロップし、関連するデータを削除して、同じ名前の新しいデータベースを作成できるようにします
新しいデータベースの作成-データ定義言語(DDL)を使用して新しいデータベースを作成します。
初期データの挿入-システムに配信時に含まれると予想される初期データ(ルックアップテーブルなど)を挿入します。
データベースとデータの移行-定期的にデータベーススキーマとデータを移行します(既存のデータベースに基づいてシステムを作成している場合)。
列属性の変更-要件とリファクタリングに基づいて表の列属性と制約を変更します。
テストデータの変更-複数の環境の必要に応じてテストデータを変更します。
したがって、連続データベースの例では、次の手順を実行します-
- MS SQL Serverデータベースと対応するテーブルを作成します。
- SQL Server Management Studioからスクリプトを作成します。 このデータベーススクリプトは、データベースにテーブルを設定するために使用されます。
- ASP.Netプロジェクトにこのデータベースにアクセスするコードを記述します。
- TeamCityのプロジェクトにこのスクリプトを実行するためのステップを作成します。
- スクリプトをGitにチェックインします。
前のセクションで作成したAWSデータベースでこれを行う手順。
- ステップ1 *-MS SQL Serverデータベースと対応するテーブルを作成します。 SQL Server Management Studioを開いて、簡単なデータベースとテーブルを作成しましょう。 データベースを右クリックして、[新しいデータベース]をクリックします。
ステップ2 *- *Demodb という名前を付けて[OK]をクリックします
- ステップ3 *-新しいデータベースで、右クリックして新しいテーブルを作成します。
- ステップ4 *-目的の列をテーブルに追加できます。
ステップ5 *-テーブルを保存し、 *Demotb という名前を付けます。
ステップ6 *-テーブルを右クリックして、メニューオプション *Script Table as→Drop and Create to→File を選択します。
ステップ7 *-ファイルを *Sample.sql としてデモプロジェクトフォルダーに保存します。
これは、データベーススクリプトがどのように見えるかです。 既存のテーブルが存在する場合は、最初にドロップしてから、テーブルを再作成します。
USE [Demodb]
GO
/****** Object: Table [dbo].[Demotb] Script Date: 3/22/2016 7:03:25 AM
******
DROP TABLE [dbo].[Demotb]
GO
/****** Object: Table [dbo].[Demotb] Script Date: 3/22/2016 7:03:25 AM
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Demotb](
[TutorialName] [nvarchar](max) NULL,
[TutorialID] [smallint] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ステップ8 *-次に、 ASP.Netコード*を変更して、新しいデータベースを参照するようにします。
ステップ9 *-*デモプロジェクト*の *Tutorial.cs ファイルに、次のコード行を追加します。 これらのコード行はデータベースに接続し、サーバーバージョンを取得して、Name変数にバージョン名を格納します。 Response.write コマンドを使用して、このName変数を Demo.aspx.cs ファイルに表示できます。
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
namespace Simple {
public class Tutorial {
public String Name;
public Tutorial() {
string connectionString = "Data Source = WIN-50GP30FGO75;
Initial Catalog = Demodb;
Integrated Security = true;";
using (SqlConnection connection = new SqlConnection()) {
connection.ConnectionString = connectionString;
connection.Open();
Name = connection.ServerVersion;
connection.Close();
}
}
}
}
ステップ10 *-次のコードを *Demo.aspx.cs ファイルに追加して、SQL Serverバージョンが表示されるようにします。
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Simple {
public partial class Demo : System.Web.UI.Page {
Tutorial tp = new Tutorial();
protected void Page_Load(object sender, EventArgs e){
Response.Write(tp.Name);
}
}
}
コードを実行すると、ブラウザに次の出力が表示されます。
- ステップ11 *-データベーススクリプトを呼び出すTeamCityにステップを追加しましょう。 プロジェクトダッシュボードに移動し、[構成設定の編集]をクリックします。
- ステップ12 *-ビルドステップに移動し、*ビルドステップの追加*をクリックします。
以下のオプションを選択します(MS SQL ServerクライアントをCIサーバーにインストールする必要があることに注意してください)。
- ランナーの種類はコマンドラインにする必要があります。
- オプションのステップ名を指定します。
- 実行は、パラメータを使用して実行可能にする必要があります。
- コマンド実行可能ファイルは C:\ Program Files \ Microsoft SQL Server \ 110 \ Tools \ Binn \ sqlcmd.exe である必要があります
- コマンドパラメータは -S WIN-50GP30FGO75 -i Sample.sql である必要があります。 -Sは、SQL Serverインスタンスの名前を示します。
- ステップ13 *-[保存]をクリックします。
ここで確認する必要があるのは、ビルドの順序です。 ビルド順序が次のとおりであることを確認する必要があります。
- ステップ14 *-ビルド手順を並べ替えるオプションを選択して、ビルド順序を変更できます。
- データベースのセットアップを最初に行う必要があります–したがって、これはデータベースを新規から再作成するために使用されます。
- 次は、アプリケーションのビルドです。
- 最後に、テストのセットアップ。
ステップ15 *- *git add および git commit コマンドを実行して、 Sample.sql ファイルがGitにチェックインされるようにします。 これにより、ビルドが自動的にトリガーされます。 そして、このビルドはパスするはずです。
これで、サイクルにも継続的なデータベース統合の側面を備えた本格的なビルドサイクルができました。 次のセクションでは、これをさらに進めて、継続的な展開を見てみましょう。
ローカルSQLサーバーでこれを実行したので、前のセクションのいずれかで作成された AWS MS SQL サーバーに対して同じ手順を繰り返すことができます。 Microsoft SQL Serverに接続するには、次の規則で接続する必要があります。
- ステップ16 *-まず、AWSでデータベースインスタンスに割り当てられている名前を確認します。 AWSにログインしたら、データベースセクションの下のRDSセクションに移動します。
- ステップ17 *-表示される次の画面で[DBインスタンス]をクリックします。
ステップ18 *-データベースをクリックして、エンドポイントを書き留めます。 次のスクリーンショットでは、 *demodb.cypphcv1d87e.ap-southeast-1.rds.amazonaws.com:1433 です。
ステップ19 *- *SQL Server Management Studio からデータベースに接続するには、接続を demodb.cypphcv1d87e.ap-southeast-1.rds.amazonaws.com、1433 として指定する必要があります(使用されているコンマに注意してください)インスタンス名とポート番号の間)。
次のスクリーンショットは、データベースへの正常な接続を示しています。
その後、すべて同じ手順を繰り返すことができます。 * Sqlcmdコマンド*は次のようになります-
この同じコマンドは、TeamCityのデータベースビルドステップで置き換えることができます。 * sqlcmdコマンド*を実行すると、AWSのSQL Serverデータベースにテーブルが自動的に作成されます。
継続的インテグレーション-展開
自動ビルドと繰り返し可能なビルド。 自動化されたテストと繰り返し可能なテスト。 テストカテゴリとテスト頻度。 継続的な検査。 継続的なデータベース統合。 効果的なCI環境を作成するためのこれらの一連のタスクは、主に1つの重要な利点を可能にします。
前の章では、次のセグメントのすべてを達成しました-
- コードを作成しました。
- TeamCityで適切なビルドを保証しました。
- データベース統合プロセスを作成しました。
- 成功したテストを実施しました。
残りの作業は、自動展開を実行することだけです。これにより、プロセス全体が完了します。
私たちの場合の自動展開では、次の手順に従う必要があります-
- 展開サーバーで、IISがインストールされていることを確認します。
- IISユーザーにデータベースへのアクセス権が付与されていることを確認してください。
- サイトの構築時にサイトを公開するために使用される公開プロファイルを作成します。
- MSBuildコマンドを変更して、自動展開を行うようにしてください。
- TeamCityを自動化して、自動発行を行います。
- git commit を実行して、すべてのファイルがGitにあることを確認します。
- ステップ1 *-ローカルIISサーバーを構成します。 ローカルまたはリモートのIISサーバーがある場合、次の構成を実行してアプリケーションを展開できます。 展開を自動化する前に手動で展開できるかどうかを確認することは常に良い習慣です。
- ステップ2 *-Windows 2012サーバーで、サーバーマネージャーに移動し、[役割と機能の追加]をクリックします。
- ステップ3 *-表示される次の画面で[次へ]をクリックします。
- ステップ4 *-次の画面で役割ベースまたは機能ベースのインストールを選択し、[次へ]をクリックします。
- ステップ5 *-デフォルトサーバーを選択し、[次へ]をクリックします。
- ステップ6 *-Webサーバーの役割を選択し、[次へ]をクリックします。
- ステップ7 *-表示される次の画面で、[次へ]をクリックします。
- ステップ8 *-表示される次の画面でもう一度[次へ]をクリックします。
- ステップ9 *-ポップアップ表示される次の画面で、[次へ]をクリックします。
- ステップ10 *-最後の画面で、[インストール]ボタンをクリックしてIISをインストールできます。
IISをインストールしたら、インターネットインフォメーションサービスを開いてIISを開くことができます。
ステップ11 *-[アプリケーションプール]をクリックすると、 *DefaultAppPool という名前のプールが表示されます。 これには、次のステップでSQL Serverにアクセスする必要があります。
ステップ12 *-ASP.NetアプリケーションをMS SQL Serverアプリケーションに接続する必要がある場合、デフォルトのアプリケーションプールへのアクセスをSQL Serverインスタンスに与えて、 *Demodb データベースに接続できるようにする必要があります。
- ステップ13 *-SQL Server Management Studioを開きます。 [ログイン]に移動し、右クリックして、メニューオプション[新しいログイン]を選択します。
次の画面で、以下のパラメーターを更新し、「OK」をクリックします。
- IIS APPPOOL \ DefaultAppPoolとしてのログイン名。
- デフォルトのデータベース-これは、データベース、demodbである必要があります。
- ステップ14 *-*公開プロファイル*の作成。 公開プロファイルはVisual Studioで使用され、MS Buildで使用できる展開パッケージを作成し、それに応じてCIサーバーで使用できます。 これを行うには、Visual Studioからプロジェクトを右クリックし、[公開]のメニューオプションをクリックします。
ステップ15 *-表示される次の画面で、新しい発行プロファイルの作成を選択し、名前を付けます- *DemoDeployment 。 次に、「次へ」ボタンをクリックします。
表示される次の画面で、次の値を追加します-
- Web配置として発行方法を選択します。
- サーバーをlocalhostとして入力します。
- デフォルトのWebサイト/デモとしてサイト名を入力します。
- リンク先URLを http://localhost/Demo として配置します
次に、「次へ」ボタンをクリックします。
- ステップ16 *-次の画面で、[次へ]をクリックします。
- ステップ17 *-表示される最終画面で、[公開]ボタンをクリックします。
プロジェクトの C:\ Demo \ Simple \ Properties \ PublishProfiles の場所に移動すると、新しい*公開プロファイルxmlファイル*が作成されます。 この公開プロファイルファイルには、アプリケーションをローカルIISサーバーに公開するために必要なすべての詳細が含まれます。
- ステップ18 *-次に、MSBuildコマンドをカスタマイズし、上記の公開プロファイルを使用して、何が起こるかを見てみましょう。 私たちのMSBuildコマンドでは、次のパラメータを指定します-
- ビルド時にデプロイが正しい-ビルドが成功すると、自動デプロイがトリガーされます。
- 次に、上記の手順で使用された公開プロファイルを使用することに言及します。
- Visual Studioバージョンは、使用されているVisual Studioのバージョンに関するMSBuild展開機能に言及するだけです。
上記のコマンドを実行すると、MSBuildはビルドおよび展開プロセスをトリガーします。 気付くのは、IISサーバーの Default Website に展開していることです。
ここで、* http://localhost/Demo/Demo.aspx*のサイトを参照すると、次の出力が表示されます。これは、MSBuildがWebサイトに正常に展開されたことを意味します。
- ステップ19 *-TeamCityを自動化する-ここで、上記の手順に基づいて、MSBuildを使用してアプリケーションを展開するためにTeamCityサーバーにタスクを追加します。
ステップ20 *-プロジェクトダッシュボードに移動して、[*構成設定の編集]をクリックします。
- ステップ21 *-ビルドステップに移動し、ビルドステップの追加をクリックします。
次のオプションを選択してください-
- ランナータイプはMSBuildである必要があります
- オプションのステップ名を指定します
- ビルドパスをSimple/Simple.csprojとして入力します
- MSBuildバージョンをMicrosoft Build Tools 2013として保持する
- MSBuild Toolsバージョンを12.0のままにしてください */p:DeployOnBuild = true/p:PublishProfile = DemoDeployement/p:VisualStudioVersion = 12.0としてコマンドラインを入力します
- ステップ22 *-[保存]をクリックします。
ビルド構成設定[保存をクリック)
ビルド手順では、展開手順がチェーンの最後の手順であることを確認してください。
ステップ23 *-最後の *git commit を実行して、すべてのファイルがGitにあり、TeamCityで使用できるようにします。
おめでとうございます。アプリケーションの完全な継続的インテグレーションサイクルが正常に設定されました。これはいつでも実行できます。
継続的インテグレーション-ベストプラクティス
これまでに学んだすべての教訓に基づいて、継続的インテグレーションのベストプラクティスの最終レビューを行いましょう。
- コードリポジトリの維持-これは最も基本的な手順です。 すべての例で、コードベースからパブリッシュプロファイル、データベーススクリプトまで、すべてがGitリポジトリに保持されています。 すべてがコードリポジトリに保持されていることを常に確認する必要があります。
- ビルドの自動化-MSBuildを使用してビルドを自動化し、パブリッシュプロファイルを使用する方法を見てきました。 これも、継続的な統合プロセスの重要なステップです。
- ビルドをセルフテストします-ユニットテストケースを所定の場所に保持することでビルドをテストでき、これらのテストケースは継続的インテグレーションサーバーで実行できるようにする必要があります。
- 誰もが毎日ベースラインにコミットします-これは継続的インテグレーションの重要な原則です。 誰がビルドを壊すかを確認するために、プロセス全体の最後まで滞在する意味はありません。
- (ベースラインへの)すべてのコミットをビルドする必要があります-アプリケーションに対して行われるすべてのコミットは、正常にビルドする必要があります。 何らかの理由でビルドが失敗した場合は、ビルドを確実にパスするためにコードを変更する必要があります。
- ビルドを高速に保つ-ビルドが遅い場合は、継続的インテグレーションプロセス全体に問題があることを示します。 ビルドは常に期間に制限され、できれば10分を超えないようにしてください。
- 誰もが最新のビルドの結果を見ることができます-TeamCityダッシュボードは、すべてのビルドのすべてのビューを提供します。 これにより、継続的インテグレーションプロセスに関与しているすべての人々に優れた洞察が得られます。