传统的软件开发流程如下:
1、项目经理分配模块给开发人员
2、每个模块的开发人员并行开发,并进行单元测试
3、开发完毕,将代码集成部署到测试服务器,测试人员进行测试。
4、测试人员发现bug,提交bug、开发人员修改bug
5、bug修改完毕再次集成、测试。
问题描述:
1、模块之间依赖关系复杂,在集成时发现大量bug
2、测试人员等待测试时间过长
3、软件交付无法保障
解决上述问题的思考:
1、能否把集成测试时间提前?
2、能否使用自动化工具代替人工集成部署的过程?
持续集成(Continuous integration)简称CI,持续集成的思想是每天要多次将代码合并到主干,并进行集成、测试,这样就可以提早发现错误,进行修正。
持续集成的好处:
1、自动化集成部署,提高了集成效率。
2、更快的修复问题。
3、更快的进行交付。
4、提高了产品质量。
持续集成的流程:
1、个人电脑提交代码至git
2、git发现代码变化,立即发消息通知Jenkins
3、Jenkins收到通知,利用Webhook触发代码自动构建任务
### Git+Jenkins实现自动化构建与持续集成的关键知识点
#### 持续集成的基本概念
持续集成(Continuous Integration,简称CI)是一种软件开发实践,它要求团队成员经常性地(通常每天至少一次)将他们的工作集成到共享的主分支中。每次集成(即代码合并)后,都会通过自动化构建(包括编译、发布、自动化测试等)来验证,以便尽快发现问题。这种频繁集成的方式有助于提高团队的工作效率,减少后期集成所带来的各种冲突问题,确保软件产品的高质量输出。
#### 传统软件开发流程的问题
传统的软件开发流程往往面临以下几个主要问题:
1. **模块间的依赖关系复杂**:这可能导致在集成阶段出现大量的bug,影响项目的整体进度。
2. **测试周期过长**:由于集成和测试不是即时进行的,测试人员往往需要等待较长的时间才能开始测试,导致问题的发现和修复周期延长。
3. **软件交付的质量难以保证**:上述问题最终会影响到软件产品的质量,增加用户的不满意程度。
#### 持续集成的好处
引入持续集成可以有效解决以上问题:
1. **提高集成效率**:通过自动化工具实现集成和部署,大大减少了人工操作带来的错误和耗时。
2. **快速修复问题**:早期发现错误意味着能够更早地进行修复,从而减少bug的数量。
3. **加快交付速度**:缩短了开发周期,使产品能够更快地推向市场。
4. **提升产品质量**:通过频繁的测试和及时的反馈循环,提高了软件的整体质量。
#### Git与Jenkins在持续集成中的角色
- **Git**:作为版本控制系统,Git为团队提供了高效协作的基础。开发者可以通过Git轻松管理代码变更,支持多人协作,确保代码的一致性和可追溯性。
- **Jenkins**:作为一款开源的持续集成工具,Jenkins可以自动监测代码库的变化,并根据这些变化自动执行构建、测试等任务。它可以与Git等版本控制系统无缝集成,帮助实现持续集成的最佳实践。
#### Git与GitHub/GitLab的区别
- **Git**:是一种分布式版本控制系统,用于追踪对文件的更改,以及将多个人对同一个项目的工作成果合并起来。
- **GitHub**:是基于Git的代码托管平台,提供免费的公共存储库和付费的私人存储库。它还支持项目管理和协作工具。
- **GitLab**:同样是一个基于Git的代码托管平台,它提供了一个开源的解决方案,允许用户在自己的服务器上运行GitLab实例,对于需要更高安全性和控制权的组织来说是一个很好的选择。
#### 安装配置Git与GitLab
1. **安装Git服务端(CentOS 7.5)**:
- **安装Git**:使用`yum install git -y`命令进行安装。
- **创建Git仓库**:通过`mkdir`创建文件夹,并使用`git init --bare`初始化仓库。
- **配置权限**:使用`chown`命令为文件夹设置正确的所有者和组。
2. **安装GitLab**:
- **配置依赖**:安装必要的依赖如curl、policycoreutils等。
- **配置SSH服务**:启用和启动SSHD服务。
- **配置邮件服务**:安装并配置Postfix。
- **配置YUM源**:编辑`/etc/yum.repos.d/gitlab-ce.repo`以指向正确的GitLab仓库。
- **安装GitLab**:通过`yum install gitlab-ce -y`安装GitLab CE。
- **配置GitLab**:编辑`/etc/gitlab/gitlab.rb`配置文件,指定外部URL等信息。
- **配置SMTP邮件功能**:编辑`/etc/gitlab/gitlab.rb`配置文件,设置邮件发送的相关信息。
#### 总结
通过结合使用Git和Jenkins,团队可以实现高效的自动化构建和持续集成流程,这对于提高软件开发的效率和质量至关重要。从Git的版本控制到Jenkins的自动化构建,再到GitLab的代码托管,这一系列工具和技术的结合使得现代软件开发变得更加高效、可靠且易于管理。