持续集成-数据库
持续数据库集成是每当将更改应用于项目的版本控制存储库时重建数据库和测试数据的过程。
在数据库集成中,通常与数据库集成相关的所有工件 -
- 应驻留在版本控制系统中。
- 可以进行严格性测试并检查政策合规性。
- 可以使用您的构建脚本生成。
持续数据库集成可以涉及的活动可以是以下任何一项 -
删除数据库- 删除数据库并删除关联的数据,以便您可以创建同名的新数据库
创建新数据库- 使用数据定义语言(DDL)创建新数据库。
插入初始数据- 插入您的系统在交付时预计包含的任何初始数据(例如查找表)。
迁移数据库和数据- 定期迁移数据库模式和数据(如果您正在基于现有数据库创建系统)。
修改列属性- 根据需求和重构修改表列属性和约束。
修改测试数据- 根据多个环境的需要更改测试数据。
因此,在我们的连续数据库示例中,我们将执行以下步骤 -
我们将创建一个 MS SQL Server 数据库和相应的表。
我们将从 SQL Server Management Studio 创建一个脚本。该数据库脚本将用于在数据库中设置我们的表。
我们将在 ASP.Net 项目中编写代码来访问该数据库。
我们将在 TeamCity 的项目中创建一个步骤来运行此脚本。
我们将把脚本签入 Git。
在前面部分创建的 AWS 数据库中执行此操作的步骤。
步骤 1 - 创建 MS SQL Server 数据库和相应的表。让我们打开 SQL Server Management Studio 并创建一个简单的数据库和表。右键单击数据库,然后单击新建数据库。
步骤 2 - 将其命名为Demodb并单击“确定”
步骤 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文件中,添加以下代码行。这些代码行将连接到您的数据库,获取服务器版本并将版本名称存储在 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 - 转到构建步骤并单击添加构建步骤。
选择以下选项(请注意,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 Server 完成了此操作,我们可以对前面部分之一中创建的AWS MS SQL Server 重复相同的步骤。要连接到 Microsoft SQL Server,您需要通过以下约定进行连接。
步骤 16 - 首先查看在 AWS 中分配给您的数据库实例的名称是什么。登录AWS后,进入数据库部分下的RDS部分。
步骤 17 - 在出现的下一个屏幕中单击数据库实例。
步骤 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 数据库中自动创建该表。