首页 > 解决方案 > 如何在共享 jenkins 库中引用 shell 脚本

问题描述

我有一个 Jenkinsfile,它使用共享的 Jenkins 库并在下面定义的 groovy 文件中调用方法。

shared-jenkins-lib
    |
    |-----------vars
    |            |-------pipeline_script.groovy
    |
    |-----------scripts
                 |-------test_script.groovy

这是库的结构,并且pipeline_script.groovy有一个test从 jenkinsfile 调用的方法。

def test(){
    dockerArgs = "--entrypoint /bin/bash"
    dockerCommand = "`../scripts/test_script.sh`"
    dockerOut = sh (script: "docker run ${dockerArgs} ${image} ${dockerCommand}", returnStatus: true)
}

我参考test_script.sh但似乎在该位置找不到文件。我在 docker 中运行 jenkins。引用脚本的正确方法是什么

标签: dockerjenkinsjenkins-pipeline

解决方案


如共享库插件的文档中所述,库 repo 具有非常特定的结构。repo 的根目录可以有以下 3 个文件夹:

+- src                     # Groovy source files
|   +- org
|       +- foo
|           +- Bar.groovy  # for org.foo.Bar class
+- vars
|   +- foo.groovy          # for global 'foo' variable
|   +- foo.txt             # help for 'foo' variable
+- resources               # resource files (external libraries only)
|   +- org
|       +- foo
|           +- bar.json    # static helper data for org.foo.Bar

如果你想从你的库方法中引用一个帮助代码/数据,你应该把它放在resources目录中,然后你可以使用libraryResource步骤检索它,也在文档中描述。


推荐阅读