探索DEVOPS的世界06

上一篇我们重点介绍了对于如何进行一个应用的自动化构建,我们对一个应用的构建过程的节点的分析找出他们的规律后,再通过程序脚本进行一定的自动化。 那么有没有成熟开源的工具使用呢?这篇我们就先介绍一些开源的用于自动化持续构建的产品。

首先,第一个提到的就是jenkins。 jenkins到至今为止,其实已经发展出了jenkins X以及基于jenkins的多样化的插件,所以整个社区还是呈现一片繁荣的状态,而且根据我的了解,jenkins的使用在很多中小企业还是占有很大的市场。 那么jenkins到底提供了哪些功能呢? 我们先分析一下持续集成中有哪些关键的要素。

1、代码仓库。这个地方是存放你所编写的代码的地方;

2、制品库。在制品库中可以保管你所有的成熟工具制品以及将你的制品提供给别人使用;

3、自动化脚本。有了自动化脚本之后才能去你的应用做检测以及持续构建集成操作。

所以,上面的要素缺一不可。 而jenkins帮我们把这一切都做完了。 通过jenkins的『新建项目』我们可以创建一个持续集成的流水线,比如java应用,jenkins提供了maven的插件帮助你在流水线中进行打包操作;同时,通过jenkins的控制台,jenkins可以去对接公司的现成的代码仓库,比如github、gitlab等,而且你可以进行分支的选择。 当将以上的基本配置库设定好之后,你就依靠jenkins中所提供的持续的能力进行配置就可以完成一个简单的持续集成的流水线了。 另外,值得一提的是,jenkins除了提供比如maven这些成熟的插件用于创建基于maven构建的项目外,还可以通过pipeline,这也是我常用的一种方式。因为灵活性比较高,而且你是可以去自定义自己的流水线过程以及脚本。举一个如下的例子:

  node {
    stage('检出代码'){
      git branch: 'master',url:'XXX'
    }

    stage('Maven编绎'){
      dir('./'){
      sh 'mvn clean install -DskipTests=ture'
    }
  }
  

如上就是一个简单的pipeline的例子。

另外一款产品叫做Travis CI,这也是用的比较广的一款。 它需要在你的项目中添加一个.travis.yml文件,在这个yml文件中你可以定义具体的流水,比如如下的一个例子:

  language: python
  sudo: required
  python:
      - '3.5'
  services:
      - mysql
  install :
      - pip install -r requirements.txt
  script:
      - python manage.py test

其就是对一个python应用进行构建的过程。 Travis CI无需你去搭建一套CI的平台,它需要提供你的github的账号以及你的github仓库中所存在的一个项目,通过在官网上创建账号按照它的步骤进行就可以完成持续集成的过程。

最后一款介绍的产品叫做Tekton,这也是近段时间很流行的一款产品,因为特别是去年至今,Cloud Native落地的案例越来越多,而K8S的生态也越来越广泛成熟,所以包括CICD、中间件等也都逐步地进行云原生化。 Tekton也是将每个阶段的流水操作定义到yml文件中,只是稍微不同的是,其流水线的工作是通过K8S的POD进行驱动,即每一个定义的任务其实都是一个POD。这块暂时不详细讲,后面会有专门的专栏进行包括jenkins、tekton等这类产品的实操讲解,到时候也敬请关注。

除了以上的产品外,其实市面上还有不少产品,比如Gitlab CI,Github Actions等,目前稍有规模的公司都会通过一些开源产品进行二次开发,融合自己公司的规范将这块运转得更好。

说完了持续集成,那么我就说下持续部署。 持续部署的内容不会做详细的讲解,因为其实在如上所介绍的持续集成的开源产品大部分也解决了自动化持续部署的工作。 拿一个java应用举例,正常的一个部署流程包括将打包好的应用上传到服务器->启动中间件->观测应用状况。而我们日常中间件或者应用的启动其实都会有成熟的现成的脚本帮我们一键操作。所以我们可以思考如下一个自动化的流程:

1、包打完了之后立即触发将包上传到远程的服务器制定的目录中; 2、上传完成后,我们可以自动登录到远程服务器进行启动脚本的操作

以上的流程这里就不写程序去模拟了,在介绍的这些产品中其实也可以进行如上的过程操作,在后面的实践篇中,我们也会去实操所提到的系列产品。

整个持续集成持续部署的技术设计思路至此就介绍完毕了,那么对于解决『压在程序员身上的三座大山』我们又可以通过哪些自动化的技术方式去落地呢? 我们下一篇再接着讨论。

—————–EOF——————



Previous     Next
mjgao /