CI/CD 管道实施或持续集成/持续部署是现代 DevOps 环境的支柱。它通过自动化应用程序的构建、测试和部署来弥合开发和运营团队之间的差距。在此博客中,我们将了解什么是 CI/CD 管道及其工作原理。
在进入 CI/CD 管道之前,让我们先了解 DevOps。
DevOps 是一种软件开发方法,涉及在整个开发生命周期中对软件进行持续开发、持续测试、持续集成、持续部署和持续监控。这是所有顶级公司都采用的开发高质量软件和缩短开发生命周期的过程,从而提高客户满意度,这是每个公司都想要的。
如果不了解 DevOps 的生命周期,您对 DevOps 的理解是不完整的。现在让我们看看 DevOps 生命周期并探讨它与软件开发阶段的关系。
CI 代表持续集成,CD 代表持续交付/持续部署。您可以将其视为类似于软件开发生命周期的过程。
让我们看看它是如何工作的。
上面的管道是一个逻辑演示,说明软件在交付给客户之前或投入生产之前将如何沿着此生命周期的各个阶段移动。
让我们来看一个 CI/CD 管道的场景。假设您要构建一个 Web 应用程序,该应用程序将部署在实时 Web 服务器上。您将有一组开发人员负责编写代码,他们将进一步构建 Web 应用程序。现在,当开发团队将此代码提交到版本控制系统(如 git、svn)时。接下来,它会进入构建阶段,这是管道的第一阶段,开发人员在此阶段输入他们的代码,然后代码再次进入版本控制系统并带有适当的版本标签。
假设我们有 Java 代码,它需要在执行前进行编译。通过版本控制阶段,它再次进入编译阶段。您从存储库的各个分支获得该代码的所有功能,这些分支合并它们并最终使用编译器对其进行编译。这整个过程称为构建阶段。
构建阶段结束后,您将进入测试阶段。在这个阶段,我们有各种各样的测试。其中之一是单元测试(在其中测试软件的块/单元或其完整性测试)。
测试完成后,您将进入部署阶段,将其部署到暂存或测试服务器中。在这里,您可以查看代码,也可以在模拟器中查看应用程序。
成功部署代码后,您可以运行另一个健全性测试。如果一切都被接受,那么它就可以部署到生产环境中。
同时,在每一步中,如果有错误,您可以发邮件给开发团队,以便他们进行修复。然后他们会将其推送到版本控制系统中,然后返回到管道中。
再一次,如果在测试期间报告了任何错误,反馈将再次发送给开发团队,他们在那里修复它,并在需要时重复该过程。
这个生命周期一直持续到我们获得可以部署到我们测量和验证代码的生产服务器的代码/产品。
我们现在了解了 CI/CD 管道及其工作原理;现在,我们将继续了解 Jenkins 是什么以及我们如何使用 Jenkins 部署演示代码并自动化整个过程。
终极 CI 工具及其在 CI/CD 管道中的重要性
我们的任务是自动化整个过程,从开发团队给我们代码并提交代码到我们将其投入生产。我们将自动化管道,以便在 DevOps/自动化模式下实现整个软件开发生命周期。为此,我们需要自动化工具。
Jenkins为我们提供了各种接口和工具,以便将整个过程自动化。
我们有一个 Git 存储库,开发团队将在其中提交代码。然后,Jenkins 从那里接管,这是一个前端工具,您可以在其中定义整个工作或任务。我们的工作是确保该特定工具或特定应用程序的持续集成和交付过程。
Jenkins 从 Git 中提取代码,然后 Jenkins 将其移至提交阶段,代码从每个分支提交。构建 阶段是我们编译代码的地方。如果是Java代码,我们在Jenkins中使用maven等工具,然后编译该代码,可以部署运行一系列测试。这些测试用例再次由 Jenkins 监督。
然后,它移动到登台服务器以使用Docker进行部署。经过一系列单元测试或健全性测试后,它会进入生产阶段。
Docker就像一个虚拟环境,我们可以在其中创建服务器。创建整个服务器并部署我们要测试的工件需要几秒钟。但是这里出现了问题:
我们为什么要使用 Docker?
正如我们之前所说,您可以在几秒钟内运行整个集群。我们有一个图像存储注册表,您可以在其中构建图像并永久存储它。您可以在任何可以自我复制的环境中随时使用它。
动手实践:使用 Docker 和 Jenkins 构建 CI/CD 管道
第 1 步:在 VM 中打开终端。使用这些命令启动 Jenkins 和 Docker:
systemctl start jenkins
systemctl enable jenkins
systemctl start docker
注意:sudo如果显示“权限错误”,请在命令前使用 。
第 2 步:在您指定的端口上打开 Jenkins。单击 “新建项目” 以创建作业。
第 3 步:选择一个 自由式项目并提供项目名称(这里我给出了 Job1),然后单击“确定”。
第 4 步:选择源代码管理并提供Git存储库。单击“应用并保存”按钮。
第 5 步:然后点击 Build->Select Execute Shell。
第 6 步:提供 shell 命令。在这里,它将构建存档文件以获取 war 文件。之后,它将获取已经拉取的代码,然后使用 maven 安装包。它只是安装依赖项并编译应用程序。
第 7 步:通过单击“新建项目”创建新 作业。
第 8 步:选择 自由式项目并提供项目名称(这里我给出了 Job2),然后单击确定。
第 9 步:选择源代码管理并提供Git存储库。单击“应用并保存”按钮。
第 10 步:然后点击 Build->Select Execute Shell。
第 11 步:提供 shell 命令。在这里它将开始集成阶段并 构建Docker 容器。
第 12 步:通过单击“新建项目”创建新 作业。
第 13 步:选择 自由式项目并提供项目名称(这里我给出了 Job3),然后单击确定。
第 14 步:选择源代码管理并提供Git存储库。单击“应用并保存”按钮。
第 15 步:然后点击 Build->Select Execute Shell。
第 16 步:提供 shell 命令。在这里它将检查 Docker 容器文件,然后将其部署到端口号 8180。单击“保存”按钮。
第 17 步:现在点击 Job1 -> Configure。
第 18 步:点击 Post-build Actions -> Build other projects。
第 19 步:提供要在 Job1(这里是 Job2)之后构建的项目名称,然后单击 Save。
第 20 步: 现在点击 Job2 -> Configure。
第 21 步:点击 Post-build Actions -> Build other projects。
第 22 步:提供要在 Job2(这里是 Job3)之后构建的项目名称,然后单击 Save。
第 23 步:现在我们将创建一个管道视图。单击“+”号。
第 24 步:选择 Build Pipeline View并提供视图名称(这里我提供了 CI CD Pipeline)。
第 25 步:选择initialJob(这里我提供了 Job1)并单击 OK。
第 26 步:单击 “运行” 按钮以启动 CI/CD 过程。
第 27 步:成功构建后打开localhost:8180/sample.text。它将运行该应用程序。
到目前为止,我们已经学习了如何使用 Docker 和 Jenkins 创建CI/CD 管道。DevOps 的目的是更快、更可靠地创建质量更好的软件,同时促进团队之间的沟通和协作。