GitLab 内置持续集成功能
持续集成(CI)
- 集成团队中每个开发人员提交的代码到代码存储库中。
- 开发人员在 Merge 或者 Pull 请求中合并拉取新代码。
- 在提交或者合并更改到代码存储库之前,会触发构建,测试和新代码验证的管道。
- CI 可帮助您在开发周期的早期发现并减少错误。
连续交付(CD)
- 可通过结构化的部署管道确保将经过 CI 验证的代码交付给您的应用程序。
- CD 可以将经过验证的代码更快地移至您的应用程序。
CI/CD 一起可以加快团队为客户和利益相关者交付成果的速度。CI 和 CD 必须无缝协作,以使您的团队快速有效地进行构建,并且对于确保完全优化的开发实践至关重要。
GitLab CI/CD 优势
- 开源:CI/CD 是开源 GitLab 社区版和专有 GitLab 企业版的一部分。
- 易于学习:具有详细的入门文档。
- 无缝集成:GitLab CI/CD 是 GitLab 的一部分,支持从计划到部署,具有出色的用户体验。
- 可扩展:测试可以在单独的计算机上分布式运行,可以根据需要添加任意数量的计算机。
- 更快的结果:每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行。
- 针对交付进行了优化:多个阶段,手动部署,环境和变量。
GitLab CI/CD 特点
- 多平台:Unix、Windows、MacOS 和任何其他支持 Go 的平台上执行构建。
- 多语言:构建脚本是命令行驱动的,并且可以与 Java、PHP、Ruby、C 和任何其他语言一起使用。
- 稳定构建:构建在与 GitLab 服务不同的机器上运行。
- 并行构建:GitLab CI/CD 在多台机器上拆分构建,以实现快速执行。
- 实时日志记录:合并请求中的链接将您带到动态更新的当前构建日志。
- 灵活的管道:您可以在每个阶段定义多个并行作业,并且可以触发其他构建。
- 版本管道:一个
.gitlab-ci.yml
文件包含您的测试,整个过程的步骤,使每个人都能贡献更改,并确保每个分支获得所需的管道。 - 自动缩放:您可以自动缩放构建机器,以确保立即处理您的构建并将成本降至最低。
- 构建工件:您可以将二进制文件和其他构建工件上载到 GitLab 并浏览和下载它们。
- Docker支持:可以使用自定义 Docker 映像,作为测试的一部分启动服务,构建新的 Docker 映像,甚至可以在 Kubernetes 上运行。
- 容器注册表:内置的容器注册表,用于存储,共享和使用容器映像。
- 受保护的变量:在部署期间使用受每个环境保护的变量安全地存储和使用机密。
- 环境:定义多个环境。
GitLab CI/CD 架构
GitLab CI/CD
GitLab 的一部分,GitLab 是一个 Web 应用程序,具有将其状态存储在数据库中的 API。 除了 GitLab 的所有功能之外,它还管理项目/构建并提供一个不错的用户界面。
GitLab Runner
是一个处理构建的应用程序。它可以单独部署,并通过 API 与 GitLab CI/CD 一起使用。
.gitlab-ci.yml
定义流水线作业运行,位于应用项目根目录下。
GitLab CI/CD 工作原理
- 将代码托管到 Git 存储库。
- 在项目根目录创建 CI 文件
.gitlab-ci.yml
,在文件中指定构建,测试和部署脚本。 - GitLab 将检测到它并使用名为 GitLab Runner 的工具运行脚本。
- 脚本被分组为作业,它们共同组成了一个管道。
管道状态也会由 GitLab 显示:
最后,如果出现任何问题,可以轻松地回滚所有更改: