持续集成 - 数据库

持续数据库集成是指在对项目的版本控制存储库应用更改时重建数据库和测试数据的过程。

在数据库集成中,通常所有与数据库集成相关的工件 −

  • 应驻留在版本控制系统中。
  • 可以进行严格测试并检查政策合规性。
  • 可以使用构建脚本生成。

持续数据库集成中可能涉及的活动可以是以下任何一项 −

删除数据库 − 删除数据库并删除相关数据,以便您可以创建具有相同名称的新数据库

创建新数据库 −使用数据定义语言 (DDL) 创建新数据库。

插入初始数据 − 插入系统交付时预计包含的任何初始数据(例如,查找表)。

迁移数据库和数据 − 定期迁移数据库架构和数据(如果您正在基于现有数据库创建系统)。

修改列属性 − 根据需求和重构修改表列属性和约束。

修改测试数据 −根据多种环境的需要更改测试数据。

因此,在我们的连续数据库示例中,我们将执行以下步骤 −

  • 我们将创建一个 MS SQL Server 数据库和一个对应的表。

  • 我们将从 SQL Server Management Studio 中创建一个脚本。此数据库脚本将用于在数据库中设置我们的表。

  • 我们将在我们的 ASP.Net 项目中编写代码来访问此数据库。

  • 我们将在 TeamCity 的项目中创建一个步骤来运行此脚本。

  • 我们将将脚本签入 Git。

在前面部分中创建的 AWS 数据库中执行此操作的步骤。

步骤 1 − 创建一个 MS SQL Server 数据库和一个对应的表。让我们打开 SQL Server Management Studio 并创建一个简单的数据库和表。右键单击数据库,然后单击新建数据库

新建数据库

步骤 2 − 将其命名为 Demodb 并单击确定

Demo DB

步骤 3 − 在新数据库中,右键单击并创建一个新表。

表 创建新表

步骤 4 −您可以将所需的列添加到表中。

添加所需列

步骤 5 − 保存表并将其命名为 Demotb

步骤 6 − 现在右键单击表并选择菜单选项 Script Table as → Drop and Create to → File

菜单选项

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

现在,如果我们运行代码,您将在浏览器中获得以下输出。

输出

步骤 11 − 现在让我们在 TeamCity 中添加将调用数据库脚本的步骤。转到您的项目仪表板并单击编辑配置设置

单击编辑配置设置

步骤 12 −转到"构建步骤"并单击添加构建步骤

添加构建步骤

选择以下选项(请注意,应在 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 − 单击保存。

构建顺序

现在需要确保的是构建顺序。您必须确保构建顺序如下。

步骤 14 −您可以通过选择重新排序构建步骤的选项来更改构建顺序。

  • 数据库设置应放在首位 - 因此这将用于从头开始重新创建数据库。

  • 接下来是应用程序的构建。

  • 最后是测试设置。

测试设置

步骤 15 − 现在运行 git addgit commit 命令,以便将 Sample.sql 文件签入 Git。这将自动触发构建。并且此构建应该会通过。

Sample SQL

现在,您已拥有一个成熟的构建周期,并且周期中还包含持续数据库集成方面。在下一节中,让我们进一步了解并了解持续部署。

现在您已使用本地 SQL Server 完成此操作,我们可以对在前面部分中创建的 AWS MS SQL Server 重复相同的步骤。要连接到 Microsoft SQL Server,您需要通过以下约定进行连接。

步骤 16 − 首先查看在 AWS 中分配给您的数据库实例的名称。登录 AWS 后,转到数据库部分下的 RDS 部分。

数据库部分下的 RDS 部分

步骤 17 − 在出现的下一个屏幕中单击 DB 实例。

下一个屏幕中的 DB 实例

步骤 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(请注意实例名称和端口号之间使用的逗号)。

连接到服务器

以下屏幕截图显示成功连接到数据库。

成功连接

然后您可以重复所有相同的步骤。 Sqlcmd 命令 如下所示 −

Sql cmd 命令

此命令可在 TeamCity 中的数据库构建步骤中替换。执行 sqlcmd 命令 时,将在 AWS 中的 SQL Server 数据库中自动创建表。

数据库构建步骤