你如何使用 Jenkins libraryResource 从资源中读取文件?

T.N*_*sen 7 jenkins jenkins-pipeline

我无法libraryResource使用 Jenkins 加载资源。我发现了很多人libraryResource用来加载资源的例子,但没有人遇到我遇到的特定错误,所以我认为我错过了一些东西,但我不知道那可能是什么。

我正在尝试加载一个几乎所有作业都会重用的 python 脚本。我已经放置了一个简单的测试脚本,resouces/org/foo/test.py据我所知,我应该能够阅读使用:

libraryResource('org/foo/test.py')
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

hudson.AbortException: 找不到这样的库资源 org/foo/test.py。

我使用从 SCM 加载的管道脚本,该脚本在 jenkins 的项目配置中配置。这是从中加载管道脚本的 git 存储库的结构。

-src
  -org
    -shared
      +Utilities.groovy
-jobs
  -nighly
    +nightly.groovy
-resources
  -org
   -foo
    +test.py
Run Code Online (Sandbox Code Playgroud)

Utitilies.groovy在 nightly.groovy 的根目录加载using 共享库

libraryResource('org/foo/test.py')
Run Code Online (Sandbox Code Playgroud)

我试过的:

  • 运行libraryResource阶段外,在阶段和节点
  • scm运行前检查libraryResource
  • 不同的路径foo/test.pyresources/org/foo/test.py

根据 checkout scm 的输出,resources/org/foo/test.py正在获取包含的最新提交,它位于代理的作业根目录中。

我没有想法,我感谢您提供的任何帮助/建议。我真的很想避免将这个脚本提交给所有使用它的项目,因为它只被 Jenkins 使用。

Igw*_*alu 7

您缺少的是libraryResourceAPI使用变得适用的上下文/场景。

libraryResource: 从共享库中加载资源文件 从共享库中 读取资源并以纯字符串形式返回其内容。

因此,如果您已经配置了共享库,那么您可以共享库中使用它来读取位于同一共享库目录中的资源。libraryResource resource

希望能更好地解决问题。

  • 使用库 **A** 中提供的“step”间接将所需资源获取到您的 _pipeline_ 中,并在您的 _pipeline_ 中使用获取的资源作为参数来调用库 **B** 中的“step”。 (2认同)
  • 文档内容为_加载资源**文件**..._。因此,您必须依次加载文件夹文件。 (2认同)