如何在jenkins中实现共享库,而无需在“Manage Jenkins”中配置“Global Pipeline Libraries”?

lmyy7pcs  于 2023-10-17  发布在  Jenkins
关注(0)|答案(4)|浏览(131)

由于我无法访问组织中的“Manage Jenkins”菜单,因此无法在“Manage Jenkins”中的“Global Pipeline Libraries”中配置我的共享库。
有没有其他方法可以实现这一点,而不需要在Manage Jenkins中进行配置?
(或)
是否可以通过管道脚本配置“全局管道库”部分,而不考虑访问权限?
如果可能的话,请你在答案中分享一些代码片段。

o8x7eapl

o8x7eapl1#

无需在“Manage Jenkins”中进行配置。我们可以在Pipeline脚本中使用“LibraryIdentifier”来加载jenkins构建中的库。

aydmsdu9

aydmsdu92#

  • 加载库 *

你可以像这样从源代码控制(如git)加载库:

def myLib= library(
    identifier: 'myLib@master', retriever: modernSCM
    (
        [
            $class: 'GitSCMSource',
            remote: 'https://bitbucket.org/shaybc/commonlib.git',
            credentialsId: 'bitbucketCreds'
        ]
    )
)
  • 库中的Groovy类 *

假设这是groovy类:

package my.domain

class Tester
{
    public static String staticTest()
    {
        return "this is from a static method";
    }

    public String test()
    {
        return "this is from an instance method";
    }
}
  • 调用脚本管道中的方法 *

然后你像这样调用一个静态方法:

myLib.my.domain.Tester.staticTest();

和一个像这样的示例方法:

// call the constructor (you can also call a constructor with parameters)
def tester = myLib.my.domain.Tester.new();

// call your instance method
tester.test();
  • 阅读更多:*

1.动态加载库

  1. the difference between @Library annotation and library step
  2. private shared library by example
zvms9eto

zvms9eto3#

正如上面的一些答案中提到的,您可以在运行时使用库标识符加载库,或者您也可以在尝试运行的Jenkins作业的文件夹级别配置库。在大多数情况下,开发人员无法获得Jenkins的管理员访问权限。但是,他们可以访问和更新文件夹级别的配置。你可以检查你是否有这些特权。在运行时为所有管道脚本加载库会更方便。

b4lqfgs4

b4lqfgs44#

我正在加载一个共享库,实际上只是vars/目录中的东西,使用与其他答案相同的机制,但我们可以使其更简洁(thanks to this answer):

library(identifier: "@some-branch", retriever: legacySCM(scm))

通常你会在@之前放置某种标识符,但在这里它没有任何用处,因为我们导入的所有东西(从vars/导入的groovy文件)都创建了自己的全局变量,以文件名命名。所以我们可以省略这个标识符,只指定(当前repo的)分支。
只要你的管道文件是从SCM加载的,你也可以让retriever参数很短。我在其他地方看到过modernSCM(),但对我来说不起作用,而legacySCM()却起作用。
注意:我们使用的是一个函数调用library(),而不是注解@Library()。它们似乎是不同的/不可互换的。

相关问题