当前位置:首页 > 资讯 > 正文

GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?

在解锁极狐GitLab和Jenkins集成的N种方式中的示例可以看出,极狐GitLab大部分时间仅仅被当作源代码托管服务,而代码构建、测试、部署等都在Jenkins上面完成,也就是说“Most In Jenkins”。


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第1张

Jenkins 的构建结果如下


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第2张

整个构建的Groovy Pipeline代码大体分为三部分,分别为代码拉取、镜像构建、应用部署。下面就从这三方面入手来用极狐GitLab CI/CD 逐一实现。

1、代码拉取

对于Jenkins来讲,拉取变更代码的语法一般是:


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第3张

需要配置拉取代码的 ssh key 以及仓库地址。而这一点在极狐GitLab 是极其简单的,不需要做任何改变,默认会把代码拉取存放到极狐GitLab Runner 构建器内,默认路径是/builds/username/project-name。

2、镜像构建

对于 Jenkins 来讲,镜像构建的代码如下:


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第4张

需要额外加一个withCredentials的语法,来把镜像仓库的用户名和密码传递过来。这需要借助Jenkins的Credentials插件,并且需要提前创建好对应的credentials。

而对于极狐GitLab来讲,能更简单一点,直接用login、build、push 三部曲就可以了。


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第5张

3、应用部署

选择 Kubernetes作为应用部署的基座。对于Jenkins而言,需要在Jenkins上安装一个kubernetes的插件,然后做一些配置。


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第6张

部署的 Pipeline Groovy 语句如下:


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第7张

当然,极狐GitLab同样需要和Kubernetes做一些集成,当中会涉及到一些极狐GitLab CI/CD 中与 Kubernetes 相关的预定义变量的使用,由于篇幅过大,这里不多做赘述。将Kubernetes集群相关的KUBE_URL、KUBE_CA_PEM等信息写入极狐GitLab CI/CD 变量中,使用下面几行代码,即可完成应用的部署。


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第8张

所以对于极狐GitLab 来讲,仅仅用下面二十几行代码就能够完成和上述Jenkins Job 一样的功能。


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第9张

构建结果如下:


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第10张

最后可以在 Kubernetes 上面查看pod的状态:


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第11张

至此,最终实现了“All In JiHu GitLab”。


GitLab中文版|如何使用极狐GitLab CI/CD实现Jenkins的迁移?  第12张

迁移总结

Jenkins 借助于丰富的插件来实现功能多样的 CI/CD,但是插件的安装、维护是一个不小的工作量,而且 Jenkins 本身也需要安装和维护。一般公司都是有专门的人员或者团队来进行整体的维护工作。

另外,现在流行的 Pipeline 的开发需要用到 Groovy 语法,在开发有新 Pipeline 上线的时候,一般是和 Jenkins 维护团队进行沟通协作,来完成新功能的 Pipeline 开发,无形之中增加了沟通成本,当团队增加的时候,还涉及到排期的问题。

而极狐GitLab 借助极狐GitLab Runner来实现极狐GitLab CI/CD,Runner是一个用go语言开发且开源的组件。其安装方式和使用方式都是非常灵活的,支持多操作系统(后续为大家陆续揭秘),再配合丰富的极狐GitLab CI/CD变量魔法,可以能很方便的构建起完整的 CI/CD 系统。开发人员可以通过查看相应的文档就能比较快的上手Pipeline的构建语法,从而可以自己来书写Pipeline进行新功能的调试、部署、测试等。当然,最重要的一点就是,没有额外的组件(除了Runner,如果不打算自己host Runner,那就连这点工作量也没了)需要安装,能够极大的减少工作量。

这也就是极狐GitLab 开箱即用一体化DevOps平台的好处之一,把繁杂、复杂的事情留给平台,开发人员可以直接使用平台的能力来完成业务的开发,这样能够极大的提升研发效能。

ar