Continuous-integration-database
継続的インテグレーション-データベース
継続的なデータベース統合は、プロジェクトのバージョン管理リポジトリに変更が適用されるたびにデータベースとテストデータを再構築するプロセスです。
データベース統合では、通常、データベース統合に関連するすべての成果物-
- バージョン管理システムに常駐する必要があります。
- 厳密性をテストし、ポリシーのコンプライアンスを検査できます。
- ビルドスクリプトを使用して生成できます。
継続的なデータベース統合に関与できるアクティビティは、次のいずれかです。
データベースのドロップ-データベースをドロップし、関連するデータを削除して、同じ名前の新しいデータベースを作成できるようにします
新しいデータベースの作成-データ定義言語(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データベースにテーブルが自動的に作成されます。