git在CICD实践中的应用0:前言

CICD,也写作CI/CD,全称为“Continuous Integration/Continuous Deployment”,即“持续集成/持续部署”,先介绍其概念。
持续集成(Continuous Integration),缩写为 CI,当代码有提交时,就会根据条件构建(触发行为),构建内容一般是我们编写,包括代码编译、测试等,如果构建失败,则将结果反馈出来。
持续部署(Continuous Deployment),缩写为 CD,一般与CI使用,如CI构建成功或测试通过,就自动部署到服务器上。
CICD常常与gitlab、jenkins、k8s、harbor、docker、maven、artifactory等等一起使用。但这些并不是本系列的重点。CICD用于DevOps,是一个大课题,有一套完整的理论,应该非常广,内容也非常多。本系列立足于一点:使用现成的服务,尽量减少本地搭建、环境配置工作,从而完成一部分的CICD实践,让读者对此有一个直观的认知,进而能应用于实际工作中,在工作慢慢扩展到其它的内容。 通俗地说,我们不需要做太多的事,利用一些免费的服务来完成一些简单的CI功能。这个系列秉承的是实践应用。即从具象角度出发描述,而从具象到抽象,就请各位读者入门后再慢慢探索了。

本系列主要介绍了三大主流的git托管服务器的CI应用,但是,只会介绍这些托管服务器有关CI部分的内容,注册过程不涉及,创建仓库、其它功能也不涉及。git服务器介绍如下:

  • github
    众多顶级公司和项目都托管于此,是开源的好去处,同时也能彰显自己的能力。微软收购后,个人也能免费使用私有仓库。单个文件最大限制为100MB,仓库最大为1GB。作为技术人,建议创建一个github账号。
  • gitlab
    无论私有仓库、公开仓库,都是免费的。本身开源,可本地使用docker搭建(但内存消耗大),可创建团队,成员数量不限制,仓库限制为10GB。对于私有项目特别是多人异地开发,强烈推荐。
  • bitbucket
    无论私有仓库、公开仓库,都是免费的。可创建团队,但成员只能有5个人

注意,上面提到的git服务器都是在国外,由于众所周知的原因可能会不太稳定,如果访问不了,一般稍后重试即可。对于个人使用,github是不二之选,但可以在多个git服务器做备份以防意外,——比如笔者的仓库同时提交在github和gitlab上。

下面介绍使用到的CI系统:

  • travis-ci
    目前只支持github,需要设置绑定github的项目,只要有提交,就会自动触发构建动作。
  • gitlab
    gitlab有自己的CI系统,还集成了kubernetes(k8s)功能。
  • circleci
    支持github和bitbucket。

另外,本系列还会介绍几个实例:

  • 使用CI功能发邮件
    利用CI功能,在团队开发中提交代码文档时,自动发邮件通知相关人员,利于开发协作,减少代码冲突,提高交流效率。
  • 构建hexo博客
    hexo是一个构建静态博客的工具。将markdown格式的文章通过hexo渲染成静态页面,可托管在github和自建服务器之上。利用CI功能,让渲染、面部自动完成,更加专注于markdown写作。
  • dockerhub下载诸如google网站的资源。
    google在国内无法正常访问,有时候,需要下载google的一些资源,比如k8s某些镜像,则可以利用dockerhub下载,再从dockerhub下载到本地,此过程,可以让CI完成。

可以看到,这些实例就是让CI自动地帮我们做一些事,让我们从重复的、繁琐的事务中投身出来,做其它更重要的事(或偷懒^_^)。

本系列假设读者已经掌握了git的概念、git客户端的使用,甚至简单的git命令,并且在电脑中安装了git客户端,笔者推荐小乌龟TortoiseGit。为演示方便,只在Windows系统中进行,Linux系统除了git使用不同外,其它无本质差异。

另外,也会涉及一些docker知识、nodejs语言,等等。各位读者可按需学习。在笔者看来,在实际工作中,并不能囿于某一项知识,如何更好地利用高效率的工具、语言才是解决问题的王道。

由于本系列更关注的是如何与一些CI系统结合,因而将CICD简称为CI,但实际上已经包括了CD功能。希望这个系列能让大家对CICD有一个初步的了解。

李迟 2019.6.22 周六