具有持续集成服务器的开发过程



作为一名开发人员,我对在正常开发过程中使用连续集成非常陌生。然而,我的任务是将ci引入我们的软件团队,因此我做了一些尝试来实现这一点。

目前,我们有以下产品:0.BitBucket作为我们的源回购1.球队所在城市2.ProGet服务器3.八达通部署4.开发测试vm5.UAT测试vm6.生产vm

一般来说,这个过程是

  1. 列出项目
  2. 查看BitBucket的解决方案
  3. 进行更改
  4. 提交到Bitbucket
  5. 团队城市建筑
  6. Team City将工件作为nuget包推送到ProGet
  7. TeamCity在OctopusDeploy中创建发布,并触发对DevelopmentTestvm的自动部署
  8. 手动八达通推送至UAT
  9. 手动八达通推送生产

除了我们开发人员之外,顶级的一切对每个人来说都很好。

我们的问题不在于概念,而在于与过程共存。原因是我们有两个解决方案,其中第二个引用了来自ProGet服务器的第一个解决方案的nuget包。这意味着,每次从属解决方案需要在第一个解决方案中进行修改时,我们都必须等待循环发生,然后在第二个解决方案更新nuget包以完成所需的更改。

当这个周期需要在达到所需结果之前多次发生时,这真的会令人沮丧。

我希望在开发者的pc上开发这两种解决方案,而无需等待ci构建并发布更改后的包。我认为这意味着第一个解决方案的dll将在本地引用,但我如何更改这一点,使最终引用来自ProGet服务器,并建立在CI框上?

有人能告诉我怎么做吗?

此工作流程可能非常具有挑战性;我们看到很多用户迁移到一种更加"基础设施即代码"的方法。

请考虑本教程"使用Otter部署ASP.NET和Windows服务应用程序"--其思想是,通过MSBuild(在工作站上的Release模式下或在TeamCity中)构建解决方案会创建一个包文件(UPack或NuGet无关紧要)。

然后,作为开发人员,您可以添加一个步骤,使用Otter Romp在本地配置/部署该包,并使用常规Otter确保该包/配置存在于其他环境中。这样,从本地到开发,从测试到生产,这是一种一致的方法。

不管怎么说,这描述了一种非常不同的方法,所以它可能不是你问题的好答案,但你问了一个流程变化,所以这是我经常看到的。

另请参阅:KB#1114-比较:章鱼部署与水獭

__

免责声明,我的日常工作在Inedo:)

最新更新