持续集成 - 数据库



持续数据库集成是指在项目版本控制库中应用任何更改时,重新构建数据库和测试数据的过程。

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

  • 应驻留在版本控制系统中。
  • 可以对其严格性进行测试,并检查其是否符合策略。
  • 可以使用构建脚本生成。

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

删除数据库 - 删除数据库并删除关联的数据,以便可以使用相同名称创建新数据库

创建新数据库 - 使用数据定义语言 (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
广告

© . All rights reserved.