在Jenkinsfile中,如果我在别名my-awesome-lib
下安装了Jenkins shared library,则可以使用以下语法将其包括在内:
@Library('my-awesome-lib')
import ...
但是如何从Jenkins script console引用库?
最佳答案
您可以从脚本控制台引用库对象,如下所示:
// get Jenkins instance
Jenkins jenkins = Jenkins.getInstance()
// get Jenkins Global Libraries
def globalLibraries = jenkins.getDescriptor("org.jenkinsci.plugins.workflow.libs.GlobalLibraries")
globalLibraries.getLibraries()
但是使用共享库的代码并非易事,甚至可能是不可能的。
在继续上面的代码时,假设您执行了以下操作:
def lib = globalLibraries[0]
获取检索器:
def ret = lib.getRetriever()
那么您需要检索源代码,但是为了调用retrieve(),您需要一些脚本控制台中没有的对象:
/**
* Obtains library sources.
* @param name the {@link LibraryConfiguration#getName}
* @param version the version of the library, such as from {@link LibraryConfiguration#getDefaultVersion} or an override
* @param target a directory in which to check out sources; should create {@code src/**}{@code /*.groovy} and/or {@code vars/*.groovy}, and optionally also {@code resources/}
* @param run a build which will use the library
* @param listener a way to report progress
* @throws Exception if there is any problem (use {@link AbortException} for user errors)
*/
public abstract void retrieve(@Nonnull String name, @Nonnull String version, @Nonnull FilePath target, @Nonnull Run<?,?> run, @Nonnull TaskListener listener) throws Exception;
因此,这样做可能会有一些骇人听闻的方法,但IMO并不值得。
关于jenkins - 如何在Jenkins脚本控制台中包含共享库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53636109/