Groovy帮助查找缺少的包:找不到com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials包,Jenkins Job DSL插件

时间:2016-11-07 03:05:22

标签: tomcat groovy jenkins-job-dsl

我是groovy的新手,目前正在尝试将我的团队Jenkins服务器从1.6升级到2.7。我需要迁移的其中一个部分是我们在版本控制中使用的Job DSL。

在我尝试运行旧作业DSL的新服务器上,我收到以下错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/apps/Jenkins/workspace/DSL-infrastructure/shared/Shared.groovy: 10: Apparent variable 'com' was found in a static scope but doesn't refer to a local variable, static field or class. Possible causes:
You attempted to reference a variable in the binding or an instance variable from a static context.
You misspelled a class name or statically imported field. Please check the spelling.
You attempted to use a method 'com' but left out brackets in a place not allowed by the grammar.
 @ line 10, column 17.
       def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
                   ^

基本上,我认为问题是groovy脚本找不到com.cloudbees ...包。

Shared.groovy脚本部分:

  static def getCred(partialName) {
    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
      com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
      jenkins.model.Jenkins.instance,
      null,
      null
    )
    creds.find { it.description.contains(partialName) }
  }

我已经搜索过高低不能为我的生活找出原因或如何解决这个丢失的包问题。当我在apache tomcat中运行Jenkins时,它变得复杂了。

我不确定如何在运行Jenkins的apache tomcat服务器中导入这个丢失的包?我在目录中找到了.jar文件:

/apps/jenkins/plugins/credentials/WEB-INF/lib/credentials.jar

特定班级我试图参考:

https://github.com/jenkinsci/credentials-plugin/blob/master/src/main/java/com/cloudbees/plugins/credentials/CredentialsProvider.java

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

从Job DSL插件版本1.43开始,DSL脚本中不再提供Credentials插件中的类。所以你可能在更新Jenkins时也更新了Job DSL插件。

Credentials plugin的版本1.21 +允许为凭据指定自定义ID,因此不必按说明查找凭据。只需使用描述性ID即可。

答案 1 :(得分:0)

一种方法是使用Credential Binding插件,允许使用credentials建议的已定义的Jenkins全局daspilker。 下面是一个列出SVN URL文件夹结构的作业示例(对于其他repos,它的工作方式类似)。请注意,您需要连接秘密,使用formater会屏蔽它并且它不会被识别(为了简单起见,用户不会连接在一起)。

Jenkins Secrets