流水线即代码,Jenkins 工程师的基本功
用 Jenkins 基于 Groovy 的流水线语法编写的 Jenkinsfile,与应用代码存放在同一代码库中,而不是仅通过网页界面配置。
企业往往在已经运行 Jenkins,通常已经运行了多年,需要有人妥善维护它,而不是在出问题时才修补,这个阶段决定在迪拜聘请 Jenkins 工程师。Jenkins 在自己的文档中将自身描述为一款独立自包含的开源自动化服务器,用来自动完成软件的构建、测试和交付或部署,与许多更新的工具不同,它完全运行在您掌控的基础设施上,可以作为原生软件包、容器,或在任何装有 Java 运行环境的机器上独立安装。
这种自托管特性,既是 Jenkins 最大的优势,也是最大的维护负担来源。一台 Jenkins 服务器会在多年里不断积累插件、凭证和配置,如果没有人主动维护,这种积累就会成为发布变慢或服务器变得脆弱的原因。一位迪拜的 Jenkins 工程师,正是靠把这种积累控制在可管理范围内,而不是任其无限增长,来体现自己的价值。
Jenkins 工程师负责什么
自托管服务器所需要的具体维护工作。
用 Jenkins 基于 Groovy 的流水线语法编写的 Jenkinsfile,与应用代码存放在同一代码库中,而不是仅通过网页界面配置。
把插件清单控制在真正需要的范围内,按计划更新,而不是任由没人记得为什么安装的插件不断堆积。
安全地推进 Jenkins 核心本身及其插件的版本升级,并配有经过测试的回滚方案,以防升级出问题。
谁能触发哪些流水线,构建凭证存放在哪里,都经过审查,而不是沿用服务器最初搭建时随手设置的方式。
配备数量和类型都恰当的代理,让发布繁忙日的构建只需排队几秒钟,而不是几分钟。
对于刻意迁出 Jenkins、或迁移到更新版本的团队,制定一份保留流水线历史、并且不会在迁移过程中中断发布的方案。
重要技能
让服务器保持健康、而不只是能运行的那些习惯。
无论服务器已经存在,还是仍在规划阶段,都可以把下表作为聘请 Jenkins 工程师时的起点。
| 技能或工具 | 优秀表现是什么样的 | 为什么重要 |
|---|---|---|
| Jenkinsfile 熟练度 | 能熟练编写和阅读声明式与脚本式两种流水线语法 | 只通过网页界面配置的流水线无法被审查或回滚 |
| 插件纪律 | 能解释每个已安装插件存在的理由,并移除不再需要的插件 | 插件堆积是 Jenkins 服务器变慢、变脆弱最常见的原因之一 |
| 升级实践 | 先在非生产实例上测试升级,再应用到线上服务器 | 未经测试的升级可能一次性破坏整个团队的流水线 |
| 凭证处理 | 使用 Jenkins 内置的凭证存储或外部密钥管理器,绝不在任务配置里使用明文 | Jenkins 服务器常成为攻击目标,正是因为它们经常保存着部署凭证 |
| 代理与容量规划 | 有意识地为构建代理规划规模,而不是把一切都堆在一台过载的控制节点上 | 让控制节点同时承担代理工作,是一种常见却可以避免的瓶颈 |
Jenkins 自己的文档明确指出它是自包含的,这正是迪拜的 Jenkins 工程师需要具备真正运维纪律的原因:不像一些较新的托管工具那样,背后没有供应商在悄悄为您打补丁。
合作方式
处于这个阶段的大多数企业想要的是两者之一:以专属聘用的方式,安排某人长期负责这台服务器;或者以带有明确终点的项目形式,解决某个具体的烂摊子,例如接手一台插件堆积如山的架构,或一次停滞不前的新版本迁移。如果服务器本身没有出故障,但您不确定它是否可信,通过咨询服务进行外部健康、安全和插件审查,通常是更好的起点。如果目标是长期招进一位团队成员,而不是外部帮手,招聘支持负责寻访和技术评估,最终录用由您决定。
评估候选人
专门揭示服务器维护经验的检查方式。
无论您通过哪种方式聘请 Jenkins 工程师,无论是专属岗位、项目,还是招聘支持,都请走完以下检查。
大致有多少任务、多少插件,典型的一周维护工作是什么样的,而不只是曾经用过 Jenkins。
一套具体的方法,核实每个插件的作用及是否仍在使用,说明他们确实有过接手既有架构的真实经验。
任何长期运行 Jenkins 的人,都会有一个具体的升级出问题的故事,以及事后在流程上做了哪些改动。
留意清晰的阶段划分、合理的错误处理,以及从正规存储中读取的凭证,而不是硬编码。
一个涵盖流水线历史、插件兼容性和回滚节点的具体回答,说明他们确实做过这件事。
认证
目前没有可以确认的、正在运营的官方项目。
过去曾有第三方为 Jenkins 提供认证项目,但截至撰写本文时,我们无法从一手来源确认存在正在运营的官方考试,因此这里不列出具体名称。如果情况有变,在迪拜聘请 Jenkins 工程师之前,请索取供应商自己最新的认证页面,并确认该证书仍然有效。
对这个角色来说,一台您可以和对方一起审查的真实服务器,包括它的流水线、插件清单和升级历史,能说明的问题远多于一张证书。在迪拜为专属岗位或项目聘请 Jenkins 工程师之前,请要求他们带您过一遍真实的 Jenkinsfile。
阿联酋考量
主要取决于服务器本身能够访问到什么。
由于 Jenkins 是自托管的,负责保护服务器本身安全的是企业自己,而不是某家供应商。当构建或测试阶段涉及真实的客户或员工数据时,阿联酋政府官方门户上列明的 2021 年第 45 号联邦法令,适用于这些数据在服务器上的保护方式。
当一条 Jenkins 流水线要部署一款阿拉伯语和英语双语应用时,其测试阶段也应该实际运行阿拉伯语版本,检查从右到左的布局是否正确呈现,而不是因为英语版通过了测试,就假设两个语言版本表现一致。
大多数在迪拜聘请 Jenkins 工程师的企业已经有一台服务器在运行,因此只有从空白机器搭建过 Jenkins 经验的候选人属于较少见的情况。这个角色属于 迪拜招聘开发人员 中的 DevOps 分类。如果流水线本身比运行它的具体服务器更重要,我们的 CI/CD 工程师 页面从更广泛的工具视角覆盖这方面内容,我们的 GitLab DevOps 工程师 页面则描述了另一种单一平台的选择。DevOps 工程师 会把 Jenkins 与更广泛的基础设施和运维工作一并接手,而我们的 Kubernetes 工程师 页面则是 Jenkins 将容器部署到集群之后的下一站。
直接解答
这取决于您的架构。Jenkins 仍然是一款能力扎实的开源自动化服务器,对需要自托管、深度插件定制,或已经运行着与之相适配基础设施的团队来说,确实是合适的选择。一个没有既有投入的新项目,通常会觉得托管方案更容易上手,我们的 CI/CD 工程师页面对这一比较有更通用的说明。
不一定。一套维护良好、采用流水线即代码并保持插件更新的 Jenkins 架构,可以稳定运行多年。当服务器变得脆弱、插件已经过时,或者已经没有人真正理解当前配置时,才值得考虑迁移,而不仅仅是因为工具本身的年龄。
通常比大多数接手的架构实际拥有的要少。插件堆积,往往是多年来为解决某个具体问题而陆续安装、却从未清理,是 Jenkins 服务器变慢或变得脆弱最常见的原因之一。一位 Jenkins 工程师应该能为服务器上每一个仍在安装的插件给出理由。
可以,这如今是标准做法。用 Jenkins 自身的流水线语法编写、并与应用代码存放在同一代码库中的 Jenkinsfile,意味着流水线能像它所构建的代码一样被审查和版本管理。
目前没有已确认在运行的官方 Jenkins 认证,因此我们不依赖某一项认证来评判候选人。一台您可以审查的、拥有干净流水线和合理插件清单的真实运行中的 Jenkins 服务器,能说明的问题多得多。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。