【DevOps工具篇】Jenkins的Pipeline(流水线)和Shared Library(共通库)

2020-12-20T15:36:10+08:00 | 5分钟阅读 | 更新于 2020-12-20T15:36:10+08:00

Macro Zhao

【DevOps工具篇】Jenkins的Pipeline(流水线)和Shared Library(共通库)

@[TOC]

推荐超级课程:

Pipeline流水线

在 Jenkins 中,有许多项目类型:

  • Maven,
  • 流水线项目,
  • 外部作业,
  • 多配置项目文件夹
  • 多分支
  • 组织文件夹。

然而,最常用的流水线类型是单一流水线和多分支流水线。自由风格的项目很少使用。
那么什么是自由风格流水线呢?自由风格是一个简单的项目,您可以配置一切,Jenkins 将构建您的项目,您可以使用任何 SCM(源代码管理)。如果您想部署什么东西,想执行什么操作。然而,大多数流水线都是基于 CI/CD 流水线项目的。
它基本上在代理上运行。代理基本上是执行您所有步骤的执行器。我将向您展示一些代理以及流水线,这只适用于您 github 的单个分支。重新定位,假设您有一个产品

什么是单一流水线?

Jenkins 中的单一流水线旨在构建、测试和部署一个特定的应用程序或项目。让我们来看看要点和优点

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

什么是多分支流水线:

当您有多个软件项目分支或版本,并且您希望独立地为每个分支自动化 CI/CD 过程时,使用多分支流水线

  1. 用例:对于具有多个开发分支(例如,功能分支、开发、登台、生产)的大型项目,这非常完美。
  2. 配置:您配置一个单一的多分支流水线作业,它自动检测并管理您源代码仓库中的分支。
  3. 优点:同时为各种分支启用自动化。它有助于确保每个分支分别进行测试和部署,保持代码质量和稳定性。
    这是单一流水线配置的样子


让我们在多分支上创建流水线

  1. 插入显示名称然后分支源凭据。

  2. 复制 Github URL 并推送到您的 IDE

转到您的仓库查看代码

将代码复制并粘贴到您的流水线凭据中

确保您的 Github 凭据已验证

  1. 策略-所有分支,
  2. 2.发现拉取请求-当前请求,
  3. 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)  
              }  
          }  
            
      }  
  }  
   
}

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee