Introduction to CI/CD with GitLab

原文:https://docs.gitlab.com/ee/ci/introduction/

Introduction to CI/CD with GitLab

在本文档中,我们将概述持续集成,持续交付和持续部署的概念,并介绍 GitLab CI / CD.

开箱即用的管理系统可以将维护工具链所花费的时间减少 10%或更多. 观看我们的“精通持续软件开发”网络广播,以了解连续方法以及 GitLab 的内置 CI 如何帮助您简化和扩展软件开发.

Introduction to CI/CD methodologies

软件开发的连续方法基于自动执行脚本,以最大程度地减少在开发应用程序时引入错误的机会. 从开发新代码到部署新代码,他们几乎不需要人工干预,甚至根本不需要干预.

它涉及到在每次小的迭代中就不断地构建,测试和部署代码更改,从而减少了基于错误或失败的先前版本开发新代码的机会.

此方法有三种主要方法,每种方法都将根据最适合您的策略的方式进行应用.

Continuous Integration

考虑一个应用程序,其代码存储在 GitLab 的 Git 存储库中. 开发人员每天要多次推送代码更改. 对于每次向存储库的推送,您都可以创建一组脚本来自动构建和测试您的应用程序,从而减少了向应用程序引入错误的机会.

这种做法被称为持续整合 ; 对于提交给应用程序(甚至是开发分支)的每个更改,它都会自动连续地构建和测试,以确保所引入的更改通过您为应用程序建立的所有测试,准则和代码合规性标准.

GitLab 本身就是使用持续集成作为软件开发方法的一个示例. 对于项目的每一次推送,都有一组检查脚本的脚本.

Continuous Delivery

持续交付是超越持续集成的一步. 您的应用程序不仅会在推送到代码库的每次代码更改时都进行构建和测试,而且作为附加步骤,尽管部署是手动触发的,但它仍会持续部署.

此方法可确保自动检查代码,但需要人工干预才能从策略上手动触发更改的部署.

Continuous Deployment

类似于持续交付, 持续部署也是超越持续集成的又一步. 区别在于,您无需将其手动部署,而是将其设置为自动部署. 部署您的应用程序完全不需要人工干预.

Introduction to GitLab CI/CD

GitLab CI / CD 是内置在 GitLab 中的功能强大的工具,它使您可以将所有连续方法(连续集成,交付和部署)应用于软件,而无需第三方应用程序或集成.

有关概述,请参阅最近的 GitLab 聚会中的GitLab CI 简介 .

How GitLab CI/CD works

要使用 GitLab CI / CD,您需要做的是托管在 Git 存储库中的应用程序代码库,并在.gitlab-ci.yml文件中指定生成,测试和部署脚本,该文件位于以下目录的根路径中:您的存储库.

在此文件中,您可以定义要运行的脚本,定义包含和缓存依赖项,选择要按顺序运行的命令和要并行运行的命令,定义要在哪里部署应用程序,以及指定是否将要自动运行脚本或手动触发任何脚本. 熟悉 GitLab CI / CD 后,您可以在配置文件中添加更多高级步骤.

要将脚本添加到该文件,您需要按照适合您的应用程序并符合您要执行的测试的顺序来组织它们. 为了可视化该过程,假设添加到配置文件中的所有脚本与在计算机的终端上运行的命令相同.

.gitlab-ci.yml配置文件添加到存储库后,GitLab 将检测到该文件并使用名为GitLab Runner的工具运行脚本,该工具的操作与终端类似.

这些脚本被分组为作业 ,它们共同组成了一个管道 . .gitlab-ci.yml文件的一个简约示例可以包含:

  1. before_script:
  2. - apt-get install rubygems ruby-dev -y
  3. run-test:
  4. script:
  5. - ruby --version

before_script属性将在运行任何内容之前为您的应用程序安装依赖项,并且名为run-test作业将打印当前系统的 Ruby 版本. 它们两者都构成了在每次推送到存储库的任何分支时触发的管道 .

GitLab CI / CD 不仅执行您已设置的作业,而且还向您显示执行期间发生的事情,就像您在终端中看到的那样:

job running

您为您的应用程序创建了策略,GitLab 根据您定义的内容为您运行管道. 您的管道状态也会由 GitLab 显示:

pipeline status

最后,如果出现任何问题,您可以轻松回滚所有更改:

rollback button

Basic CI/CD workflow

考虑以下示例,以了解 GitLab CI / CD 如何适合通用开发工作流程.

假设您已在一个问题中讨论了代码实现,并在本地进行了建议的更改. 将提交推送到 GitLab 中的远程存储库中的功能分支后,将触发项目的 CI / CD 管道集. 这样,GitLab CI / CD:

  • 运行自动化脚本(顺序或并行)以:
    • 构建并测试您的应用.
    • 就像在localhost看到的那样,使用 Review Apps 预览每个合并请求的更改.

对实施感到满意后:

  • 让您的代码得到审查和批准.
  • 将功能分支合并到默认分支.
    • GitLab CI / CD 将您的更改自动部署到生产环境.
  • 最后,如果出现问题,您和您的团队可以轻松地将其回滚.

GitLab workflow example

GitLab CI / CD 可以做更多的事情,但是此工作流程体现了 GitLab 跟踪整个过程的能力,而无需使用外部工具来交付软件. 而且,最有用的是,您可以通过 GitLab UI 可视化所有步骤.

A deeper look into the CI/CD basic workflow

如果我们深入研究基本工作流程,则可以在 DevOps 生命周期的每个阶段看到 GitLab 中可用的功能,如下图所示.

Deeper look into the basic CI/CD workflow

如果您从左至右查看图像,则会根据每个阶段(验证,打包,发布)看到 GitLab 中的一些可用功能.

  1. Verify:
  2. Package:
  3. Release:
    • 持续部署,自动将您的应用程序部署到生产环境.
    • 连续交付,手动单击以将您的应用程序部署到生产环境.
    • 使用GitLab Pages部署静态网站.
    • 仅将功能部件运送到您的一部分吊舱中,并让一定比例的用户群通过Canary Deployments访问临时部署的功能部件.
    • 功能标记后面部署功能 .
    • 使用GitLab Releases向任何 Git 标签添加发行说明.
    • View of the current health and status of each CI environment running on Kubernetes with Deploy Boards.
    • 使用Auto Deploy将应用程序部署到 Kubernetes 集群中的生产环境.

使用 GitLab CI / CD,您还可以:

要查看所有 CI / CD 功能,请导航回CI / CD 索引 .

观看视频GitLab CI Live 演示 ,深入了解 GitLab CI / CD.

Setting up GitLab CI/CD for the first time

要开始使用 GitLab CI / CD,您需要熟悉.gitlab-ci.yml配置文件的语法及其属性.

本文档在 GitLab Pages 的范围内介绍了 GitLab CI / CD 的概念 ,用于部署静态网站. 尽管它是为想要从头开始编写自己的 Pages 脚本的用户而设计的,但它也可以作为 GitLab CI / CD 设置过程的简介. 它涵盖了编写 CI / CD 配置文件的最初一般步骤,因此我们建议您通读它以了解 GitLab 的 CI / CD 逻辑,并学习如何为任何应用程序编写自己的脚本(或调整现有脚本).

要深入了解 GitLab 的 CI / CD 配置选项,请查看.gitlab-ci.yml完整参考 .