GitLab与Jenkin 结合构建持续集成环境

目录

1.持续集成概述运行及流程

1.1 CI/CD 介绍

1.2流程

1.3 Jenkins 概述

 1.4 GitLab 概述

1.5 项目部署方式

1.6集群和分布式

1.7持续集成系统的工作流程

总结:


1.持续集成概述运行及流程

1.1 CI/CD 介绍

把开发工作流程分为以下几个阶段:

编码 → 构建 → 集成 → 测试 → 交付 → 部署

持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)有着不同的软件自动化交付周期。

 概念:

持续集成(CI):

持续集成 (Continuous integation)可以频繁的(一天多次)将代码合并到主干源码仓库,并立刻进行构建、(单元)测试,根据测试结果可以确定新代码和原代码能否确定的集成在一起

好处有两个:

1.快速发现错误,每完成一点开发,集成到主干,可快速发现错误,定位错误

2.防止分支发幅偏离主干,主干又在不断更新,如不是经常集成会导致以后集成的难度变大

集成的目的:就是让产品可以快速迭代,同时还能保存高质量。核心措施是,代码集成到主干之前,必须通过自动化测试,只要又一个测试失败,就不能集成。

持续交付:

 持续交付(Continuous delivery)指的是在持续集成的基础上,将集成后的带代码部署到贴近真实生产环境的(类生产环境)中。

持续交付可以看作持续集成的下一步,强调的是,不管怎么更新,软件是随时随地可以交付的。

持续部署:

持续部署(continuous deployment)是持续交付的下一步,指带代码通过评审以后。部署到生产环境。

持续部署的前提是能自动化完成测试、构建、部署等步骤,一般持续部署建立手动部署 

总的来说,CI/CD  提供了一个优秀的 DevOps 环境, 很大的提高了开发运维的效率

1.2流程

1)提交:

开发者向代码库提交代码

2)测试:

代码仓库对 commit 操作配置了钩子(hook),只要提交代码或合并进主干,就会通知jenkins 实现自动化测试

测试的几种方式:

单元测试:针对函数或模块的测试

集成测试:针对整体产品某个功能的测试又称功能测试

端对端测试:从用户界面直达数据库的全链路测试

3)构建:

通过第一轮测试,代码就可以合并进主干,就算可以交付了。

交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等

4)测试(第二轮)

将 CI 测试后的代码程序交付给测试人员进行全面测试 (类生产环境中测试)

第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。

5)部署

测试成功,当前代码就是一个可以直接部署的版本了。将这个版本的所有文件打包( tar filename.tar * )存档,部署生产服务器。

生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号链接(symlink)指向这个目录,然后重新启动应用。这方面的部署工具有Ansible,Chef,Puppet等。

6)回滚

如当版本出现问题,回滚到上一个版本的构建,最简单的方法就是修改一下符号链接,指向上一个版本的目录。


1.3 Jenkins 概述

Jenkins 概述:是一个开源软件项目,是基于Java开发的一种持续集成、交付、部署的基于web界面的平台,用于自动化各种任务,包括构建、测试和部署软件。

 Jenkins其实很早之前就有了,最近火起来的原因是,大家都在关注devops,关注如何来做CI/CD。Jenkins作为持续集成的工具,他其实只是一个平台或者是一个大的框架,它的工作完全就是依靠插件,也就是说你想使用什么功能,你就找到什么样的插件。
官方网址:Jenkins

 


 1.4 GitLab 概述

gitlab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。

 GitLab 拥有与Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

注:gitlab-ce 社区版,gitlab-ee 企业版(收费)

官网: The One DevOps Platform | GitLab


1.5 项目部署方式

项目部署方式分为 2 种:手动、自动部署。

手动部署:

自动化部署:

“自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序

 

 构建上述集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于程序员的日常开发来说不会造成任何额外负担,自己把代码提交上去之后,服务器上运行的马上就是最新版本。


1.6集群和分布式

 通过此图可以形象的解释集群和分布式的含义:

单机结构中的全栈意思是:即做前端的 js、css、html等,又做后端的java 等

集群结构中的全栈意思是:同时又两个或多个更多的人即做前端,又做后端

分布式的意思就是此图所表示的: 将后端和前端分开,各做各的。


1.7持续集成系统的工作流程

这里是选择 Gitlab作为 git server。Gitlab的功能和 github差不多,可以搭建私有的git server,提供非常强大的 web GUI,比如开发者互相review源代码的时候就会很方便

系统的工作流程大概分为以下几步:

1> 开发者将新版本push到git server (Gitlab)。
 2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)
 3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。
 4> 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。
 注:
 jenkins的工作原理是先将源代码从gitlab中拷贝一份到本地,然后根据设置的脚本进行build。我们可以看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中需要执行的任务


总结:

1)开发者向代码仓库提交代码
2)在gitlab仓库设置webhook钩子,通知jenkins实现CI的自动化测试
3)将CI测试后的代码程序交付给测试人员进行全面测试(类生产环境中测试)
4)将测试后没问的项目部署到生成环境,如果有问题,就回滚到上一个稳定版本

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要搭建最新版本的gitlabjenkins、harbor和k8s部署微服务流水线,首先需要安装CentOS操作系统,然后按照以下步骤进行: 1. 安装Docker和Docker Compose:在CentOS上安装最新版本的Docker和Docker Compose,这是搭建整个流水线所需的基础环境。 2. 安装Gitlab:使用Docker Compose安装最新版本的Gitlab。在Docker Compose文件中设置所需的配置,如运行端口、数据存储目录等。 3. 配置Gitlab:通过访问Gitlab的IP地址和端口,在Web界面上进行初始配置,如创建管理员账户、配置SMTP服务器等。 4. 安装Jenkins:使用Docker Compose安装最新版本的Jenkins。在Docker Compose文件中设置所需的配置,如运行端口、数据存储目录等。 5. 配置Jenkins:通过访问Jenkins的IP地址和端口,在Web界面上进行初始配置,如安装所需的插件、配置全局工具等。 6. 安装Harbor:使用Docker Compose安装最新版本的Harbor。在Docker Compose文件中设置所需的配置,如运行端口、数据存储目录等。 7. 配置Harbor:通过访问Harbor的IP地址和端口,在Web界面上进行初始配置,如创建管理员账户、配置存储库等。 8. 部署Kubernetes:安装Kubernetes集群以部署和管理微服务。可以使用工具如kubeadm、kubespray等进行安装。 9. 配置Kubernetes:对Kubernetes进行初始化配置,如创建命名空间、配置权限等。 10. 配置流水线:在Jenkins中创建和配置流水线任务,包括从Gitlab拉取代码、构建、测试、镜像构建和推送到Harbor、部署到Kubernetes等步骤。 通过完成以上步骤,就可以成功搭建最新版本的GitlabJenkins、Harbor和Kubernetes的微服务流水线。这将为开发团队提供一个完整的CI/CD环境,用于高效地构建、测试和部署微服务应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹黄堡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值