如何解决在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 ,这对我有用:
- 在我的共享库类中,我添加了一个静态函数来引入构建参数。注意功能需要的输入参数及其用法:
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'),] } }
- 要在管道中引入这些参数,需要将函数的返回值放入参数数组中
properties ( parameters ( awsAccount.giveMeParameters (this) )
同样,请在调用函数时注意语法。与此类似,您还可以在共享库中定义返回属性的函数,并将其用于多个作业( disableConcurrentBuilds , buildDiscarder 等)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。