构建持续交付流水线

Building a continuous delivery pipeline

我有一个很具体的问题,这需要大量与服务器相关的知识和大量 build/test/deploy 工具。

我为 .NET 构建了一个持续交付管道,但我这样做的方式最终似乎有点昂贵。我们还没有建立一个团队,该团队将通过几个项目逐渐成长 - ASP .NET MVC。

默认情况下,我必须使用 Visual Studio、Jira 和 BitBucket Cloud。所以我添加了 NUnit 和 Resharper 用于测试和代码质量指标。我还添加了 TeamCity 作为 CI 工具。最后我选择了 Octopus Deploy 作为自动化部署工具。

正如您可能猜到的那样,这非常昂贵。我们已经支付了 Visual Studio、Jira 和 Bitbucket。除此之外,Resharper 和 TeamCity 一样是付费工具,尽管它一开始是免费的,但在流程增长(超过 3 个构建代理)之后变得非常(荒谬)昂贵。 Octopus Deploy 也很昂贵。

所以,现在我想更换一些我用过的工具。然而,很难选择新的,因为我阅读的所有资源都在研究不同的方面。我想要一个管道,在其中检测哪个分支被提交并基于此编译解决方案(+ nuget 包),运行单元测试,如果一切顺利,自动将新提交的版本部署到指定环境.优先考虑的是价格以及使用 .NET 应用程序实现它的难易程度。我还没有找到一个解决方案,它能够与其余部分一起工作并适合图片。

我查看了 Jenkins 和 MSDeploy,但需要有关上述特定事项的建议。也应该是一个可行的解决方案,因为它必须设置一次并且不再处理很多。

Visual studio、詹金斯、nexus、jira、gitblit。

Jenkins、nexus 和 gitblit 是免费的。 Jenkins 将轮询 gitblit 以获取更改,运行构建,使用 nuget 插件生成包并将其上传到 nexus,供 visual studio.

使用。

Jenkins 也可以用于部署,它可能比 octopus 需要更多的工作,但所有的 octopus 实际上都是一堆不错的 powershell 脚本,你只需要在你的 jenkins 构建工作中自己编写所有这些。

例如将 java 应用程序部署到 linux 服务器的 jenkins 部署作业,

  1. 构建 jar
  2. scp jar 结束
  3. ssh java -jar runtest.jar
  4. 将测试结果复制回jenkins,或者直接消费

如果您的首要任务真的是使用 .NET 实现起来有多容易,我宁愿整天使用 TeamCity 而不是 Jenkins。我曾与两者合作过,TeamCity 更可靠。 Jenkins 给我带来了很多问题,浪费了很多时间。

在使用 Octopus 或其他工具之前,请考虑手动部署一段时间。使用 .NET 通常您可以在 space 一两分钟内发布任何应用程序。你打算每天部署多少次?如果您需要立即使用这样的工具,那应该是一件非常密集的事情。

基本上我会说保留配置并删除 Octopus。您会注意到从 TeamCity 退回到 Jenkins(代表 .NET)的一大步。