Jenkins 核心功能或者说作用是什么?

2022-08-19 16:32:52 +08:00
 acbot

因为工作需要最近初略的了解了一下 Jenkins 及其功能,不知道是不是了解的不够深入的原因一直觉得使用它有一种画蛇添足的感觉, 比如: 代码都是由 github/gitlab 这些管理。软件打包或者是制作 docker 镜像 IDEA 这些开发软件软件也可以完成,代码审查等功能它本身也是借助第三方。集群部署调度管理 K8S 这些平台本身就能完成,所以...

5016 次点击
所在节点    Java
44 条回复
securityCoding
2022-08-19 16:59:05 +08:00
那以前还没有 gitlab,k8s 怎么办呢
acbot
2022-08-19 17:07:14 +08:00
@securityCoding 意思是在此之前他的价值主要的就是打包发布用是不? 其实没有否定 Jenkins 历史贡献的想法,仅仅是讨论当今条件下 Jenkins 还有哪些不可替代的原因!
idblife
2022-08-19 17:09:41 +08:00
pipeline
你要是生产环境有 2000 个服务,是靠自己 IDEA 打包?
freefcw
2022-08-19 17:09:41 +08:00
@acbot 持续集成,自动编译,打包,部署...jenkins 基本这些功能吧,像代码托管,审查,这个就不再 jenkins 范畴内才是
xaplux
2022-08-19 17:10:06 +08:00
要不先了解一下 什么是 CI/DI?
mooyo
2022-08-19 17:11:52 +08:00
即使你有 k8s ,你在 k8s 上的变更也要依靠人工去更改么?
missdeer
2022-08-19 17:13:02 +08:00
pipeline 了解一下
mensa23
2022-08-19 17:13:56 +08:00
如果你觉得它没用,那说明不是给你用的。
XiLingHost
2022-08-19 17:16:08 +08:00
现在如果是新的项目,很多应该是用 drone 或者 gitlab action runner 这些来替代 Jenkins 了,但是如果之前就在用 jenkins 的老项目要全部迁移到新的流水线上工程量是不低的
kop1989smurf
2022-08-19 17:17:52 +08:00
本质上就是个 CI/CD 的平台(持续集成、持续交付和持续部署)。

举个例子:
你写好的程序,怎么合并到主分支?怎么测试?
靠人?容易疏漏,且容易出错。

怎么部署到测试环境,又是怎么部署到生产环境的呢?
靠人?流程不可控,且容易出错。

CI 负责的就是按照既定的流程来合并并测试程序。
CD 负责的就是从代码仓库拿到对应的版本程序》编译(可选)》集成》按照特定步骤与规则部署的流程。

如此下来,不说最终成果是 100%可用,但一定是 100%可控的。
Mithril
2022-08-19 17:23:08 +08:00
CI 这种东西其实就是个触发器,通过配置的不同条件,比如定时,代码变更等等,触发某些动作,执行命令,或者执行某个插件。

现在 Gitlab ,K8S 等等很多已经带了这部分功能,所以你觉得没啥用了。以前没有 Docker ,你的打包可能要一个复杂的脚本。同时要打多个平台的发布包,并且调用测试,代码检查,如果出问题要报错,还要提供审计日志等功能。

这些基本都是 CI 来做,并且完成多 Step 调度的。

其实之前没有 Docker 的时候,用 Jenkins 也是迫不得已。一大堆的插件还有互相依赖,部署完了能跑就别升级,不然就容易各种爆炸。而且鬼知道你升级了以后之前用的插件是不是还有人维护了。

现在有 Docker 就好多了,Docker 一把梭,Gitlab 或者其它 CI 需要做的功能就少了很多。
kop1989smurf
2022-08-19 17:23:50 +08:00
反之,你说 Jenkins 是必须的么?不是。
以上的这些功能都可以被脚本替代。

但问题是他是一个傻瓜化的配置平台,有生态,有 UI ,有流程可视化。
是给人降低开发、配置成本,以及把以上流程转移给非开发岗位用的。

你是一个测试,甚至你是一个产品,一句代码都不会敲,你依然可以用 jenkins 。
yohole
2022-08-19 17:33:50 +08:00
这就是典型没有需求场景驱动,单纯去学习一个新东西的弊端之一,很容易得出 [我不了解=这个东西没啥用] 的局限思维,这种帖子在 v2 实在太多了

Jenkins 对运维和测试的效率和便利性的提升是巨大的,即使没有 Jenkins ,自己研发或者写一下某些工具\脚本之类的,其实都是带有 Jenkins 现在所包含的思想或者方法率,Jenkins 只是集众多需求场景之大成而已,这个东西网上的资料太多了,建议还是多去了解一下
acbot
2022-08-19 17:34:27 +08:00
@idblife 2000 个服务不需要开发编码吗?我的意思对于 IDEA 这些来说打包都不是自动的吗
siweipancc
2022-08-19 17:38:00 +08:00
可以看出 op 是不会偷懒的人
duojiao
2022-08-19 17:38:57 +08:00
持续集成、敏捷开发这类的需求,一般都是出现在需要效率的有一定规模的公司或团队下的,你应该是没有过较大型项目 /团队的经验,导致想不出来这个干嘛用的。
acbot
2022-08-19 17:39:13 +08:00
@kop1989smurf 意思就是 他的作用之一就是把这些工作程序定式化防止人工操作(比如 缺少步骤)的不确定性!
duojiao
2022-08-19 17:39:28 +08:00
@duojiao 不过既然现在工作需要了解了,那过段时间,有使用场景了,就自然会知道了~
acbot
2022-08-19 17:43:49 +08:00
@XiLingHost “现在如果是新的项目.." 这句话说到点上了!
acbot
2022-08-19 17:46:21 +08:00
@yohole
@duojiao 有可能是这个理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/874023

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX