Deployment 自动化构建和发布管理VS2012

Deployment 自动化构建和发布管理VS2012,deployment,build-automation,redgate,Deployment,Build Automation,Redgate,为了让我的生活更轻松,目前我们有4名开发人员在Visual Studio 2012中工作,我们正在使用TFS 2012进行源代码控制。我们所从事的项目是一个多租户web应用程序(具有多个数据库的单源目录),它是传统、asp和vb6 com组件的混合体,再加上新的C#代码。我们使用TFS进行源代码控制,并管理用户故事和bug。由于我们网站的工作方式,它不能仅在服务器上本地运行或调试。 源代码管理目前为每个开发人员设置了一个单独的分支,其工作目录映射到开发人员服务器上的共享网络路径,该服务器在IIS

为了让我的生活更轻松,目前我们有4名开发人员在Visual Studio 2012中工作,我们正在使用TFS 2012进行源代码控制。我们所从事的项目是一个多租户web应用程序(具有多个数据库的单源目录),它是传统、asp和vb6 com组件的混合体,再加上新的C#代码。我们使用TFS进行源代码控制,并管理用户故事和bug。由于我们网站的工作方式,它不能仅在服务器上本地运行或调试。 源代码管理目前为每个开发人员设置了一个单独的分支,其工作目录映射到开发人员服务器上的共享网络路径,该服务器在IIS中有指向它的网站。Dev01-Dev05等。开发人员在他们的分支中处理项目,使用他们的开发网站测试它,然后将更改签入到他们自己的分支中,并将这些更改合并到主干中。主干的工作空间映射到主开发网站,以便开发人员可以根据其他客户的开发域测试他们的更改,以根据连接到的特定数据库测试定制和功能差异

很长的解释,但基本上每个开发人员都有一个分支和一个站点,然后将它们与自己的站点合并到主干中

为了部署我们的暂存服务器:

  • 我通过服务器上的bat文件编译主干的网站
  • 运行我构建的windows应用程序,以查询TFS中与关联的变更集 特定工作项处于特定状态,并复制所有文件以供 从发布文件夹到部署文件夹的更改集
  • 在服务器上运行另一个bat文件以使用RedGate的部署管理器 从这些新文件创建包的步骤
  • 转到我们网络上的DM站点来创建和部署该版本(无法使用命令行工具进行此操作,因此我必须手动执行此操作)
  • 运行保存在与每个数据库(10个左右的客户数据库)上的票证号匹配的文件夹中的所有SQL脚本,以支持发布
  • 我曾尝试使用TFS自动构建工具,但从未真正正确构建过网站。玩弄巡航控制也没有什么成功。使用一堆臭鼬工程项目来完成这项工作非常耗时,最多也不可靠

    我的理想方案是:

  • 门控签入,每次开发人员合并到主干时尝试生成/发布,拒绝生成并在生成失败时通知开发人员
  • 每天结束时收集特定状态的TFS项,并将与它们关联的文件部署到临时站点
  • 在staging中的所有客户数据库中为这些TFS项部署SQL脚本
  • 最终*运行自动回归UI测试,如果失败,创建新的工作项或电子邮件给开发人员
  • 将TFS工作项更新为新状态,以便QA/客户知道他们的项目已准备好在我们的暂存环境中进行测试
  • 发送已成功部署哪些项目的报告
  • 我如何才能到达这里,这样我就不会花费数小时准备和部署发布到登台和最终生产?对潜在的解决方案相当开放,我们正在使用的源代码管理很难改变,不能真正切换到subversion或其他东西,因此我们非常坚持使用TFS


    谢谢

    非常详细地描述了您的流程。谢谢分享

    我相信您可以在单个分支上设置TFS,如果您可以在主干上设置TFS,则可以确保成功构建合并。这可能会触发msbuild,前提是您可以获得该工作或自定义生成作业

    如果您可以让它工作,那么您就可以使用该中继代码作为工件发送到部署管理器。这样就避免了必须通过TFS更改集组装用于部署的文件,因为您可以确信主干始终可以构建

    您是否使用部署管理器从源代码管理和应用程序部署数据库

    这可能是进一步自动化流程的一种方法。并允许您对数据库的结构进行源代码控制,在每次签入时使数据库保持最新,以及运行数据库单元测试。它们还为部署管理器生成数据库包,因此您可以部署同时包含应用程序和数据库的版本

    如果您想向我发送您在步骤4中使用的命令,以便使用部署管理器部署版本,我可以提供帮助。我使用的命令是:

    DeploymentManager.exe --create-release --server=http://localhost:81 --project="Project Name" --apiKey=XXXXXXXXXXX--version=1.1
    DeploymentManager.exe --deploy-release --server=http://localhost:81 --project="Project Name" --apiKey=XXXXXXXXXXX--version=1.1 --deployto=CI-Environment-Name
    
    这将使用该项目的最新可用软件包创建版本1.1。您可以选择指定在使用创建发布时要使用的包

    --packageversion=<package name>=<version>
    --packageversion="application=1.5
    
    ——packageversion==
    --packageversion=“应用程序=1.5
    
    返回并开始尝试让TFS生成/发布我的web解决方案。我能够成功完成生成。添加msbuild参数/p:DeployOnBuild=True并将msbuild平台设置为x86似乎可以解决这个问题。 然后,我找到了一个构建过程模板,可以使用redgate工具进行打包和部署。在玩了一会儿之后,我终于找到了创建、打包和部署我的构建到我们的暂存环境的模板


    下一步是修改模板以运行一些自定义脚本,仅收集要部署的正确项,部署所有sql文件,然后在完成后将工作项设置为适当的状态。

    我将使用TFS Build。您说您尝试了,什么不起作用?似乎无法为msbuild获取正确的参数以编译这里是我当前构建的方式:aspnet_编译器-p{sitefiledir}-v/-f-u{publishlocation}-fixednames-nologo-c-errorstack我从发布位置抓取编译后的文件并部署它们。使用tfs时,我没有发现如何在没有sln或csproj文件的情况下实现这一点,为了模拟上面的输出感谢您的回复,我在