Jenkins中给开发人员访问权限后遇到的挑战及解决方案

42次阅读
没有评论

问题描述

作为一名DevOps工程师,你在一家中型公司工作。你的团队非常忙碌,任务繁重。最近,你们决定找出可以提高生产力的地方。你们的主要责任之一是为开发团队提供所需的各种服务(通常是通过开启工单、发送Slack消息等方式)。为了提高生产力,你们最近决定将开发人员常用的“服务”集合起来,并使用Jenkins进行自动化。此外,你们允许开发人员访问Jenkins的UI来启动各种任务。

一方面,这使得开发人员可以自行操作,另一方面,你从不同的人那里得到了很多负面反馈…

开发人员:
– “为什么这个任务失败了?”
– “开发人员在Slack上给我发消息,说他们在所有的Jenkins任务中迷失了方向,不知道哪个Jenkins任务与他们相关。”我忘记了我创建的机器的标识符”
– “开发人员犯了错误,将代码部署到了错误的环境中。”
– “为什么我的开发环境被终止了?”
– “如果你修改了参数,请通知我”
– 等等…

团队领导:
– “让我们为这些任务添加手动审批”
– “确保每个开发操作都有审计日志”
– “确保我们的开发人员不会启动太多的机器”
– “开发团队负责人向BI咨询了这些Jenkins任务,因为它对开发人员的日常工作变得至关重要。”
– 等等…

Jenkins似乎相当有限,无法提供这些功能,我担心会产生技术债务并给Jenkins带来过多的压力 :)

你有什么建议?你在公司内部是如何管理这个问题的?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

首先,你应该改变的是允许开发人员访问Jenkins UI来启动各种任务的方式。应该改为自动启动流水线,而不是手动启动。

DevOps是一种文化,意味着所有重复性工作都应该自动化。

方案2

请注意以下操作注意版本差异及修改前做好备份。

以下是一些建议来解决你在Jenkins中给开发人员访问权限后遇到的挑战:

问题:为什么这个任务失败了?

解决方案:你应该询问开发人员是否阅读了日志。如果流水线中的问题与他们的代码无关,那么流水线的创建者应该调查并创建一个可靠的CI。

问题:开发人员在Slack上给我发消息,说他们在所有的Jenkins任务中迷失了方向,不知道哪个Jenkins任务与他们相关。”我忘记了我创建的机器的标识符”

解决方案:这表明开发人员看到了不相关的流水线。如果他们创建了微服务,那么应该有一个专门的流水线。如果流水线出现问题,开发人员就知道问题与他们的代码有关。我曾经与开发人员进行过很多讨论。他们大多数时候说,为他们的代码创建另一个代码库感觉多余,但是当我提到了12因素应用程序并演示了为每个应用程序运行流水线的效果时,他们就被说服了。

问题:开发人员犯了错误,将代码部署到了错误的环境中。

解决方案:创建流水线的人决定用户将获得哪些权限。最佳实践是应用最小权限原则。在CI方面,这意味着开发人员只能读取日志。一旦读取了日志,他们应该能够解决问题。有时候,开发人员没有在本地计算机上先运行他们的代码。

问题:如果你修改了参数,请通知我

解决方案:一旦流水线被实施,你应该意识到你不应该引入破坏性的更改。如果不可避免,你应该进行充分的沟通,但是你应该尽一切可能防止开发人员决定不再使用流水线。在让开发人员使用之前,花更多的时间创建一个可靠的流水线是更好的。

问题:确保我们的开发人员不会启动太多的机器

解决方案:这也应该自动化。你可以决定如果实例运行超过半个小时,则自动停止实例。你可以引入这个功能并通知开发人员和团队负责人。

问题:确保每个开发操作都有审计日志

解决方案:防止开发人员登录Jenkins。流水线应该自动运行,开发人员只能读取日志,参考”开发人员犯了错误,将代码部署到了错误的环境中”。

问题:Jenkins似乎相当有限,无法提供这些功能,我担心会产生技术债务并给Jenkins带来过多的压力 :)你有什么建议?你在公司内部是如何管理这个问题的?

解决方案:我们使用Gitlab,为每个微服务创建一个gitlab-ci.yml文件,使用Gitlab模板、Helm和Kubernetes上的Runner。

以上是一些建议,希望对你在Jenkins中给开发人员访问权限后遇到的挑战有所帮助。

参考资料

正文完