【DevOps工具篇】Jenkins的Pipeline(流水线)和Shared Library(共通库)
@[TOC]
推荐超级课程:
Pipeline流水线
在 Jenkins 中,有许多项目类型:
- Maven,
- 流水线项目,
- 外部作业,
- 多配置项目文件夹
- 多分支
- 组织文件夹。
然而,最常用的流水线类型是单一流水线和多分支流水线。自由风格的项目很少使用。
那么什么是自由风格流水线呢?自由风格是一个简单的项目,您可以配置一切,Jenkins 将构建您的项目,您可以使用任何 SCM(源代码管理)。如果您想部署什么东西,想执行什么操作。然而,大多数流水线都是基于 CI/CD 流水线项目的。
它基本上在代理上运行。代理基本上是执行您所有步骤的执行器。我将向您展示一些代理以及流水线,这只适用于您 github 的单个分支。重新定位,假设您有一个产品
什么是单一流水线?
Jenkins 中的单一流水线旨在构建、测试和部署一个特定的应用程序或项目。让我们来看看要点和优点
- 用例:当您有一个想要自动化构建和部署过程的单一软件项目时,这是理想的。
- 配置:您在 Jenkins 中创建一个流水线作业,它处理该单一项目的整个生命周期。
- 优点:对于较小的项目,设置和管理简单。它简化了单一代码库的自动化。
什么是多分支流水线:
当您有多个软件项目分支或版本,并且您希望独立地为每个分支自动化 CI/CD 过程时,使用多分支流水线。
- 用例:对于具有多个开发分支(例如,功能分支、开发、登台、生产)的大型项目,这非常完美。
- 配置:您配置一个单一的多分支流水线作业,它自动检测并管理您源代码仓库中的分支。
- 优点:同时为各种分支启用自动化。它有助于确保每个分支分别进行测试和部署,保持代码质量和稳定性。
这是单一流水线配置的样子
让我们在多分支上创建流水线
插入显示名称然后分支源凭据。
复制 Github URL 并推送到您的 IDE
转到您的仓库查看代码
将代码复制并粘贴到您的流水线凭据中
确保您的 Github 凭据已验证
- 策略-所有分支,
- 2.发现拉取请求-当前请求,
- 3.删除分支部分不必要
属性策略-所有分支→构建配置:模式-Jenkinfile
确保保持旧文件的 天数为 3,然后保持旧项目的最大数量为 5-7 天。
之后您的流水线就创建了。我们将转到扫描仓库以查看我们的状态。
然后我们将创建新分支。
我们将使用 Git 版本控制将代码推送到新分支
所以,如果您回到 Jenkins 仓库,您将点击扫描仓库,您将看到生产仓库。
在您点击扫描仓库之前
在您刷新扫描仓库屏幕之后
输入您的分支并看到它正在构建(#1 表示正在构建的分支)
我们还可以在构建分支时在流水线中创建两个或更多阶段。
让我们对生产分支进行更改并推送到仓库。
为了确保我们的更改在仓库中,让我们转到我们的 Github。
转到分支。点击生产
就是这里!
回到 Jenkins 并点击立即构建部分以查看生产分支。
部署更改之前
部署更改之后
在我们批准更改后,我们将转到拉取请求以将更改合并到我们的主分支。
转到打开的拉取请求
确认合并
我们确认更改已安装在我们的主分支中。
之前
之后
多分支流水线的目的是让每个人都拥有自己的分支,或者可能像是一个团队的小组。一组人员或团队可以进行一些更改,或者他们可以为他们的更改进行单独的测试,而不是每次都创建一个,然后提出一个 PR 并将这些更改合并到主分支,然后启动单一流水线。你也可以进行多分支,并拥有一个单独的分支来测试你的更改。它不会影响其他分支。
单分支与多分支流水线对比
Jenkins 中单分支和多分支流水线之间的主要区别在于它们的分支处理能力。单分支流水线仅限于构建来自单个分支的更改,这使得它们不太适合具有多个进行中分支的仓库。另一方面,多分支流水线提供了一个动态且高效的解决方案。它们自动检测并构建来自 GitHub 仓库内所有分支的更改,根据需要为每个分支提供单独的 CI/CD 流水线。这种灵活性简化了开发过程,使得管理和测试各种分支上的代码更改变得更加容易,所有这些都在一个统一的流水线中完成。通过多分支流水线,你可以通过高效地处理多个分支及其各自的 CI/CD 需求来提升你的 Jenkins 工作流程。
Share Library共通库
在 Jenkins 中,共享库是一种存储常用代码(可重用代码)的方式,如脚本或函数,可以被不同的 Jenkins 流水线使用。您可以在多个流水线中重复编写相同的代码,而是可以创建一个共享库,在所有需要它的流水线中使用它。这可以使您的代码更有组织性,更易于维护。
优点
- 流水线标准化
- 减少代码重复
- 新应用、项目或团队的轻松加入
- 修复共享或公共代码问题的一个地方
- 代码维护
- 减少错误风险
创建和使用 Jenkins 共享库
- 创建共享库存储库
- 首先创建一个 Git 存储库来存储您的共享库代码。此存储库将包含定义可重用函数、类和其他流水线组件的 Groovy 脚本。
- 定义目录结构
<repository-root>
|-- src/
| |-- org/
| |-- mylibrary/
| |-- MyFunctions.groovy
|-- vars/
| |-- myCustomStep.groovy
|-- resources/
| |-- myResource.txt
|-- README.md
src/: 此目录用于存储可以在流水线内使用的 Groovy 类。
vars/: 此目录用于定义可以直接在 Jenkins 流水线中使用的自定义步骤。
resources/: 您可以将库可能需要的任何资源(如文本文件)放在这里。
编写共享库代码
- 在 src/ 和 vars/ 目录中的适当 Groovy 文件中编写您的可重用流水线逻辑。
- 代码在此处提供:jenkins-shared-library-sample.git
- 配置 Jenkins
- 转到“管理 Jenkins”>“系统设置”。
- 在“全局流水线库”部分,添加您的共享库:
- 名称:为您的库命名,如
shared_lib
。 - 默认版本:指定您库的默认版本。
- 获取方法:选择“现代 SCM”,并提供您的 Git 存储库 URL 和分支到
master
。 - 隐式加载:如果您希望流水线自动使用库而不显式导入,请启用此选项。
- 在流水线中使用共享库:
- 创建一个新的流水线作业
- 使用示例 hello world
@Library('shared_lib') _
pipeline {
agent any
stages {
stage('Hello') {
steps {
welcome("devops class")
}
}
stage('calculation'){
steps{
script{
calculator.add(25,75)
calculator.mul(25,75)
}
}
}
}
}