一、CI/CD 核心概念总结
CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery),是现代化软件开发中提升效率、保障质量的关键实践。
1. 持续集成(CI)
持续集成强调开发人员频繁将代码集成到共享仓库,核心要点包括:
- 频繁提交代码:开发人员每天多次提交,保持代码库最新。
- 自动化构建:每次提交自动触发编译、测试、静态分析。
- 快速反馈:构建或测试失败时能及时通知开发人员修复。
2. 持续部署(CD)
在持续集成基础上,将通过测试的代码自动部署到生产环境,特点如下:
- 自动化流程:从提交到生产部署完全自动化,无需人工干预。
- 高频率部署:新功能可快速交付给用户。
- 风险控制:依赖强大的测试和监控体系保障稳定性。
3. 持续交付(CD)
与持续部署类似,但不一定自动部署到生产环境,核心是确保软件随时处于可发布状态。
CI/CD 的四大好处
- 提高开发效率:减少手动操作和等待时间,加快开发周期。
- 尽早发现问题:通过频繁集成和测试,问题在早期被发现和解决。
- 降低风险:减少大规模部署时的问题,提升软件质量与稳定性。
- 增强团队协作:促进沟通协作,提高整体效率。
常见工具包括 Jenkins、GitLab CI/CD、Travis CI 等。
二、Git 工具使用总结
1. Git 核心特点
- 分布式:每个开发者拥有完整仓库副本,支持离线工作,中央服务器故障也不影响开发。
- 高效分支管理:分支创建、切换快速,合并策略多样。
- 快速版本回退:可随时回退到历史版本,查看详细变更记录。
- 强大提交管理:每个提交有唯一标识符,可包含详细说明。
- 支持协作开发:支持推送、拉取、合并,通过冲突解决机制保证代码完整性。
2. Git 工作流程与三种状态
- 已修改(modified):文件已修改但未保存到数据库。
- 已暂存(staged):对已修改文件做了标记,将包含在下次提交快照中。
- 已提交(committed):数据已安全保存在本地数据库。
对应 Git 项目的三个阶段:工作区、暂存区、Git 目录。
3. 常用 Git 命令要点
- git init :初始化仓库;git clone:克隆远程仓库。
- git status / git status -s:查看文件状态及简化输出。
- git add:将文件加入暂存区。
- git commit -m:提交暂存区数据。
- git checkout -- 文件:撤销工作区修改。
- git restore --staged:从暂存区撤销。
- git diff:查看已暂存和未暂存的修改变化。
- git commit -a -m:跳过暂存区直接提交(仅限已跟踪文件)。
- git rm:从版本库删除文件。
- git log / git reflog:查看操作日志与提交动作。
- git reset --hard:版本回退。
- .gitignore:忽略编译产生的临时文件。
三、GitLab 代码仓库总结
1. GitLab 简介
GitLab 是基于 Git 的开源仓库管理系统,提供代码托管、CI/CD、问题跟踪、合并请求管理等功能,帮助团队协作开发、提升效率与代码质量。
2. 部署要点
- 部署要求内存大于 4G,需先配置软件仓库解决依赖。
- 安装后通过
gitlab-ctl reconfigure使配置生效并启动全部组件。 - 默认用户名为 root,初始密码存储在
/etc/gitlab/initial_root_password,24 小时后会被自动删除,建议登录后立即修改。
3. 项目与密钥管理
- 生成 SSH 密钥(
ssh-keygen),将公钥上传到 GitLab 实现免密操作。 - 通过
git clone git@IP:root/项目名.git下载项目。 - 本地修改后执行 add、commit、push 即可同步到远程仓库。
四、Jenkins 总结
1. Jenkins 简介
Jenkins 是开源 CI/CD 软件领导者,提供超过 1000 个插件支持构建、部署、自动化,使用 Java 编写,可独立运行或部署在 Tomcat 等容器中。
2. 部署要点
- 建议部署在新虚拟机,最少 4G 内存、4 核 CPU。
- 安装依赖:
fontconfig、java-21-openjdk、git。 - 初始管理员密码位于
/var/lib/jenkins/secrets/initialAdminPassword,建议登录后修改。
3. Jenkins 与 GitLab 整合
- 需将 Jenkins 的 SSH 公钥添加到 GitLab,解决认证问题。
- SSH 首次连接需签名认证,可配置
StrictHostKeyChecking no解决。 - 安装 GitLab 插件后,可配置触发器实现代码提交或合并请求时自动触发 Jenkins 流水线。
五、持续集成持续交付企业示例总结
1. 整体流程
容器构建镜像通过持续集成自动上传到 Harbor 仓库,业务主机通过持续交付自动从仓库下载最新镜像并更新业务。
2. 关键步骤
- 业务节点:安装 Docker 和 Java 环境,配置仓库认证文件与镜像加速。
- 构建节点:在 Harbor 主机安装 Java 和 Git,在 Jenkins 中配置容器构建规则。
- 镜像构建:在 GitLab 中编写 Dockerfile 和 index.html,提交后自动触发构建。
- 业务更新:业务节点自动拉取最新镜像,实现版本更新(如 v1 升级到 v2)。
六、总结
CI/CD 与 Git 是现代软件交付的核心基础设施。CI 保证代码持续集成与质量反馈,CD 实现自动化部署与快速交付;Git 提供分布式版本管理与高效协作;GitLab 承担代码托管与 CI/CD 编排;Jenkins 作为自动化引擎串联构建、测试与部署。掌握这套工具链,能够显著提升开发效率、降低发布风险、保障软件质量。