本文是《GitLabCI实践》教程基础部分内容,讲述为什么要使用GitLabCICD功能,点击上面图片获取免费公开课报名链接,欢迎报名学习!部分观点仅供参考
开发团队在开发环境中完成软件开发,单元测试,测试通过,提交到代码版本管理库。运维团队把应用部署到测试环境,供QA团队测试,测试通过后部署生产环境。QA 团队 进行测试,测试通过后通知部署人员发布到生产环境。
经过上述问题我们需要作出改变,如何改变?
软件开发的连续方法基于自动执行脚本,以最大程度地减少在开发应用程序时引入错误的机会。从开发新代码到部署新代码,他们几乎不需要人工干预,甚至根本不需要干预。
它涉及到在每次小的迭代中就不断地构建,测试和部署代码更改,从而减少了基于错误或失败的先前版本开发新代码的机会。
此方法有三种主要方法,每种方法都将根据最适合您的策略的方式进行应用。
持续合并开发人员正在开发编写的所有代码的一种做法。通常一天内进行多次合并和提交代码,从存储库或生产环境中进行构建和自动化测试,以确保没有集成问题并及早发现任何问题。
开发人员提交代码的时候一般先在本地测试验证,只要开发人员提交代码到版本控制系统就会触发一条提交流水线,对本次提交进行验证。
持续交付是超越持续集成的一步。不仅会在推送到代码库的每次代码更改时都进行构建和测试,而且,作为附加步骤,即使部署是手动触发的,它也可以连续部署。此方法可确保自动检查代码,但需要人工干预才能从策略上手动触发更改的部署。
通常可以通过将更改自动推送到发布系统来随时将软件发布到生产环境中。持续部署 会更进一步,并自动将更改推送到生产中。类似于持续交付,持续部署也是超越持续集成的又一步。不同之处在于,您无需将其手动部署,而是将其设置为自动部署。部署您的应用程序完全不需要人工干预。
专业的CI工具,可扩展自动化服务器、安装配置简单、丰富的插件库、分布式架构设计、支持所有的平台、可视化的管理页面。
端到端DevOps工具,常用功能:代码审查、问题跟踪、动态订阅、易于扩展、项目wiki、多角色项目管理、项目代码在线编译预览、CI工具集成。
CI/CD 一起 可以加快团队为客户和利益相关者交付成果的速度。CI和CD必须无缝协作,以使您的团队快速有效地进行构建,并且对于确保完全优化的开发实践至关重要。
GitLab的一部分,GitLab是一个Web应用程序,具有将其状态存储在数据库中的API。除了GitLab的所有功能之外,它还管理项目/构建并提供一个不错的用户界面。
是一个处理构建的应用程序。它可以单独部署,并通过API与GitLab CI / CD一起使用。
定义流水线作业运行,位于应用项目根目录下 。
为了运行测试,至少需要一个 GitLab 实例、一个 GitLab Runner、一个gitlab-ci文件
.gitlab-ci.yml
,在文件中指定构建,测试和部署脚本。管道状态也会由GitLab显示:
最后,如果出现任何问题,可以轻松地 回滚所有更改:
Jenkins
是一个广泛用于持续集成的可视化 web
自动化工具,jenkins
可以很好的支持各种语言的项目构建,也完全兼容ant
、maven
、gradle
等多种第三方构建工具,同时跟svn
、git
能无缝集成,也支持直接与知名源代码托管网站,比如github
、bitbucket
直接集成,而且插件众多,在这么多年的技术积累之后,在国内大部分公司都有使用Jenkins
。
gitlab-CI
是gitlab8.0
之后自带的一个持续集成系统,中心思想是当每一次push
到gitlab
的时候,都会触发一次脚本执行,然后脚本的内容包括了测试,编译,部署等一系列自定义的内容。
gitlab-CI
的脚本执行,需要自定义安装对应gitlab-runner
来执行,代码push
之后,webhook
检测到代码变化,就会触发gitlab-CI
,分配到各个Runner
来运行相应的脚本script
。这些脚本有的是测试项目用的,有的是部署用的。
分支的可配置性
定时执行构建
有时,根据时间触发作业或整个管道会有所帮助。例如,常规的夜间定时构建。
尽管使用GitLab CI无法做到这一点,其实如果配置了提交代码即触发流水线,那么最后一次提交的构建在什么时候没有什么不同,反而减少未提交代码的定时构建资源浪费。
拉取请求支持
如果很好地集成了存储库管理器和CI / CD平台,您可以看到请求的当前构建状态。使用这种功能,可以避免将代码合并到不起作用或无法正确构建的主分支中。
权限管理
从存储库管理器继承的权限管理对于不想为每个服务分别设置每个用户的权限的大型开发人员或组织团体很有用。大多数情况下,两种情况下的权限都是相同的,因此默认情况下应将它们配置在一个位置。
存储库交互
插件管理
GitLabCI
gitlab
可直接适配。UI
交互体验很好YAML
进行配置,任何人都可以很方便的使用。Jenkins
低Jenkins
web
管理界面。GitLabCI 有助于DevOps人员,例如敏捷开发中,开发与运维是同一个人,最便捷的开发方式。JenkinsCI适合在多角色团队中,职责分明、配置与代码分离、插件丰富。