如何避免Jenkins为可信共享管道中的调用请求进程内批准 太长,读不下去了

如何避免Jenkins为可信共享管道中的调用请求进程内批准 太长,读不下去了,jenkins,jenkins-pipeline,jenkins-shared-libraries,Jenkins,Jenkins Pipeline,Jenkins Shared Libraries,如何以非交互式方式配置jenkins,以便人们可以使用我的共享库,而无需我点击审批按钮以查看进程内脚本。 说来话长。。。 我在Jenkins中创建了一个共享库,看起来像这样(简化版): 这样,用户就可以像这样调用我的库: @Library('my-shared-library@master') _ MyPipeline { test = { sh "./gradlew test" } } 库也在jenkins/configure下配置 问题是jenkins总是要

如何以非交互式方式配置
jenkins
,以便人们可以使用我的共享库,而无需我点击审批按钮以查看进程内脚本。

说来话长。。。 我在Jenkins中创建了一个共享库,看起来像这样(简化版):

这样,用户就可以像这样调用我的库:

@Library('my-shared-library@master') _
MyPipeline {
    test = {
        sh "./gradlew test"
    }
}
库也在jenkins/configure下配置

问题是jenkins总是要求过程中的纸条批准签名:

签名:staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods invokeMethod java.lang.Object java.lang.String java.lang.Object

然而,在文档中,它说共享库应该是可信的

这就是我所尝试的:

1.完全禁用进程内脚本审批 这似乎不可能:查看并打开
jenkins
ticket:

2.使用配置作为代码预配置jenkins以允许此特定方法 这目前还不可能。。。工作似乎已经基本就绪,但从今天起仍需要合并到master中:

3.获取并张贴在jenkins/scriptApproval上 我使用浏览器调试器查看进行了哪些调用。页面上的一个GET给了我正确的ID,然后一篇帖子就足够了,但是由于两个请求都是单独提出的,ID在这两个请求之间发生了变化,我得到了一个404错误

import requests
id = [line for line in requests.get("http://localhost:8080/scriptApproval/").text.strip().split() if 'makeStaplerProxy' in line][0].split("'")[1]
postUrl = "http://localhost:8080" + id + "/approveSignature"
print(postUrl)
r = requests.post(postUrl)
print(r.status_code)
将提供:

http://localhost:8080/$stapler/bound/8488d0c2-9fce-4091-8b9f-747ae0016421/approveSignature
404
4.隐式加载库 我隐式加载库,并删除

@Library('my-shared-library@master') _
从詹金斯档案。仍然需要批准

出人意料
我完全没有主意了。通常情况下,共享管道应该是可信的,所以我真的不明白为什么他仍然要求批准这些外部呼叫。。。或者我在实现我的共享库时做错了什么?

共享库是如何加载的?它是在Jenkins中配置的,但也是由用户用@library指定的……如果您通过插件加载并在沙盒中运行,那么库将被列入白名单。如果您看到审批请求,则库中可能存在不受信任的内容。库是在Jenkins/configure上配置的,而不是在作业中配置的。但是作业Jenkins文件以@library开始…您从审批表中得到的消息是什么?如何加载共享库?它在Jenkins中配置,但也由用户使用@library指定…如果您通过插件加载并在沙箱中运行,则库将被列入白名单。如果您看到审批请求,则库中可能存在不受信任的内容。库是在Jenkins/configure上配置的,而不是在作业中配置的。但是作业文件以@library开头……您从审批表中得到了什么消息?
@Library('my-shared-library@master') _