目录
1、Jenkins 结合 Gitlab 构建 CI/CD 环境
1、Jenkins 结合 Gitlab 构建 CI/CD 环境
常用的构建工具如 Jenkins、Travis、Codeship、Bamboo、gitlab、GitHub、Bitbucket。
CI/CD 介绍
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。
CI/CD 的核心概念是持续集成、持续交付和持续部署。
CI/CD 主要针对在集成新代码时所引发的问题,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。
持续集成 CI |
CI (CI-Continuous integration)是指持续集成,开发者在代码的开发过程中,可以频繁的(一天多次)将代码合并到主干源码仓库,并进行自动化测试。 |
持续交付 CD |
CD (Continuous Delivery)持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到测试环境或生产环境中。目的就是确保尽可能减少部署新代码时所需的工作量。 |
持续部署 CD |
CD-continuous deployment,持续部署(另一种“CD”)是指自动将开发人员更改的代码从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。 |
CI/CD 流程
① 提交代码到仓库:开发者提交代码到仓库(commit)
② 代码测试
对代码仓库 commit 操作配置了钩子(hook),只要提交代码或者合并进主干,开始拉取代码进行代码测试。
1、代码质量测试(SonarQube)
2、代码单元测试:针对函数或模块的测试
3、集成测试:针对整体产品的某个功能的测试,又称功能测试
4、端对端测试:从用户界面直达数据库的全链路测试
③ 构建(编译)
通过第一轮测试,代码可以交付了。交付后,就先进行构建(build)。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS 脚本、图片)等等。
④ 部署代码到测试环境:构建完成把产品部署到测试环境进行
⑤ 测试(第二轮)
构建完成,就要进行第二轮测试。第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。 需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高, 进入后面的部署阶段后,很可能会出现严重的问题。
⑥ 部署代码到生产环境
通过了第二轮测试,当前代码就是一个可以直接部署的版本了。将这个版本的所有文件发布到生产服务器。 部署工具有 shell 脚本,Ansible,Chef,Puppet 等。
⑦ 回滚
一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。
Jenkins 简介
网方网站:https://jenkins.io/zh/
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成、交付、部署的基于 web 界面的平台,用于自动化各种任务,包括构建、测试和部署软件。
GitLab 简介
gitlab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。
GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管 理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
项目部署方式
① 手动部署
② 自动部署
搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于程序员的日常开发来说不会造成任何额外负担,自己把代码提交上去之后,服务器上运行的马上就是最新版本。