做研发运营一体化(或者说运维)的人员,对Jenkins一定不陌生。
这个工具在CI/CD链条中充当了大内总管的角色
很多时候,我们喜欢用抽象的概念描述一个东西。本来简简单单的一个工具或者一个软件甚至一个系统,往往被冠以各种不知所云的修饰,导致最终每个字都认识了,但是看完不知道说了些啥。比如,说什么高可用、高可靠、高安全、高并发、高吞吐、高性能、高扩展,说什么弹性、编排、赋能、治理、熔断等等。也许本意是想避免口语化的描述,把功能说的更加概括,更加严谨,更加通用,也可能仅仅是想把稀松平常的东西说的高大上。这个现象不单单在计算机领域存在,其他领域就更加普遍了。而且还有一个怪现象就是,不了解的人,一开始摸虽不着头脑,学的吃力,但等到掌握了,给别人描述时,却不按自己理解的话表达,而是继续照搬抽象概念,这可就奇怪了。也因此,催生了一个词,叫“说人话”。
产生这种现象的原因,我认为分两种情况:一种是类似法律、专利等行业,需要的是就是严谨、通用。我一个概念可能表示了很多实际的东西,没法用一个具体的东西来代表。一种是要求不太那么严格的行业,那包装的味道就会大一些。但无论哪种情况,对于初学者,就比较麻烦。你总结提炼的时候,脑海里是有具象的东西辅助的,我学习的时候,是需要填充这个具体的东西的,否则读来就会感觉空、感觉虚,感觉飘,感觉迷,感觉茫。但是矛盾啊,这才要学呢。所以这其中一个比较好的过渡方法就是,给初学者一个具体的东西,能够带入概念中,替换抽象的表达,现有一个实际的可感知的东西,便于入门掌握。
因此,这里首先大白话告诉你Jenkins是什么东西。这个东西有点类似于菜单,要炒一盘菜,先准备什么,后做什么,按菜单一条一条来。在计算机运维中,Jenkins提供了一个流水线,你可以告诉它,当我们的代码提交后,它从哪里把代码下载下来或者更新,也告诉它,怎么将代码进行编译,还告诉它如何进行模块测试,如何进行集成,如何进行打包,如何将安装包安装到测试或者目标系统,如何进行系统测试,如何…。说白了,这些之前大部分手动进行的操作,现在可以通过工具自动进行了。提高了效率不说,也避免了人工操作可能遗忘某些环节带来的隐患,最终是节省了成本。抽象起来,就是生产工具的改进促进了生产力的提升。
从上面的描述,你可以看出,这些事情其实完全可以脚本自动化进行,即便没有这个工具。我觉得也是。况且工具里也是依赖脚本来执行许多具体操作的。不过,既然其流行了,就有存在的道理。好用算不算一个?我们不能因为汇编能搞定问题就否定了高级语言存在的意义。
博主不做运维,但是本着学习的态度,也是了解了一下这个工具。下面做个简单记录,万一后面要用呢,也说不定。
1 先上官网下载war包。
2 准备java运行环境,当前下载版本要求11 和 17
3 继续,因为速度原因,从清华或者华为镜像下载jdk,解压,设置环境变量
4 使用java启动Jenkins,就是用java执行上面下载的war包
5 运行成功后,就可以通过web登录了。(首次登陆并不需要用户名和密码)
6 之后就是一大堆插件的安装。但是由于国内的原因,很多都是下载不了或者速度太慢
7 按网上资料,修改updates目录(root目录下的.jenkins下)下的default.json配置文件,主要是替换updates更新源,另外将google也替换了,国内无法连接
8 更新插件
9 这里直接使用web登录Jenkins创建item。主要是执行一下shell,做一个简单验证。
10 其他配置及高级的拉取代码、编译、打包、发布、测试等,后续再研究
暂时就整理这么多。