linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
  • Ansible

    • Ansible: 基本操作
    • Ansible: 安装
    • Ansible: 简介
    • YAML: 文件格式
    • Playbook

      • Playbook: 介绍
      • Playbook: 操作
    • 模块

      • Yum模块常用参数
    • 实战

      • Ansible 实战
  • Anaconda

    • Anaconda命令
  • Iptables

    • Iptable: 防火墙
    • iptables 用法
  • Systemd

    • 系统服务配置
    • 系统服务启动文件
    • 性能优化

      • Linux 系统监控
      • Linux 系统性能优化
      • Linux 系统故障诊断
      • Linux 系统日志管理
  • Network

    • 用一张图解释 8 种流行的网络协议
    • 反子网掩码
    • 交换机端口模式
    • eNSP 软件
    • 华为交换机配置命令
    • eNSP静态路由实验
  • Commands

    • 命令别名:alias
    • 多类型资源统计工具: dstat
    • history配置
    • unzip命令
    • Linux用户到期登录时间和随机密码
    • 常用 Command
    • ssh

      • ssh-keygen
      • linux ssh命令
  • CI/CD

    • Jenkins CI/CD 管道
  • Kubernetes

    • Docker系列学习

      • 01. 什么是Docker
      • 02. Docker安装
      • 03. 使用Docker镜像
      • 04. 利用commit理解镜像构成
      • 05. 操作Docker容器
      • 06. 使用Dockerfile定制镜像
      • 07. Dockerfile指令详解
      • 08. Dockerfile多阶段创建
      • 09. 访问仓库
      • 10. 修改docker的启动项
      • 11. Nexus3.x的私有仓库
      • 12. docker-hub加速器
      • 13. 数据管理
      • 14. 使用网络
  • Shell编程

    • Shell 编程基础
    • Shell 脚本执行消耗的时间
    • Shell 自动生成简介

Jenkins CI/CD 管道

mRHW8S

今天,我们将从我们的第一个 CI/CD 工具 Jenkins 开始。我们将介绍该设置的含义、功能和基本要素。

什么是詹金斯?

Jenkins 是一款智能工具,帮助开发人员在 CI/CD 管道中轻松、一致地构建、测试和启动他们的代码软件。它是关键的开源自动化工具,对于 DevOps 领域和构建强大的 CI/CD 管道至关重要。它使开发人员能够一致地构建、验证和发布他们的软件产品。 Jenkins 是 CI/CD 领域中最有影响力的工具之一,提供了促进分布式构建的主从架构。

主节点充当协调器,监督 GUI 操作和 API 访问点,而代理(可互换地称为工作节点或从节点)执行实际工作负载。从本质上讲,Jenkins 是基石。简化软件开发和部署流程,提高可靠性,并加快交付高质量的软件解决方案。

将其视为指挥软件变更流程的交通警察。它通过协调软件团队不同部分的工作来确保一切顺利进行。它是开发人员的首选帮手,让他们的生活更轻松,软件更好。

安装和设置

我们要做的第一件事是通过 Docker 容器设置 Jenkins。我们将使其变得简单,以便我们可以继续讨论 Jenkins 的基本部分。在我们开始处理之前,请确保在本地主机上安装 docker。

  1. 让我们获取官方 Jenkins 镜像并启动 Jenkins 服务器。通过您的 IDE 托管它。
docker pull jenkins/jenkins$ docker run -d -p 8080:8080 -v jenkins_volume:/var/jenkins_home — name my_jenkins jenkins/jenkins

在继续之前,让我分解一下上面在 Docker 容器中设置 Jenkins 的命令:

  • docker run :此命令启动容器。
  • -d :它以分离模式运行,这意味着您不会直接看到任何日志。
  • -p 8080:8080 :该行导出一个端口供外部访问。
  • -v :“v”表示卷,所有 Jenkins 文件都存储在其中。此步骤至关重要,因为如果没有它,如果容器终止或遇到问题,您的配置和设置可能会丢失。有关 Docker 卷的更多详细信息,请参阅 Docker 卷文档。
  • jenkins_volume :这指向本地主机上的目录。
  • :/var/jenkins_home :它链接到 Docker 容器内的目录。
  • --name my_jenkins :这是一个可选的容器名称,但为容器提供名称被认为是一个很好的做法。
  • jenkins/jenkins :最后,这表示图像的名称。

设置完成后,如果您打开 Web 浏览器并导航到 localhost:8080,您应该会看到预期的界面。

您需要密码才能登录 Jenkins。 Jenkins 通过启动服务器提供初始密码。这可以找到:

  • 检查日志 → docker log [容器名称] 或
  • 与容器交互并在给定路径 /var/jenkins_home/secrets/initialAdminPassword 下查看

我会用第二种方式

#this is my initial password$ docker exec my_jenkins cat/var/jenkins_home/secrets/initialAdminPassword7805a2621fee4388bbc77e00b5655ad7

然后单击继续并下一步安装首选插件。这将需要几分钟的时间。安装插件后,您应该会看到管理面板,您可以在其中设置您的名称和密码。

Create-Admin-User

设置您的用户名、密码,然后保存以继续。下一个屏幕应显示您的 Jenkins 仪表板。

Jenkins_Dashboard

探索 Jenkins 管道

因此,我们将讨论有多少可用的管道。在Jenkins中,有很多项目:Maven、Projects Pipeline、External Job、多配置Project Folder Multi、Branch和Organization文件夹。

然而,最常用的管道类型是单管道和多分支管道。很少使用自由式项目。

