编程语言
首页 > 编程语言> > 如何使用共享库改进 Jenkins 构建

如何使用共享库改进 Jenkins 构建

作者:互联网

先决条件
安装詹金斯
Linux
Jenkins - 一个开源自动化服务器,使世界各地的开发人员能够可靠地构建、测试和……
www.jenkins.io

什么是共享库?
Jenkins 中的共享库是可重用的 Groovy 脚本集合,可供多个 Jenkins 作业使用。这允许您在不同作业之间共享代码和功能,这可以使您的构建更高效且更易于维护。

为了理解共享库的概念,让我们考虑一个实时示例。想象一下,您有多个 Jenkins 管道,需要一组通用的函数来与版本控制系统(例如 Git)进行交互。您可以创建一个封装必要的 Git 操作的共享库,而不是在每个管道中重复与 Git 相关的代码。

共享库的文件夹结构

共享库中使用的文件夹结构
该src目录的结构类似于标准 Java 项目。这意味着您可以使用该import语句从目录中的其他目录导入类src。
该vars目录是一个特殊目录,包含共享库中定义的全局变量。可以从导入共享库的任何 Jenkins 作业访问这些变量。
该resources目录是一个常规目录,可以包含任何类型的文件。但是,它通常用于存储共享库使用的静态资源。
在 Jenkins 中配置共享库的步骤
在任何源代码管理工具中创建存储库。
这里我们使用的是GitHub。


克隆新创建的存储库
git 克隆 https://github.com/tejashreeSalvi/shared-lib.git克隆https://github.com/tejashreeSalvi/shared-lib.git

创建文件夹结构
cd share-lib

# 创建 master 分支(可选)
 gitbranch master
git checkout master

# 创建 vars 目录
mkdir vars
cd vars
我们已经创建了vars要在其中编写可重用函数的目录。

让我们考虑一个实时示例。想象一下,您有多个 Jenkins 管道,需要一组通用的函数来与版本控制系统(例如 Git)进行交互。您可以创建一个封装必要的 Git 操作的共享库,而不是在每个管道中重复与 Git 相关的代码。

创建您的第一个共享库以签出 scm。
checkoutCode.groovy

def call(String repoUrl, Stringbranch){字符串repoUrl,字符串分支){
   defworkingDir = “ ${env.WORKSPACE} ”
    sh “git克隆${repoUrl}  ${workingDir} ”
    sh “git checkout ${branch} ”
   返回workingDir
}
该call方法是 Jenkins 共享库中的一个特殊方法,允许从 Jenkins 管道直接调用该函数。
${env.WORKSPACE}分配 Jenkins 环境变量WORKSPACE
sh用于执行 shell 命令以将 中的存储库克隆workingDir并签出(切换)到指定的branch.
该路径workingDir返回到 Jenkins Pipeline。
可以在导入和使用共享库的 Jenkins 管道中重用此功能。

将您的更改提交到 Git 存储库。
git 添加 . 添加。
git commit  - m“添加了 checkout scm 功能”
git Push origin master

代码已成功推送并可在远程存储库中使用。


在 Jenkins 中配置全局管道库(共享库)
登录詹金斯。

前往Manage Jenkins→Configure System


下一步,搜索Global Pipeline Libraries并配置参数。


输入共享库名称:shared-lib
设置默认分支:(master如果导入共享库时没有指定分支,Jenkins将考虑默认分支)。

3. 配置我们为共享库创建的存储库:https://github.com/tejashreeSalvi/shared-lib.git

Shared-lib,Jenkins 共享库,下载shared-lib的源码_GitHub_酷徒
詹金斯共享库。通过在 GitHub 上创建帐户来为 tejashreeSalvi/shared-lib 开发做出贡献。
github.com

4. 如果您的存储库是私有的,请配置凭据

5. 单击Save

哇!我们已经完成了配置部分。

让我们在管道中使用共享库
为了导入库,我们使用@Library注释并指定 Jenkins 全局配置中定义的库名称。

创建 Jenkins 管道
转到New Item 并给出合适的管道名称first-shared-lib-pipeline和类型pipeline


点击OK

用于导入共享库的脚本
转到Pipeline Script→ 添加脚本并Save

@Library( "shared-lib@master" ) _

 pipeline {
    代理任何
    阶段 {
        stage( 'Code Checkout' ) {
            步骤 {
                script {
                  defworkingDir =  checkoutCode ( "https://github.com/tejashreeSalvi/django-todo- CICD.git" ,         "开发" )     echo
                  $workingDir
                } }
            } } }


@Library("shared-lib@master") _:这将在“master”分支导入名为“shared-lib”的共享库。该库可供 Jenkins 管道使用。
2. def workingDir = checkoutCode("https://github.com/tejashreeSalvi/django-todo-cicd.git", "develop"):此行checkoutCode从共享库调用函数,并传递存储库 URL 和分支名称。

因此,您可以创建多个管道并使用checkoutCode共享库中的函数来签出 scm。而不是在所有 Jenkins 管道中一次又一次地编写代码块。


建立管道。
前往first-shared-lib-pipeline→ 单击Build Now


将触发构建。检查构建的控制台输出。


仔细观察,你会发现共享库已经成功加载了。


通过使用共享库并调用该checkoutCode函数,该管道脚本通过克隆指定存储库并切换到分支来执行代码签出操作develop。

标签:AWS,编程,运营
来源: