构建持续交付流水线
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 部署作业,
- 构建 jar
- scp jar 结束
- ssh java -jar runtest.jar
- 将测试结果复制回jenkins,或者直接消费
如果您的首要任务真的是使用 .NET 实现起来有多容易,我宁愿整天使用 TeamCity 而不是 Jenkins。我曾与两者合作过,TeamCity 更可靠。 Jenkins 给我带来了很多问题,浪费了很多时间。
在使用 Octopus 或其他工具之前,请考虑手动部署一段时间。使用 .NET 通常您可以在 space 一两分钟内发布任何应用程序。你打算每天部署多少次?如果您需要立即使用这样的工具,那应该是一件非常密集的事情。
基本上我会说保留配置并删除 Octopus。您会注意到从 TeamCity 退回到 Jenkins(代表 .NET)的一大步。
我有一个很具体的问题,这需要大量与服务器相关的知识和大量 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 部署作业,
- 构建 jar
- scp jar 结束
- ssh java -jar runtest.jar
- 将测试结果复制回jenkins,或者直接消费
如果您的首要任务真的是使用 .NET 实现起来有多容易,我宁愿整天使用 TeamCity 而不是 Jenkins。我曾与两者合作过,TeamCity 更可靠。 Jenkins 给我带来了很多问题,浪费了很多时间。
在使用 Octopus 或其他工具之前,请考虑手动部署一段时间。使用 .NET 通常您可以在 space 一两分钟内发布任何应用程序。你打算每天部署多少次?如果您需要立即使用这样的工具,那应该是一件非常密集的事情。
基本上我会说保留配置并删除 Octopus。您会注意到从 TeamCity 退回到 Jenkins(代表 .NET)的一大步。