Jenkins.Net和Docker?

Jenkins.Net和Docker?,.net,jenkins,msbuild,docker,.net,Jenkins,Msbuild,Docker,我绝对是(持续集成)方面的新手,而且 我想使用jenkins来构建我的.Net项目构建系统,连接到存储库,使用 我看到Docker有一个用于的映像,但我不知道如何在Docker映像中使用Jenkins来构建我的.Net项目。因此,.Net项目将执行msbuild脚本,我发现它需要某种.Net framework安装。是否可以在漫游映像上运行msbuild脚本 那么,在这种行为中间,流浪者呢? 我希望已经足够清楚了。问题中有几点可能需要澄清,但我会尝试回答 CI过程是当代码库提交到版本控制系统时,

我绝对是(持续集成)方面的新手,而且

我想使用jenkins来构建我的.Net项目构建系统,连接到存储库,使用

我看到Docker有一个用于的映像,但我不知道如何在Docker映像中使用Jenkins来构建我的.Net项目。因此,.Net项目将执行msbuild脚本,我发现它需要某种.Net framework安装。是否可以在漫游映像上运行msbuild脚本

那么,在这种行为中间,流浪者呢?
我希望已经足够清楚了。

问题中有几点可能需要澄清,但我会尝试回答

CI过程是当代码库提交到版本控制系统时,您不断验证代码库的过程。这可以简单到编译代码并验证它是否成功构建。此外,您还可以运行一套单元测试,将代码部署到环境中,运行集成测试,甚至运行用户验收测试。最好从简单开始并添加层,而不是尝试一次完成所有工作,特别是如果您是CI新手的话

CI过程提供快速反馈(我刚才更改的内容是否破坏了某些内容),这增加了您对代码库稳定且值得发布的信心。您进行的自动化测试越多,您就越有信心您的更改是合理的,并且没有意外的副作用。CI构建应该尽可能快。这个想法是为了获得快速反馈,所以如果你的构建需要90秒,那就太棒了。开发人员不需要等待很长时间就可以发现他们是否破坏了某些东西。如果需要90分钟,那么开发人员就没有及时得到反馈,可能已经转移到另一个任务()。这意味着他们可能正在对损坏的代码库进行更改。有些人使用咖啡测试。i、 e.如果构建所花费的时间超过了开发人员去泡杯咖啡然后回到办公桌上所花费的时间,那么这就太长了

您可以使用Jenkins来实现CI,这是一个不错的选择,因为它有许多插件可用于帮助您向CI流程添加层。它周围还有一个很大的社区,因此定期添加新的工具和技术,如果你有问题,会有很多知识渊博的人提供帮助

要运行像Jenkins这样的CI服务器,您需要在某处安装它。通常,这在专用服务器上。如果要生成.net代码,这将是一个windows服务器。(虽然.net core现在是OSS并在Linux上运行,但现有的.net应用程序不太可能不费吹灰之力就在Linux上编译,这可能会随着.net core的发展和功能的完善而改变)

安装Jenkins并将其设置为构建.net应用程序的指南

您提到的Docker容器是一种在基于Linux的环境中轻松部署Jenkins服务器的方法。正如Zeiss提到的,windows上的容器支持还没有准备好

话虽如此,如果您有可用的Linux基础设施,那么您可以使用docker来设置服务器,并使用基于windows的代理或从机来执行实际构建。使用从属服务器很好,因为您可以同时执行多个构建。如果您有多个解决方案和/或一个大型开发团队,那么即使您将windows用于Jenkins服务器,您也可能希望使用它们

Vagrant允许您基于模板创建虚拟机。这意味着机器是一致的

它可以在许多地方使用。例如,您可以使用它为构建过程创建从机,或者启动环境以运行集成/用户验收测试。请记住,尽管CI是关于快速反馈,所以如果你考虑使用一次性机器为奴隶或环境,那么你需要考虑花费时间游民创造一个新的机器。我发现一个很好的用法是在提交更改之前创建一个模板,用于构建在devs工作站上运行的VM,以便进行本地测试。您还可以使用它为运行时间更长的构建(夜间)创建环境,在这里您可以运行更全面的测试集,或者为您的应用程序构建完整的代码库,而不仅仅是由提交更改的组件


最后,我想说的是,尽管您可以使用Jenkins或任何其他CI服务器来处理代码在环境中的部署。我更喜欢使用一个发布管理工具,比如你可以从詹金斯中触发它,它将处理你的许多部署需求(将代码推到远程机器,配置应用程序池/ Windows服务等)。这完全是可选的,但要考虑的事情。p> 微软已经完成了将Docker本机安装到Windows上的工作,但目前它只在Virtualbox(或其他Linux虚拟机)中运行。只要您对将堆栈迁移到linux上不感兴趣,Docker就不是您真正的选择。