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实践之入门体验

基于 k8s 的 Jenkins 构建集群实践

jenkins动态slave在k8s上的实践

Jenkins报错Caused: java.io.IOException: Cannot run program "sh" (in directory "D:Jenki(

Docker——Jenkins + Git + Registry构建自动化持续集成环境(CI/CD)

jenkins 加速安装插件