如何利用极狐 GitLab CI/CD 完成 Jenkins 的迁移
在解锁极狐GitLab 和 Jenkins 集成的 N 种方式中,演示了如何使用极狐 GitLab 和 Jenkins 来搭建一个完整的 CI/CD Pipeline。其实从第三种方式:利用极狐 GitLab CI 来触发 Jenkins Job 就能够看出,其实极狐 GitLab CI/CD 是完全有能力完成 Jenkins CI/CD 功能的。
本文将阐述如何用极狐 GitLab CI/CD 来实现和 Jenkins 一样的功能。首先,先了解一下极狐 GitLab CI/CD。
极狐 GitLab CI/CD
极狐 GitLab CI/CD 是极狐 GitLab DevOps 能力中非常重要的一部分,能够帮助用户快速构建 CI/CD 能力,整个过程无需安装和配置第三方工具(诸如 Jenkins)。而极狐 GitLab Runner 是能够助力极狐 GitLab CI/CD 实现的重要法宝。后续文章会陆续输出极狐 GitLab Runner 的灵活使用。敬请期待!
使用极狐 GitLab CI/CD 实现 Jenkins 的迁移
在解锁极狐GitLab 和 Jenkins 集成的 N 种方式中的示例可以看出,极狐 GitLab 大部分时间仅仅被当作源代码托管服务,而代码构建、测试、部署等都在 Jenkins 上面完成,也就是说“Most In Jenkins”
Jenkins 的构建结果如下
整个构建的 Groovy Pipeline 代码大部分在这儿(不包含 Kubernetes pods template 的代码)。
整体看,大体分为三部分:代码拉取、镜像构建、应用部署。下面就从这三方面入手来用极狐 GitLab CI/CD 逐一实现。
本例不没有包含代码编译、构建、测试等流程,是因为这是一个简单的 Demo 演示,而且一般情况下上述几个步骤的执行,就是一些 shell 命令,这个和后面的镜像构建的语法是类似的,参考即可。
代码拉取
对于 Jenkins 来讲,拉取变更代码的语法一般是
需要配置拉取代码的 ssh key 以及仓库地址。而这一点在极狐 GitLab 是极其简单的,不需要做任何改变,默认会把代码拉取存放到极狐 GitLab Runner 构建器内,默认路径是/builds/username/project-name。
镜像构建
对于 Jenkins 来讲,镜像构建的代码如下
需要额外加一个 withCredentials 的语法,来把镜像仓库的用户名和密码传递过来。这需要借助 Jenkins 的 Credentials 插件,并且需要提前创建好对应的 credentials。
而对于极狐 GitLab 来讲,能更简单一点,直接用 login、build、push 三部曲就可以了。
CI_REGISTRY_PASSWORD、CI_REGISTRY_USER、CI_REGISTRY、CI_COMMIT_SHA,这些都是极狐 GitLab 预定义的 CI/CD 变量。更多的变量可以查看这儿[1]。
应用部署
选择 Kubernetes 作为应用部署的基座。对于 Jenkins 而言,需要在 Jenkins 上安装一个 kubernetes 的插件,然后做一些配置。
部署的 Pipeline Groovy 语句如下
极狐 GitLab 同样需要和 Kubernetes 做一些集成,这儿涉及到一些极狐 GitLab CI/CD 中与 Kubernetes 相关的预定义变量的使用,由于篇幅过大,不在这儿展开,后面还有文章专门讲述极狐 GitLab 与 Kubernetes 的集成。
将 Kubernetes 集群相关的 KUBE_URL、KUBE_CA_PEM 等信息写入极狐 GitLab CI/CD 变量中,使用下面几行代码,即可完成应用的部署。
所以对于极狐 GitLab 来讲,仅仅用下面二十几行代码就能够完成和上述 Jenkins Job 一样的功能。
构建结果如下
最后可以在 Kubernetes 上面查看 pod 的状态
最终实现了“All In JiHu GitLab”
迁移总结
Jenkins 借助于丰富的插件来实现功能多样的 CI/CD,但是插件的安装、维护是一个不小的工作量,而且 Jenkins 本身也需要安装和维护。一般公司都是有专门的人员或者团队来进行整体的维护工作。
另外,现在流行的 Pipeline 的开发需要用到 Groovy 语法,在开发有新 Pipeline 上线的时候,一般是和 Jenkins 维护团队进行沟通协作,来完成新功能的 Pipeline 开发,无形之中增加了沟通成本,当团队增加的时候,还涉及到排期的问题。
而极狐 GitLab 借助极狐 GitLab Runner 来实现极狐 GitLab CI/CD,Runner 是一个用 go 语言开发且开源的组件[2]。其安装方式和使用方式都是非常灵活的,支持多操作系统(后续为大家陆续揭秘),再配合丰富的极狐 GitLab CI/CD 变量魔法[3],可以能很方便的构建起完整的 CI/CD 系统。开发人员可以通过查看相应的文档就能比较快的上手 Pipeline 的构建语法,从而可以自己来书写 Pipeline 进行新功能的调试、部署、测试等。当然,最重要的一点就是,没有额外的组件(除了 Runner,如果不打算自己 host Runner,那就连这点工作量也没了)需要安装,能够极大的减少工作量。
这也就是极狐 GitLab 开箱即用一体化 DevOps 平台的好处之一,把繁杂、复杂的事情留给平台,开发人员可以直接使用平台的能力来完成业务的开发,这样能够极大的提升研发效能。
引用链接
https://docs.gitlab.com/ee/ci/variables/
https://docs.gitlab.com/runner/
https://docs.gitlab.com/ee/ci/variables/index.html#deployment-variables
关于极狐(GitLab)
极狐(GitLab) 以“核心开放”为原则,面向中国市场,提供开箱即用的开放式一体化安全 DevOps 平台——极狐 GitLab。通过业界领先的优先级管理、安全、风险和合规性功能,实现产品、开发、QA、安全和运维团队间的高效协同,加速和优化企业软件开发生命周期。极狐 GitLab 由极狐信息技术(湖北)有限公司在国内独立运营,提供中国本地化功能和支持服务。极狐(GitLab)公司以“中外合资 3.0”模式创立,公司投资方包括 GitLab Inc.、红杉宽带跨境数字产业基金,以及高成资本。
关注本公众号可以获取更多关于 DevOps 相关的技术实践分享。
关于作者:小马哥,极狐 GitLab DevOps 技术布道师
版权声明: 本文为 InfoQ 作者【极狐GitLab】的原创文章。
原文链接:【http://xie.infoq.cn/article/77e35ab64dd13dd314dede926】。文章转载请联系作者。
评论