Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何通过groovy脚本控制台批准jenkins文件中的脚本片段?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的jenkins管道文件中,我使用JsonSlurperClassic从.json文件中读取构建配置.但是,这会引入需要通过进程内脚本批准页面批准的代码.当我在GUI上执行此操作时,此工作正常.

但是我还有一个脚本可以自动设置我的jenkins机器,它应该创建一个不需要进一步GUI操作的即用型机器.此脚本已使用jenkins脚本控制台批准从属启动命令.在脚本控制台中执行此操作的groovy代码如下所示.

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文件.
执行此操作会@L_607_14@一个新的< approvedScriptHashes>进入scriptApproval.xml文件,但不删除< pendingSignature>包含脚本片段的条目.这意味着它不起作用.

我的猜测是,语言是错误的,但我尝试的其他值如groovy-sh或system-commands也不起作用.你有什么想法它不起作用吗?

感谢您的时间.

解决方法

您可以使用 ScriptApproval#approveSignature方法.这是一个适用于我的jenkins 2.85的示例

def signature = 'new groovy.json.JsonSlurperClassic'
org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.get().approveSignature(signaturE)

大佬总结

以上是大佬教程为你收集整理的如何通过groovy脚本控制台批准jenkins文件中的脚本片段?全部内容,希望文章能够帮你解决如何通过groovy脚本控制台批准jenkins文件中的脚本片段?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。