Jenkins 共享库:仔细观察 [2022]

已发表: 2021-01-02

我们生活在一个微服务时代,在这个时代,当代应用程序被分解成可单独部署的组件 我们可以说,Jenkins 已经在用于部署微服务的领先的原始 CI/CD 工具中占据了一席之地。 与单体应用程序相比,部署单个微服务的管道有很多。

您可以使用软管作为代码来对 CI/CD 的整个过程进行编码。 像在应用程序开发中一样对待它。 您可以在使用它来部署您的应用程序之前发布您的管道代码并运行所有测试级别。

目录

什么是 Jenkins 共享库?

当我们说 CI/CD 作为一个符号时,我们需要模块化和重用。 您必须遵循 DRY 原则。 这就是 Jenkins 的共享库证明有用的地方。

Jenkins共享库是为版本控制系统包含一个标准管道代码想法,只需引用它就可以在任意数量的管道上使用。 多个团队可以为他们的管道使用相同的目录。

您可以将其与流行的编程目录进行比较。 编程创建了一个单独的指南,任何人都可以在导入代码时使用。

例如,如果您有十个来自 Java 的微服务管道,则对所有十个管道重复旧的创建过程。 此外,管道代码随着新服务的添加而被复制和粘贴。 如果要在旧的施工阶段更改某些参数,则需要在所有管道中手动调整它们。

在同一场景中,您将为旧建筑创建一个共享库。 对于所有管道,您所要做的就是参考旧的建筑代码库。 如果将来有任何旧更改,您只需要更新共享库图标即可。

阅读:有趣的 Jenkins 项目想法和主题

开始使用共享库

共享目录是很酷的文件(DSL + Groovy)的集合。 所有很酷的文件都必须在 git 存储库中。 本示例使用 Github 作为 git 存储库。 https://github.com/devopscube/jenkins-shared-library。 您可以复制此存储库以获取共享库基础结构。

共享库数据库包含以下卷结构:

詹金斯联合图书馆

| ____ 变量

| ____ 来源

| ____ 资源

变量

它包含您可以从管道调用的所有 WCL 代码。 它包含所有带有 .groovy 扩展名的目录文件。 .txt 文件也支持记录共享的库代码。 例如,如果你有一个名为maven-build 的文件。 Groovy,那么您将获得一个名为 maven-groovy.txt 的帮助文件。 您可以编写帮助文档来标记此文件中共享目录的属性。 可以从 <your-jenkins-url> / Pipeline Syntax / Global 页面查看帮助文件。

它是一个标准的 Java 源目录。 编译完所有文本后,它将被添加到类路径中。 在这里您可以添加一个非常酷的代码来扩展共享库代码。 您还可以使用 Import Manifest 导入现有的 Jenkins 类别和扩展。

在某些情况下,很酷的 DSL 硬件不够灵活,无法执行某些功能。 在这种情况下,您可以在 src 中编写自定义凹槽函数并在共享库代码中读取它们。

资源

您可以在此文件夹中管理软管所需的所有不必要文件。 例如,您可能需要一个通用 JSON 模板来在构建期间进行 API 调用。 您可以将此 JSON 模板保存在资源文件夹中,并通过 LibraryResource 函数在共享库中调用它。

必读:詹金斯在印度的薪水

共享全局库

根据您的使用情况,您可以在多个地方设置共享目录。 Jenkins 管理 » 系统配置 » 全局管道库。 您可以根据需要配置任意数量的目录。

这些库是通用的,因此您系统中的每个管道都可以使用这些库中实现的功能。

这些库被认为是“可靠的”。 您可以在 Java、Groovy、Jenkins 的内部 API、Jenkins 扩展或第三方目录中执行任何方法。 它允许您精确识别将不安全 API 折叠到可以从任何管道安全使用的高级信封的库。

请注意,任何可以向此 SCM 数据库支付佣金的人都可以无限制地访问 Jenkins。 您需要 Total / RunScripts 权限才能创建这些目录(此权限通常授予 Jenkins 管理员)。

报名参加世界顶尖大学的软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

文件夹级共享库

创建的所有文件夹都可以链接到共享目录。 此机制允许您为卷或子文件夹中的所有管道设置特定的目录范围。

基于文件夹的目录不被视为“受信任的”。 它在凹槽沙箱中运行,就像普通管道一样。

自动共享库

其他插件可能会添加一种在旅途中识别库的方法。 例如,“GitHub 组织文件夹”是 GitHub 分支源中提供的源插件。 它提供了一个组件,允许脚本使用不受信任的库,例如 github.com/orgname/reponame 减去任何添加的配置。 在这种情况下,将使用匿名设置从主分支加载指定的 GitHub 存储库。

检查库中的更改

如果您发现构建中包含不受信任的目录的错误,请单击重播链接并编辑一个或多个源文件以查看生成的版本是否按预期工作。 当您对结果感到满意时,单击“发布状态”页面上的差异链接并将差异应用于您的库和提交池。

(即使库请求的版本是分支而不是像书签这样的静态版本,重新激活的版本将使用与原始版本相同的版本,您无法拉回库资源。)

目前,它不为您提供受信任的库 Replay。 当前不支持在重播期间更改资源文件。

另请阅读:詹金斯面试问答

结论

以下是一些需要记住的重要事项:

  • 您必须使用 Groovy 来编写步骤或自定义函数。
  • 需要编写可以从管道调用的管道步骤。
  • 您需要在存储库的 vars 目录中创建一个文件,该文件将包含您的自定义步骤的名称。
  • def 调用方法应由您的步骤的参数实现。
  • 如果需要编写通用的 Groovy 代码,可以将其添加到 src。
  • 您还可以通过使用配置系统屏幕在 Jenkins 中集成共享库。

如果您有兴趣了解有关全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目和作业, IIIT-B 校友身份,实用的实践顶点项目和顶级公司的工作协助。

软件开发课程 | 掌握 Java、C、Python 等‎

立即申请软件工程硕士