如果您能让我理解这个简单的话题,我将非常高兴。
我知道詹金斯是什么,它做什么。现在让我们进行比较。
我们使用jenkins,以便通过git钩子将代码推送到存储库后,我们运行jenkins作业,该作业将提取该代码,进行构建,运行测试,然后根据需要将其上载到远程计算机实际运行。
现在,我能做的是当发生git hook时,我将运行bash脚本,并且bash脚本将执行所有操作(例如从存储库中提取代码,运行构建,进行测试,然后通过以下方式将其上传到远程计算机) ssh)。
因此,我可以通过bash脚本执行相同的操作。
问题是:我认为优势不大。
那么,您能尽最大努力并用非常简单的方式解释为什么这有很大的优势吗?我知道Jenkins有很多插件,但这不是使比较最佳的方法。
答案 0 :(得分:2)
这说明了为什么我们应该避免使用脚本并寻找工具的原因。而且,詹金斯(Jenkins)和类似的工具提供了解决此类部署问题的标准方法。
在新软件项目上开始开发时,编写连续集成(CI)流程的许多步骤通常是一种流行的选择。随着项目的发展,需要更复杂的基础架构,单元和端到端测试以及强大,可重复的部署过程,简单的脚本不再是最佳解决方案。
要节省大量的生产力,更好的选择是用Jenkins构建服务器和管道配置替换这些脚本。
何时该替换脚本
有一些明显的迹象表明,现在该是用更强大的功能替换脚本化部署方法的时候了。
无法扩展时:对于添加到应用程序中的每个新片段,必须更新脚本。无论您使用的是bash,python还是其他工具,这都可以很快解决。添加的每行代码都将新文件放置在不同的位置,更新权限以及重新启动过程,这会增加复杂性,并增加发生错误的风险。
当它变得不可维护时:不断增加的复杂性,诸如添加条件逻辑以根据系统状态来更改部署之类的东西,不可避免地导致了只有少数几个脚本开发人员可以解释。像这样的自然增长的过程可以迅速满足部署应用程序的迫切需求,这会带来很大的问题。
价格昂贵时:在这种情况下,费用以开发人员的时间和生产率的形式出现。准备和执行发布所涉及的手动过程所需的开销将开始对新功能开发产生重大的负面影响。
来源:https://www.bandwidth.com/blog/replacing-scripted-software-deployments-jenkins-pipeline/
答案 1 :(得分:0)
Jenkins在按标准路线构造项目时可能效果最好(因为最普通的示例是在Linux上使用git repo的Makefile / gcc项目)。
对于这样的项目,可以通过几个步骤来设置Jenkins,以自动检出,构建,测试和记录这些测试。 DIY方法只会重新发明轮子。
反之,如果该项目有很多不寻常的工具,则将cygwin / POSIX东西与Windows工具混合在一起,并依赖于许多旧式脚本将东西粘合在一起,必须自定义Jenkins工作流程。必须维护大量的常规代码来调用bash,perl和cmd脚本的特有混合,其中一些使用Windows,一些使用POSIX命令行语法,剥离ClearCase输出中的回车符,四处移动工具工件,等等。手动脚本也可以做到这一点。尽管Jenkins具有内置的Web界面,但从用户角度看,它在这里仍然具有优势。例如,它提供了用于参数化构建的表格,并提供了带有链接的计划,运行或完成的作业的图形概述。
Jenkins在将工作负载分配到Jenkins has built-in support的多台计算机上时可能还有另一个优势。