如何通过groovy脚本控制台从jenkinsfile批准脚本片段?

在我的jenkins管道文件中,我使用从.json文件JsonSlurperClassic读取构建配置。但是,这引入了需要 在进程内“脚本批准”

页面上批准的代码。通过GUI执行此操作时,效果很好。

但是,我还有一个脚本会自动设置我的jenkins机器,该机器将创建不需要任何GUI操作即可使用的现成机器。该脚本已使用jenkins脚本控制台批准从属启动命令。在脚本控制台中执行此操作的常规代码如下所示。

def language = 'system-command';

def scriptSnippet = 'ssh me@slavemachine java -jar ~/bin/slave.jar';

def scriptApproval = Jenkins.instance.getExtensionList(

'org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval')[0];

def scriptHash = scriptApproval.hash(scriptSnippet, language);

scriptApproval.approveScript(scriptHash);

效果很好,但现在我想使用相同的代码来批准来自我的管道的脚本片段。我与交换了前两行

def language = 'groovy'

def scriptSnippet = 'new groovy.json.JsonSlurperClassic';

其中,scriptSnippet从所拍摄的scriptApproval.xml文件。执行此操作会<approvedScriptHashes>scriptApproval.xml文件中添加一个新条目,但不会删除<pendingSignature>包含脚本片段的条目。这意味着它不起作用。

我的猜测是,该语言是错误的,但是我尝试过的其他值都喜欢groovy-shsystem-commands不起作用。您有什么想法为什么不起作用?

感谢您的时间。

回答:

您可以使用ScriptApproval#approveSignature方法。这是一个适用于我的詹金斯2.85的示例

def signature = 'new groovy.json.JsonSlurperClassic'

org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.get().approveSignature(signature)

以上是 如何通过groovy脚本控制台从jenkinsfile批准脚本片段? 的全部内容, 来源链接: utcz.com/qa/398162.html

回到顶部