开始时,Jenkins几乎是必选的工具之一,但也有其他工具,比如gitlab-ci、比如Atlassian的Bamboo都可以。所以这方面的选择是很多的。但是CD的工具却是不定的,这里列出几种可能
(1)用shell或python脚本实现CD;
(2)直接上ansible,spinnaker或其他开源
(3)用jenkins的插件
(4)用自研产品
如果是如BAT,那当仁不让,自研是最好的,阿里有大量的开发,他们的云效几乎无所不能。但除了这些头部互联网企业,我们普通企业怎么办,用“云效”,那你们就被阿里云绑死了。不用的话,DevOps的初衷就是为了节省人力来加速开发迭代,不可能有大批的开发人员来开发DevOps组件。于是很多人选择了shell脚本,这样很不好,因为shell脚本不容易标准化,所以,只能一时用,而不能长久,标准化必须有自己的DevOps CD组件。又有人看Jenkins中有大量的插件,有些可以实现CD的功能,于是花大量功夫去找插件。不可否认,碰巧的话,你确实能找到好的插件,但更多的失望,Jenkins的插件除了主流以外,其他插件的质量不敢恭维,把自家公司的CD放置在这些插件上,我是不抱有希望,一来插件有bug,二来不灵活。
所以,我的建议是使用ansible作为CD工具,或直接上spinnaker,如果嫌弃spinnaker太重,可以上一些gocd等开源CD工具,非常轻便好用。总之,持续集成和持续交付必须在工具上实现,脱离工具,标准化无从谈起,没有标准化,那效率更无从谈起。