SQL Server Database:使用Github和TeamCity的持续集成

目录

介绍

先决条件

2.SQL服务器使用Github和TeamCity的数据库持续集成

a. 成立TeamCity

b.在TeamCity中创建新项目

c. 配置构建步骤

d. 运行构建配置

e.创建发布配置文件

f. 在TeamCity中配置发布配置文件

g. 测试持续集成

h. 错误构建

兴趣点


介绍

在我之前的文章中,我们已经了解了如何为Microsoft SQL Server数据库实现源代码管理系统。

实现源代码管理系统后,数据库项目维护的下一步是拥有一个持续集成系统。当您已经拥有版本控制系统时,您可能正在考虑持续集成的需求是什么。

源代码管理/版本控制系统有助于管理项目源代码的更改集,并将其维护在团队中所有开发人员都可以访问的中心位置。而持续集成系统有助于在每次对源代码进行更改后构建项目。在每次更改后生成项目的过程有助于尽早识别代码错误,并减少确定导致错误的确切更改所需的时间。因此,它提高了发布的质量。

有许多流行的开源和高级持续集成工具,如BuddyJenkinsTeamCityGitLab CI等,但作为本课程的一部分,让我们看看如何使用JetBrains TeamCity设置持续集成系统。

先决条件

为了开始此步骤,您应该为数据库项目准备好源代码管理系统。如果您还没有,请查看我之前写的文章。

如果你已经完成了它,那就太好了。我们可以跳到下一步。

2.SQL服务器使用GithubTeamCity的数据库持续集成

a. 成立TeamCity

为了使用TeamCity持续集成数据库项目,您需要有一个正在运行的TeamCity服务器。理想情况下,您已经为Web/移动应用程序项目设置了一台服务器,并且也可以为数据库项目使用相同的服务器。如果您还没有服务器,则必须设置服务器。

您可以通过从JetBrains网站登录来使用TeamCity的云版本,或者如果您想在自己的服务器上设置TeamCity,则必须从JetBrains 的网站下载并安装TeamCity ServerBuild Agent

TeamCity ServerBuild Agent的下载、安装和设定非常简单。该过程的详细说明目前超出了本教程的范围,但互联网上提供了几个分步教程。实际上,官方网站本身提供了全面的文档。这是链接。您可以使用默认安装设置和默认端口。

按照网站上编写的说明进行操作,您应该最终在浏览器上看到以下屏幕:

您应该看到服务器已启动并正在运行,并且代理已连接。单击创建项目按钮将您的数据库项目添加到TeamCity

b.TeamCity中创建新项目

在下一页上,我们可以看到有手动创建项目的选项,或者我们可以连接现有的远程存储库并从中创建项目。根据我们的目标,我们需要选择从远程仓库创建项目的选项,因为我们的数据库项目在Github上。

将指向github存储库的链接粘贴到存储库URL”文本框中,并提供您的github凭据(如果需要访问存储库)。确保凭据正确,然后单击继续按钮。这将验证与远程存储库的连接,在下一个屏幕上,您可以指定项目名称和构建配置。

单击继续按钮移动到下一个屏幕。

c. 配置构建步骤

TeamCity将扫描存储库,并根据项目类型列出扫描期间自动检测到的构建步骤。由于我们在Visual Studio解决方案中维护项目,并且由于我们仅在解决方案中进行更改,因此请选中Visual Studiosln旁边的复选框,然后单击使用所选按钮。

这将创建生成步骤。我们需要配置目标属性,为此,请单击新创建的构建步骤上的编辑链接。

运行程序类型和解决方案名称在从远程存储库导入时会自动填充。我们需要选择从中生成数据库项目的Visual Studio版本。单击用于选择Visual Studio版本的组合框,然后从下拉列表中选择Visual Studio的版本。就我而言,我选择了Visual Studio 2019,因为我的数据库项目正在Visual Studio 2019中开发。您可能需要根据所使用的Visual Studio版本选择 Visual Studio 2017Visual Studio 2015

选择Visual Studio的版本后,单击保存按钮,对构建步骤的更改将被保存。

我们还可以在此屏幕上指定配置命令行参数,但我们稍后会回到这一点。

单击页面顶部导航栏上的项目选项卡,您应该会看到已为您的数据库创建了一个项目,以及具有您在创建项目时指定的名称的构建配置。

