持續整合 - 資料庫



持續資料庫整合是指在專案版本控制庫中應用任何更改時,重新構建資料庫和測試資料的過程。

在資料庫整合中,通常所有與資料庫整合相關的工件 -

  • 應駐留在版本控制系統中。
  • 可以對其嚴格性進行測試,並檢查其是否符合策略。
  • 可以使用構建指令碼生成。

持續資料庫整合中可能涉及的活動可以是以下任何一項 -

刪除資料庫 - 刪除資料庫並刪除關聯的資料,以便可以使用相同名稱建立新資料庫

建立新資料庫 - 使用資料定義語言 (DDL) 建立新資料庫。

插入初始資料 - 插入系統在交付時預計包含的任何初始資料(例如,查詢表)。

遷移資料庫和資料 - 定期遷移資料庫架構和資料(如果您正在基於現有資料庫建立系統)。

修改列屬性 - 根據需求和重構修改表列屬性和約束。

修改測試資料 - 根據需要更改多個環境的測試資料。

因此,在我們的持續資料庫示例中,我們將執行以下步驟 -

  • 我們將建立一個 MS SQL Server 資料庫和一個相應的表。

  • 我們將從 SQL Server Management Studio 中提取一個指令碼。此資料庫指令碼將用於在資料庫中設定我們的表。

  • 我們將在 ASP.Net 專案中編寫程式碼以訪問此資料庫。

  • 我們將在 TeamCity 中的專案中建立一個步驟來執行此指令碼。

  • 我們將指令碼簽入 Git。

在前面部分建立的 AWS 資料庫中執行此操作的步驟。

步驟 1 - 建立一個 MS SQL Server 資料庫和一個相應的表。讓我們開啟 SQL Server Management Studio 並建立一個簡單的資料庫和表。右鍵單擊資料庫,然後單擊新建資料庫

New Database

步驟 2 - 將其命名為Demodb,然後單擊確定

Demo DB

步驟 3 - 在新資料庫中,右鍵單擊並建立一個新表。

Tables Create New Table

步驟 4 - 您可以將所需的列新增到表中。

Add Desired Columns

步驟 5 - 儲存表並將其命名為Demotb

步驟 6 - 現在右鍵單擊該表,然後選擇選單選項將表指令碼化為→刪除和建立到→檔案

Menu Option

步驟 7 - 將檔案儲存到演示專案資料夾中,命名為Sample.sql

Save As Sample

這就是資料庫指令碼的外觀。它將首先刪除現有的表(如果存在),然後重新建立該表。

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 - 在Demo 專案中的Tutorial.cs檔案中,新增以下程式碼行。這些程式碼行將連線到您的資料庫,獲取伺服器版本並將版本名稱儲存在 Name 變數中。我們可以透過Response.write命令在Demo.aspx.cs檔案中顯示此 Name 變數。

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);
      }
   }
}

現在,如果我們執行程式碼,您將在瀏覽器中獲得以下輸出。

Output

步驟 11 - 現在讓我們在 TeamCity 中新增我們的步驟,該步驟將呼叫資料庫指令碼。轉到您的專案儀表板,然後單擊編輯配置設定

Click Edit Configuration Settings

步驟 12 - 轉到構建步驟,然後單擊新增構建步驟

Add Build Step

選擇以下選項(請注意,CI 伺服器上應安裝 MS SQL Server 客戶端)。

  • 執行程式型別應為命令列。

  • 提供可選的步驟名稱。

  • 執行應為具有引數的可執行檔案。

  • 命令可執行檔案應為C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe

  • 命令引數應為-S WIN-50GP30FGO75 -i Sample.sql。其中 –S 給出 SQL Server 例項的名稱。

步驟 13 - 單擊儲存。

Build Order

現在需要確保構建順序。您必須確保構建順序如下。

步驟 14 - 您可以透過選擇重新排序構建步驟的選項來更改構建順序。

  • 資料庫設定應首先進行 - 因此這將用於從頭開始重新建立您的資料庫。

  • 接下來是應用程式的構建。

  • 最後是您的測試設定。

Test Setup

步驟 15 - 現在執行git addgit commit命令,以便將Sample.sql檔案簽入 Git。這將自動觸發構建。並且此構建應該透過。

Sample SQL

您現在擁有一個完整的構建週期,其中也包含持續資料庫整合方面。在下一節中,讓我們進一步研究持續部署。

既然您已經使用本地 SQL Server 完成了此操作,我們可以對前面部分建立的AWS MS SQL Server 重複相同的步驟。要連線到 Microsoft SQL Server,您需要透過以下約定連線。

步驟 16 - 首先檢視在 AWS 中分配給資料庫例項的名稱是什麼。登入到 AWS 後,轉到資料庫部分下的 RDS 部分。

RDS Section Under Database Section

步驟 17 - 在出現的下一個螢幕中單擊 DB 例項。

DB Instances in Next Screen

步驟 18 - 單擊您的資料庫並記下端點。在以下螢幕截圖中,它是demodb.cypphcv1d87e.ap-southeast-1.rds.amazonaws.com:1433

Endpoint

步驟 19 - 現在要從SQL Server Management Studio連線到資料庫,您需要將連線指定為demodb.cypphcv1d87e.ap-southeast-1.rds.amazonaws.com,1433(請注意例項名稱和埠號之間使用的逗號)。

Connect to Server

以下螢幕截圖顯示了與資料庫的成功連線。

Successful Connection

然後您可以重複所有相同的步驟。Sqlcmd 命令將如下所示 -

Sql cmd Command

可以在 TeamCity 中的資料庫構建步驟中替換此相同的命令。執行sqlcmd 命令時,表將自動在 AWS 中的 SQL Server 資料庫中建立。

Database Build Step
廣告