微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Jenkins中使用全局共享库定义参数选项

如何解决在Jenkins中使用全局共享库定义参数选项

我正在尝试使用在共享库中定义的全局类来帮助组织作业参数。它不起作用,我甚至不确定是否可以。

我的工作看起来像这样:

pipelineJob('My-Job') {
    deFinition {
        // Job deFinition goes here
    }
    parameters {
        choiceParam('awsAccount',awsAccount.ALL)
    }
}

在/vars/awsAccount.groovy中的文件中,我具有以下代码

class awsAccount implements Serializable {
    final String SANDPIT = "sandpit",final String DEV = "dev",final String PROD = "prod"

    static String[] ALL = [SANDPIT,DEV,PROD]
}

全局管道库配置为从我的存储库的master分支隐式加载。

当尝试更新DSL脚本时,我收到错误消息:

错误:(myJob.groovy,第67行)没有此类属性:awsAccount类:javaposse.jobdsl.dsl.helpers.BuildParametersContext

为什么找不到该类,甚至还可以在管道作业中使用这样的共享库类?

解决方法

免责声明:我知道它可以在Jenkinsfile中使用。不幸的是,未使用声明性管道进行测试-但尚无答案,因此值得一试

关于第一个问题:出于某些原因,找不到共享库中的类。从库导入,库语法等开始。但是它们对于DSL无疑有效。更准确地说,其他信息将是非常有用的。但请确保:

  • 您完全按照文档(https://www.jenkins.io/doc/book/pipeline/shared-libraries/)中所述的目录结构使用groovy类定义。
  • 在配置时在jenkins中为共享库提供一个名称,并确保该名称与您在import中使用的名称完全相同
  • 按照文档中的说明使用import(在使用库下)

关于第二个问题(这个问题称为SO问题):是的,您可以从共享库中的信息中包含参数作业。至少使用Jenkinsfiles。您甚至可以定义要包含在pipelie中的属性。由于存在不同的问题,我使用了棘手的语法。

同样,我正在使用 Jenkinsfile ,这对我有用:

  1. 在我的共享库类中,我添加了一个静态函数来引入构建参数。注意功能需要的输入参数及其用法:
class awsAccount implements Serializable {
  //
  static giveMeParameters (script) {
    return [
      // Some parms
      script.string(defaultValue: '',description: 'A default parameter',name: 'textParm'),script.booleanParam(defaultValue: false,description: 'If set to True,do whatever you need - otherwise,do not do it',name: 'boolOption'),]
  }
}
  1. 要在管道中引入这些参数,需要将函数的返回值放入参数数组中
properties (
  parameters (
    awsAccount.giveMeParameters (this)
  )

同样,请在调用函数时注意语法。与此类似,您还可以在共享库中定义返回属性的函数,并将其用于多个作业( disableConcurrentBuilds buildDiscarder 等)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?