我知道各种编程语言(例如Go,NodeJS,Java,Python等)事实上和流行的工具选择。
但是,我不知道在.NET世界中哪种工具链是合理的,甚至是(热门)工具。
我听说人们使用Octapus deploy,这仍然是一个有效的选择吗?
NuGet仍然是事实上的软件包管理器吗?
代码检查,自动QA等如何?
>
在考虑开发,自动测试和交付时,我想了解一下.NET的完整工具链以及目前流行的功能。

#1 楼

伊恩·马格特(Ian Margett)的答案颇为可笑,因为该体系结构在大多数Microsoft / .NET开发组织中都很常见,其高级目标操作模型如下所示:



目标是使用现有的现成软件(即TeamCity,ProGet,SonarQube和Octopus Deploy)创建一个持续部署管道:



GitHub是源代码管理工具,但是可以是BitBucket或Visual Studio Team Services。分支模型和代码审查过程在这个高层次上超出了范围。

TeamCity被选为构建系统,因为它与Octopus Deploy紧密集成,并且对.NET,msbuild具有良好的全面支持和PowerShell。 TeamCity还用作Octopus Deploy中部署的协调器。

ProGet是程序包管理解决方案,它既存储Octopus程序包又代理公共程序包/映像存储库。不使用内置TeamCity NuGet存储区的理由纯粹是出于可伸缩性原因。
SonarQube提供连续的代码质量管理,并且报告作为TeamCity构建输出的一部分发布。

Octopus Deploy用作基础架构和目标平台中的代码的部署工具。

我已经看到这种广泛的方法已在两家公司中实现,并成功地在另外两家公司中实现了。在最近的案例中,我们将TeamCity换成了AppVeyor,尽管设置防火墙规则时有些痛苦,但它仍然奏效。

#2 楼

您在.NET工具链中提到了几个不同的类别。是的,NuGet仍然是默认的包装样式–许多人使用通用包装管理器来管理其NuGet提要。

对于部署而言,Octopus确实是推出工件的一种选择,但它并没有启用您正在谈论的其他一些方面。

ARA工具可能更适合,它不仅可以完成部署自动化,而且ARA工具在DevOps世界中现在更“热”-尤其是在诸如WinOps之类的不断发展的情况下。

关于其他工具,请查看DevOps工具链Wiki页面和WinOps重点工具部分。

*全面披露我在Inedo工作,我们针对这两个选项(考虑了.NET)提出了解决方案。



#3 楼

在我这里的经验是使用Octopus Deploy,teamcity和Proget-在建立良好的管道及其扩展方面取得了巨大的成功。在单元测试和自动功能测试工具中也可以很好地发挥作用。我们主要是在.Net上的Azure中,但也在内部部署到私有云。