gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:32:17 24 4
gpt4 key购买 nike

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

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]
}
全局管道库配置为从我的存储库的主分支隐式加载。
尝试更新 DSL 脚本时,我收到错误消息:

ERROR: (myJob.groovy, line 67) No such property: awsAccount for class: javaposse.jobdsl.dsl.helpers.BuildParametersContext


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

最佳答案

免责声明 :我知道它可以使用 Jenkinsfile 工作。不幸的是,没有测试过使用声明性管道 - 但还没有答案,所以可能值得一试
关于您的第一个问题:有一些原因导致无法找到您的共享库中的类。从库导入、库语法等开始。但它们绝对适用于 DSL。更准确地说,额外的信息会很棒。但请确保:

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

  • 关于您的第二个问题(命名此 SO 问题的问题):是的,您可以从共享库中的信息中包含参数作业。至少,使用 Jenkinsfiles。您甚至可以定义要包含在管道中的属性。由于不同的问题,我得到了一个棘手的语法。
    同样,我正在使用 Jenkins 文件 这对我有用:
  • 在我的共享库类中,我添加了一个引入构建参数的静态函数。注意函数需要的输入参数及其用法:

  • 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 等)

    关于jenkins - 在Jenkins中使用全局共享库定义参数选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64363213/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com