Jenkins集群在公司内部的实践(一)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins集群在公司内部的实践(一)相关的知识,希望对你有一定的参考价值。
参考技术A jenkins作为一款实用且广泛实用的CI/CD工具,为大多数中小公司拿来即用。可当我们的业务和工程逐渐增多,它在构建和自动化任务方面的压力也越来越大。jenkins主要是用来基于源码的打包,公司用到的语言包括java/php/android/h5等,同时各组能够看到的项目也应该隔离开来。
开发人员需要让它与git源码的提交、合并结合起来,必要地和sonarqube、unit test和allure报告等集成。重点是unit test还会和mysql/mongodb/redis/es等中间件依赖,需要做到各任务之间的隔离。
测试人员在构建并运行后,除了要做回归测试,期间也需要做自动化测试。(测试平台我们选用的是meterspere开源平台)
所以摆在我们面前的问题是:
1、jenkins集群化,满足高可用的要求
2、通过Pipeline方式管理Job,通过pipeline模板做到自动化
3、每次新建项目时,审批通过后,一键自动创建jenkins/gitlab等工程。
4、能够支持开发的单元测试和测试的自动化测试
5、将整个公司各语言的项目构建归集在一起,做到友好的权限控制。
如上图,salve的横向扩展能力,足以支撑公司的所有语言的所有项目的构建。
整个部署完 K8s 的集群以后,我们⾸先需要部署的就是 Jenkins 的 Master 节点。 Master 节点相关的配置是通过 K8s 来创建⼏个重要的对象:
接下来就是要创建 deployment 对象,如果你了解 K8s ⼀定会清楚,deployment 是⼀个⾮常重要的 K8s control 的对象,它直接控制着 Pod 资源的镜像、Pod 的资源使⽤,还有它的服务探针等相关内容,这个都是在 deployment ⾥⾯进⾏创建的。
最后是创建 service 对象,service 对象创建以后,Pod 就可以正式的对集群内部提供服务。 以上,就是在 Master Jenkins 节点在 K8s ⾥⾯创建的过程。
具体的创建步骤,建议参考csdn文章: https://blog.csdn.net/aixiaoyang168/article/details/79767649
管理job灵活,结合Blue Ocean UI让流水线的展示更加流畅。
1、基础层
2、jenkins master
3、jenkins slave
四、总结
本系列文章主要是描述我们在搭建Jenkins集群的过程中遇到的坑,在此过程中,除了查阅jenkins和k8s官方的一些文档外,也得益于不少博客的帮助,让我们快速定位出问题。因此我们也希望经过本系列的文章,能让后来实践者少走点弯路。
五、后续的计划
六、参考资料:
https://github.com/jenkinsci/ssh-steps-plugin
https://www.jianshu.com/p/aaa16f1566d7
https://www.jenkins.io/zh/doc/pipeline/steps/
以上是关于Jenkins集群在公司内部的实践(一)的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins报错Caused: java.io.IOException: Cannot run program "sh" (in directory "D:Jenki(