ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2023-07-06 12:16:32  阅读:209  来源: 互联网

标签:AWS 编程 运营


先决条件
安装詹金斯
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,编程,运营
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有