持续集成 - 数据库

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

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

  • 应驻留在版本控制系统中.

  • 可以测试严格要求并检查政策合规性.

  • 可以使用您的构建脚本生成.

可以进行的活动参与连续数据库集成可以是以下任何一个和减号;

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

创建新数据库 : 使用数据定义语言(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 : 现在右键单击表格并选择菜单选项脚本表格为 → 删除并创建到 → 文件.

菜单选项

步骤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 文件中,添加以下代码行.这些代码行将连接到您的数据库,获取Server版本并将版本名称存储在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 \sqlclcmd.exe

  • 命令参数应为 -S WIN-50GP30FGO75 -i Sample.sql 的.其中-S给出了SQL Server实例的名称.

步骤13 : 单击保存.

Build Order

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

步骤14 : 您可以通过选择重新排序构建步骤来更改构建顺序.

  • 数据库设置应该是第一个 - 所以这个将用于从fresh重新创建数据库.

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

  • 最后你的测试设置.

测试设置

步骤15 : 现在运行 git add git commit 命令,以便将 Sample.sql 文件签入Git.这将自动触发构建.这个版本应该通过.

Sample SQL

你现在有一个完整的构建周期,以及在您的周期中持续的数据库集成方面.在下一节中,让我们进一步讨论持续部署.

现在您已经使用本地SQL Server完成了此操作,我们可以为 AWS重复相同的步骤MS SQL 服务器,它是在前面的一个部分中创建的.要连接到Microsoft SQL Server,您需要通过以下约定进行连接.

步骤16 : 首先看看在AWS中为数据库实例分配的名称是什么.当您登录AWS时,请转到数据库部分下的RDS部分.

RDS部分下数据库部分

第17步 : 在出现的下一个屏幕中单击数据库实例.

下一屏幕中的数据库实例

第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 Command

同样的命令可以在TeamCity的Database build步骤中替换.执行 sqlcmd命令时,将在AWS中的SQL Server数据库中自动创建该表.

数据库构建步骤