那么什么是freestyle pipeline呢? Freestyle 是一个简单的项目,您可以在其中配置所有内容,Jenkins 将构建您的项目,并且您可以使用任何 SCM(源代码管理)。如果你想部署某些东西,你就想执行某些东西。然而,大多数管道都是基于 CI/CD 管道项目。

它基本上运行在代理上。代理基本上是执行者,执行您的所有步骤。我将向您展示一些代理和管道,这仅适用于 github 的单个分支。重新定位,假设你有一个产品

什么是单一管道

单一管道

单管道示例

Jenkins 中的单个管道旨在构建、测试和部署一个特定的应用程序或项目。让我们回顾一下要点和优势

  1. 使用案例:当您有一个软件项目想要自动化构建和部署过程时,这是理想的选择。
  2. 配置:您在 Jenkins 中创建一个管道作业,它处理该单个项目的整个生命周期。
  3. 优点:对于小型项目而言,易于设置和管理。它简化了单个代码库的自动化。

什么是多分支管道

多分支管道

多分支管道示例

当您的软件项目有多个分支或版本,并且您希望独立地自动化每个分支的 CI/CD 流程时,请使用多分支管道。

  1. 用例:它非常适合具有多个开发分支(例如功能分支、开发、测试、登台、生产)的大型项目。
  2. 配置:您配置单个多分支管道作业,它会自动检测和管理源代码存储库中的分支。
  3. 优点:同时实现各个分支机构的自动化。它有助于确保每个分支都经过单独测试和部署,从而保持代码质量和稳定性。

Create-Project

Project-Setting

这就是单管道配置的样子

在多分支上创建管道

多分支创建管道

  1. 插入显示名称,然后插入分支源凭据。
  2. 复制 Github URL 并推送到您的 IDE

github配置

前往您的存储库查看代码

See-Report-Code

将代码复制并粘贴到您的管道凭据中

Jenkins-Credential

确保您的 Github 凭据经过验证

Github-Credential

1.策略-所有分支 2.发现拉取请求-当前请求 3.删除不需要的分叉部分

Jenkins-Credential

属性策略-所有分支→构建配置:Mode-Jenkinsfile

Jenkins-Credential

确保旧文件的保留天数为 3,然后旧项目的最大保留天数为 5-7 天。

之后您的管道就创建好了。我们将去扫描存储库来查看我们的状态。

Jenkins-Credential

然后我们将创建新的分支。

Create-New-Branch

我们将使用 git 版本控制将代码推送到新分支

因此,如果您返回 Jenkins 存储库,您将单击扫描存储库,您将看到生产存储库。

see-devops

在单击“扫描存储库”之前

see-devops

刷新扫描存储库屏幕后

refresh-devops

输入您的分支并查看它正在构建(#1 代表正在构建的分支)

在构建分支时,我们还可以在管道内创建 2 个或更多阶段。

NsDHuL77mxzFErCw

让我们对生产分支进行更改并推送它。

确保我们的更改位于我们的存储库中。让我们访问我们的 Github。

_DB6a2AgClnHk2oLTF8gcA

前往分行。点击生产

316r2p8Uuk9Y7g8f5r2ZiA

这里是!

返回 Jenkins 并单击“立即构建”部分以查看分支生产。

W94G4QW-D4Caft_eoq8djg

部署更改之前

L-KKLsiZhsTHk0cO0lgq1Q

部署更改后

批准更改后,我们将发出拉取请求以将更改合并到我们的主分支上。

Lz4VdFpXgIK1sxGxAQIfbQ

转到打开拉取请求

JSIs9NtaztZwSMY2HA9-nw

确认合并

lVobtboutKhz1A8XQY-4cw

sYgw5D0apjFhPF-I6DjDOQ

我们确认这些更改已安装在我们的主分支中。

  • 前 SZsCCg7kCEz1tnX5NGsA-A

  • 后 Qx6weEba11dJ2iysb9mr_A

多分支管道的目的是让每个人都有自己的分支或者可能像一个团队。一群人或者一个团队可以做一些更改,或者他们可以对他们的更改进行单独的测试,而不是每次都创建一个 PR,然后将这些更改合并到主分支,然后启动单个分支管道。您还可以进行多分支并拥有一个单独的分支并测试您的更改。不会影响其他分支。

单分支管道 VS 多分支管道 - 结论

Jenkins 中单分支管道和多分支管道的主要区别在于它们的分支处理能力。单分支管道仅限于从单个分支构建更改,这使得它们不太适合具有多个正在进行的分支的存储库。另一方面,多分支管道提供了动态且高效的解决方案。它们自动检测并构建 GitHub 存储库中所有分支的更改,并根据需要为每个分支提供单独的 CI/CD 管道。这种多功能性简化了开发流程,使管理和测试跨不同分支的代码更改变得更加容易,所有这些都在一个统一的管道中进行。借助多分支管道,您可以通过有效处理多个分支及其各自的 CI/CD 要求来增强 Jenkins 工作流程。

总而言之,Jenkins 是软件开发领域的工厂经理。它是一个有助于自动化和简化构建、测试和部署代码过程的工具。但当你深入研究它的管道时,真正的魔力就会发生。这些管道就像工厂中的装配线,您可以在其中定义软件旅程的每一步,从编写代码到将其交付给用户。掌握 Jenkins 管道对于 DevOps 至关重要,因为它允许您创建组织良好的自动化工作流程,使您的软件开发过程更快、更可靠且不易出错。这是保持现代开发团队顺利运行的秘诀。因此,如果您正在深入研究 DevOps,Jenkins 及其管道将是您这段激动人心的旅程中最好的朋友。

4hdNzxtaGy-mmfdnQlP8ww