d. 运行构建配置

由于它是一个新创建的项目,因此尚无要显示的生成。因此,继续并单击运行按钮以从存储库运行构建。点击该按钮后,系统会将状态为正在运行的订单项添加到构建中。

生成将需要几秒钟到几分钟的时间,具体取决于项目的大小,如果生成成功,状态将更新为成功,如果代码中存在任何错误,则状态将更新为失败。在这种情况下,由于我们链接的存储库中没有错误,因此构建成功。

e.创建发布配置文件

现在,我们必须为要与TeamCity一起使用的数据库项目创建发布配置文件。此配置文件将包含目标数据库设置、版本、脚本名称和目标连接字符串。这可以从Visual Studio完成,这里是如何做到的。

右键单击数据库项目,然后单击发布在弹出的窗口中,我们可以通过单击编辑按钮并从可用连接列表中进行选择来指定目标数据库连接。

定义连接字符串后,我们需要将配置文件另存为项目中的XML文件。单击将配置文件另存为...按钮,然后选择配置文件的名称。由于当前方案适用于开发服务器,因此我们将其命名为 dev.publish.xml。保存它会将一个新文件添加到数据库项目中,该文件在解决方案资源管理器下可见。

f. TeamCity中配置发布配置文件

接下来,回到TeamCity,我们必须指定需要使用此发布配置文件来发布数据库。打开TeamCity Web仪表板,转到项目>生成,然后单击生成步骤中的编辑。

配置页上,将此命令输入到配置文本框中,然后单击保存按钮。

/pSqlPublishProfilePath=“<publish profile的名称>”

将发布配置文件的名称替换为在上一步中使用的名称。在本例中,该命令如下所示:

/pSqlPublishProfilePath=“dev.publish.xml”

至此,我们的TeamCityGithubVisual Studio连接设置就完成了。

g. 测试持续集成

从持续集成的定义来看,推送到Github存储库中的任何微小更改都应该在我们的TeamCity服务器中触发新的构建。让我们看看当我们进行一个小的更改并将其推送到Github并与主分支合并时会发生什么。

对于此测试,让我们在数据库项目中添加一个新的存储过程,并将其推送到Github存储库的主分支。

提交此更改并将其推送到Github存储库的主分支。

推送完成后,等待几秒钟,然后查看TeamCity服务器的仪表板。构建会自动触发;并显示其状态,指出构建处于挂起状态。

它将自动执行生成过程,并根据生成结果将状态更新为成功/失败。在这种情况下,构建是成功的。

如果您单击成功链接并切换到更改选项卡,它将显示自上次构建以来所做的更改数量。

它显示了将存储库连接到TeamCity后从存储库获取的完整日志。

由此可见,我们的持续集成已成功设置。我们在没有经过Visual Studio的构建过程的情况下构建了项目。您可以尝试这样做几次,自己看看。

h. 错误构建

在上一节中,我们看到项目是在将任何更改推送到远程存储库后成功构建的。但是,如果签入的代码有错误怎么办?在这种情况下会发生什么?让我们在代码中引入错误,看看会发生什么。

让我们在新创建的存储过程中添加一个不正确的语句,并将代码推送到我们的存储库。

提交并将其推送到主分支。

等待几秒钟以允许TeamCity构建项目,它将显示存在编译错误。

单击错误可查看有关错误的完整详细信息、导致错误的更改以及提交来源的详细信息。

这样可以轻松确定生成错误的根本原因所在。我们还可以设置为在TeamCity中发生错误时接收电子邮件通知。这又很容易做到,目前超出了本课程的范围。

兴趣点

至此,我们的数据库项目的持续集成系统设置和测试就完成了。

但是在每个项目中,您都必须将项目的生成复制到其他环境,例如测试环境、暂存/预生产环境,最后是生产环境。尽管您可以通过对每台服务器使用单独的发布配置文件并使用TeamCity中的发布配置将数据库发布到不同的环境中来实现此目的,但这并不是执行此操作的最理想和自动化的方法。这就是持续交付/持续部署的用武之地。

下一篇: 使用TeamCity和Octopus的SQL Server数据库持续部署

https://www.codeproject.com/Articles/5248959/SQL-Server-Database-Continuous-Integration-using-G

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值