Continuous-integration-database

提供:Dev Guides
移動先:案内検索

継続的インテグレーション-データベース

継続的なデータベース統合は、プロジェクトのバージョン管理リポジトリに変更が適用されるたびにデータベースとテストデータを再構築するプロセスです。

データベース統合では、通常、データベース統合に関連するすべての成果物-

  • バージョン管理システムに常駐する必要があります。
  • 厳密性をテストし、ポリシーのコンプライアンスを検査できます。
  • ビルドスクリプトを使用して生成できます。

継続的なデータベース統合に関与できるアクティビティは、次のいずれかです。

データベースのドロップ-データベースをドロップし、関連するデータを削除して、同じ名前の新しいデータベースを作成できるようにします

新しいデータベースの作成-データ定義言語(DDL)を使用して新しいデータベースを作成します。

初期データの挿入-システムに配信時に含まれると予想される初期データ(ルックアップテーブルなど)を挿入します。

データベースとデータの移行-定期的にデータベーススキーマとデータを移行します(既存のデータベースに基づいてシステムを作成している場合)。

列属性の変更-要件とリファクタリングに基づいて表の列属性と制約を変更します。

テストデータの変更-複数の環境の必要に応じてテストデータを変更します。

したがって、連続データベースの例では、次の手順を実行します-

  • MS SQL Serverデータベースと対応するテーブルを作成します。
  • SQL Server Management Studioからスクリプトを作成します。 このデータベーススクリプトは、データベースにテーブルを設定するために使用されます。
  • ASP.Netプロジェクトにこのデータベースにアクセスするコードを記述します。
  • TeamCityのプロジェクトにこのスクリプトを実行するためのステップを作成します。
  • スクリプトをGitにチェックインします。

前のセクションで作成したAWSデータベースでこれを行う手順。

  • ステップ1 *-MS SQL Serverデータベースと対応するテーブルを作成します。 SQL Server Management Studioを開いて、簡単なデータベースとテーブルを作成しましょう。 データベースを右クリックして、[新しいデータベース]をクリックします。

新しいデータベース

ステップ2 *- *Demodb という名前を付けて[OK]をクリックします

デモDB

  • ステップ3 *-新しいデータベースで、右クリックして新しいテーブルを作成します。

Tables Create New Table

  • ステップ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

これで、サイクルにも継続的なデータベース統合の側面を備えた本格的なビルドサイクルができました。 次のセクションでは、これをさらに進めて、継続的な展開を見てみましょう。

ローカルSQLサーバーでこれを実行したので、前のセクションのいずれかで作成された AWS MS SQL サーバーに対して同じ手順を繰り返すことができます。 Microsoft SQL Serverに接続するには、次の規則で接続する必要があります。

  • ステップ16 *-まず、AWSでデータベースインスタンスに割り当てられている名前を確認します。 AWSにログインしたら、データベースセクションの下のRDSセクションに移動します。

データベースセクションの下のRDSセクション

  • ステップ17 *-表示される次の画面で[DBインスタンス]をクリックします。

次の画面の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コマンド*は次のようになります-

Sql cmdコマンド

この同じコマンドは、TeamCityのデータベースビルドステップで置き換えることができます。 * sqlcmdコマンド*を実行すると、AWSのSQL Serverデータベースにテーブルが自動的に作成されます。

データベースビルドステップ