Jenkins .Net和Docker?

我绝对是CI (持续集成), Docker和Vagrant的新手。

我想要使​​用jenkins来构build我的.Net项目构build系统,使用webhook连接到BitBucket存储库。

我已经看到,Docker有一个Jenkins的图像,但我不知道如何在Docker镜像中使用Jenkins来构build我的.Net项目。 所以,.Net项目将执行msbuild脚本,我想出它需要某种.NEt框架安装。 是否有可能在stream浪的图像上运行msbuild脚本?

stream浪汉在这种行为中呢? 我希望已经清楚了。

在这个问题中有几件事情可能需要澄清,但我会尝试一个答案

当一个CI过程被委托给一个版本控制系统的时候,你不断的validation你的代码库。 这可以像编译代码和validation它成功构build一样简单。 另外,您可能需要运行一套unit testing,将代码部署到一个环境中,然后运行集成testing,甚至运行用户验收testing。 最好从简单开始,添加图层,而不是试图一气呵成,特别是如果你是新来的CI。

一个CI过程提供了快速的反馈(我刚刚改变的东西是否会破坏某些东西),这增加了您的代码库稳定性和可靠性的信心。 你做的自动化testing越多,你就越有信心,你的改变是健全的,没有意想不到的副作用。 CI构build应尽可能快。 这个想法是获得快速反馈,所以如果你的构build需要90秒,那真棒。 开发人员不必等待很长时间才能知道是否破坏了某些东西。 如果需要90分钟的时间,开发人员得不到及时的反馈,并可能转移到另一个任务( 或等待构build完成 )。 这意味着他们可以对破坏的代码库进行更改。 有些人使用咖啡testing。 即如果构build需要的时间比开发人员花费一杯咖啡回到办公桌的时间要长,则需要花费很长的时间。

您可以使用Jenkins来实现CI,这是一个不错的select,因为它有很多插件可以帮助您将图层添加到CI过程。 它周围还有一个很大的社区,所以定期添加新的工具和技术,如果有问题,还有很多有知识的人帮助解决。

为了像Jenkins一样运行一个CI服务器,你需要把它安装在某个地方。 通常这是在专用服务器上。 如果你想构build.net代码,这将是一个Windows服务器。 (而.net核心现在是OSS并运行在Linux上,现在的.net应用程序不太可能在Linux上编译,而不需要一点努力,这可能会随着.net核心的发展而变得更加完整)

这里有一个很好的“入门”指南来安装Jenkins并将其设置为构build.net应用程序。

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

话虽如此,如果您有Linux基础设施可用,那么您可以使用docker来设置服务器,并使用基于Windows的代理或从属来执行实际的构build。 使用奴隶是好的,因为你可以同时执行多个构build。 如果你有多个解决scheme和/或一个大的开发团队,那么即使你使用了Jenkins服务器的窗口,你也可能要使用它们。

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

它可以在很多地方使用。 例如,您可以使用它来为您的构build过程创build从属机器,或启动一个环境来运行您的集成/用户验收testing。 请记住,CI是关于快速反馈的,所以如果你想在一个奴隶或环境中使用一次性机器,那么你需要考虑创build一台新机器所花费的时间。 我发现一个很好的用法是创build一个模板,用于在提交更改之前构build在开发人员工作站上运行的虚拟机,以进行本地testing。 你也可以使用它来创build一个更长时间的运行构build环境(夜间),在那里运行更全面的testing集,或者为你的应用程序构build完整的代码库,而不仅仅是提交已经改变的组件。

最后我会说,虽然你可以使用Jenkins或任何其他CI服务器来处理你的代码到一个环境的部署。 我更喜欢使用像Octopus Deploy这样的发布pipe理工具,你可以从Jenkins中触发它,它会处理很多开箱即用的部署需求(推送代码到远程机器,configuration应用程序池/ windows服务等)。这完全是可选的,但需要考虑的事情。