当前位置: 首页 > 面试题库 >

Groovy脚本中的Jenkins变量

公冶昆杰
2023-03-14
问题内容

我想将“ $ WORSKPACE”变量用于jenkins脚本调用的常规文件。但是在SO上找到的所有解决方案都失败了:

// KO : Wks = build.getEnvironment(listener).get('WORKSPACE')
// KO : Wks = "${WORKSPACE}"
/* KO :
def thr = Thread.currentThread()
def build = thr?.executable
def envVarsMap = build.parent.builds[0].properties.get("WORKSPACE")
*/

// KO : def build = this.getProperty('binding').getVariable('build')
// KO : Wks = "%WORKSPACE%"

我得到的消息:脚本不允许使用groovy.lang.GroovyObject方法setProperty java.lang.String
java.lang.Object(JenkinsHelper.name)。管理员可以决定是批准还是拒绝此签名。

对设置为允许Jenkins脚本工作的代码或选项有任何想法吗?

我的案例:

文件JenkinsHelper.groovy:

    class JenkinsHelper {
     def init(String sln) { 
      Wks = "%WORKSPACE%"
     }
    }
return new JenkinsHelper();

从詹金斯脚本调用:

def helper = load 'C:/.../test.groovy'
helper.init("Mon SLN")

谢谢 :)


问题答案:

这是由Jenkins进程内脚本批准引起的,以保护可能执行的恶意脚本。

如果您是管理员,请在“ 管理Jenkins” >“ 配置系统” >“ 全局管道库”中 注册管道代码,以避免这种情况。

参考文献:

  1. https://jenkins.io/doc/book/pipeline/shared-libraries/#global-shared-libraries-有关编写库的详细信息。
  2. https://jenkins.io/doc/book/managing/script-approval


 类似资料:
  • 问题内容: 我是Jenkins中使用的Groovy脚本的新手。我的问题是,我们如何根据作业名称和内部版本号获取作业的时间戳? 示例 :我想获取“ MyDeployJob”(JobName)的时间戳,并获取BuildNumber-105的时间戳。 我尝试使用方法方法,但无法正常工作。另外,我发现环境变量具有时间戳,但是我无法弄清楚如何使用Groovy Script获取细节。请帮助。 提前致谢。 问题

  • 问题内容: 当我尝试在Jenkins控制台中执行以下Groovy脚本时,发生以下错误。 这已从“ 使用Jenkins”>“ Jenkins脚本控制台”>“参数化系统Groovy脚本”中获取。 该错误表明它包含一些缺少的属性: 我已经尝试使用Groovy脚本插件从Jenkins运行RunningGroovy命令,但在我的情况下不起作用。 问题答案: 如果我→ 执行系统Groovy脚本 → Groov

  • 我正在构建一个jenkins管道,作业可以由远程触发。我需要知道哪个IP触发了作业。所以我有一个小Groovy脚本,它返回远程IP。使用EnvInject-plugin,我可以轻松地在正常的自由式作业中使用这个变量,但是我如何在管道中使用它?我不能将EnvInject-plugin与管道插件一起使用:( 这是获取IP的小脚本:

  • 为了创建以下形式的json文件,我制作了如下的Groovy脚本,但出现了一个错误。 怎么了? 我在下一个网站。我认为我正确地编写了Groovy示例代码。https://docs.groovy-lang.org/latest/html/gapi/groovy/json/JsonBuilder.html 示例json 很棒的剧本 詹金斯错误状态 groovy.lang.MisSingProperty

  • 问题内容: 假设我在Jenkins中有一个Groovy脚本,其中包含多行shell脚本。如何在该脚本中设置和使用变量?正常方式会产生错误: 捕获:groovy.lang.MissingPropertyException:否这样的属性:foo对于类:groovy.lang.Binding 问题答案: 您需要更改为三重单引号或转义美元 然后,您将跳过常规模板,这就是给您这个问题的原因

  • 在我的Jenkins构建中,我有一个Groovy脚本(因为我使用的是管道插件),在这个脚本中,我试图使用OkHttpClient进行API调用。 我从这里获得了以下葡萄代码: 为此,我得到: 知道有什么问题吗? 在Jenkins管道脚本中运行时,Grape不能检索包吗?