我绝对是CI(持续集成),Docker和Vagrant的新手.
我想使用jenkins来构建我的.Net项目构建系统,使用webhook连接到BitBucket存储库.
我已经看到Docker有一个Jenkins的图像,但我不知道如何在Docker镜像中使用Jenkins来构建我的.Net项目.因此,.Net项目将执行msbuild脚本,我发现它需要某种.NEt框架安装.是否可以在vagrant图像上运行msbuild脚本?
在这种行为中,Vagrant怎么样?我希望已经足够清楚了.
问题中有一些问题可能需要澄清,但我会尝试回答
在CI流程中,您可以在将代码库提交到版本控制系统时不断验证它.这可以像编译代码并验证它是否成功构建一样简单.此外,您可以运行一系列单元测试,将代码部署到环境并运行集成测试,甚至运行用户验收测试.最好开始简单并添加图层,而不是一次性完成所有操作,尤其是如果您是CI的新手.
CI过程提供了快速反馈(我刚刚改变了一些东西)这增加了你的代码库稳定和释放值得信任的信心.您进行的自动化测试越多,您的变化就越有信心并且没有意外的副作用.CI构建应该尽可能快.想法是获得快速反馈,所以如果您的构建需要90秒,那就太棒了.开发人员不必等很长时间才能发现他们是否破坏了某些东西.如果需要90分钟,那么开发人员没有得到及时的反馈,并且可能已经转移到另一个任务(或者坐在那里等待构建完成).这意味着他们可能会对损坏的代码库进行更改.有些人使用咖啡测试.也就是说,如果构建需要的时间比开发人员喝一杯咖啡然后回到办公桌所需的时间要长,那么这需要花费太长时间.
您可以使用Jenkins实现CI,这是一个不错的选择,因为它有许多可用于帮助您向CI过程添加图层的插件.它周围也有一个很大的社区,因此定期添加新工具和技术,如果您有疑问,有很多知识渊博的人可以提供帮助.
要运行像Jenkins这样的CI服务器,您需要在某处安装它.通常,这是在专用服务器上.如果你想构建.net代码,这将是一个Windows服务器.(虽然.net核心现在是OSS并且在Linux上运行,但目前不太可能现有的.net应用程序将在Linux上编译而不需要付出一些努力,这可能会随着.net核心的发展而变得更加完整)
这是一个很好的"入门"指南,用于安装Jenkins并将其设置为构建.net应用程序.
您提到的Docker容器将是一种在基于Linux的环境中轻松部署Jenkins服务器的方法.正如蔡司提到的那样,容器支持尚未准备就绪.
话虽如此,如果您有可用的Linux基础架构,那么您可以使用docker来设置服务器并使用基于Windows的代理或从属服务器来执行实际构建.使用从属设备很好,因为您可以同时执行多个构建.如果您有多个解决方案和/或大型开发团队,那么即使您为Jenkins服务器使用Windows,您也可能希望使用它们.
Vagrant允许您基于模板创建虚拟机.这意味着机器是一致的.
它可以在许多地方使用.例如,您可以使用它为构建过程创建从属机器,或者启动环境以运行集成/用户验收测试.请记住,CI是关于快速反馈的,所以如果您考虑将一次性机器用于奴隶或环境,那么您需要考虑流浪者创建新机器所需的时间.我发现一个很好的用途是创建一个模板,用于构建在devs工作站上运行的VM,以便在提交更改之前进行本地测试.您还可以使用它为更长时间运行的构建(每晚)创建环境,在该环境中运行更全面的测试集或为您的应用程序构建完整的代码库,而不仅仅是提交已更改的组件.
最后,我会说,虽然您可以使用Jenkins或任何其他CI服务器来处理代码到环境的部署.我更喜欢使用像Octopus Deploy这样的发布管理工具,你可以从Jenkins触发它,它可以处理大量开箱即用的部署需求(将代码推送到远程机器,配置应用程序池/窗口服务等).它完全是可选的但是需要考虑的事情.