是否可以通过在实际脚本中而不是作业配置中列出参数来在Jenkins中创建参数化脚本管道

时间:2018-12-12 16:52:52

标签: jenkins jenkins-pipeline

declarative pipeline中,我可以在管道脚本中指定管道期望的参数,如下所示:

pipeline {
   parameters([
    string(name: 'DEPLOY_ENV', defaultValue: 'TESTING' )
   ])
}

有可能在脚本化的代码行中执行吗?我知道我可以做到:

enter image description here

但是,可以这样做:

node{
   parameters([
    string(name: 'DEPLOY_ENV', defaultValue: 'TESTING' )
   ])
}

4 个答案:

答案 0 :(得分:3)

我通过实验找到了一种解决方案,因此想分享它:

node {
  properties(
    [
        parameters(
            [string(defaultValue: '/data', name: 'Directory'),
            , string(defaultValue: 'Dev', name: 'DEPLOY_ENV')]
            )

    ]
    )    

  ....
}

答案 1 :(得分:0)

我强烈建议您首次使用“代码段生成器”来解决此问题。它将允许您使用看起来与上面共享的快照完全一样的GUI,填写所需的设置,并生成适当的语法。对于特定的问题,请从代码片段生成器中选择示例步骤“属性:设置作业属性”

您可以通过转到/pipeline-syntax端点从任何Jenkins服务器访问“代码段生成器”。

有关代码片段生成器的更多信息,请参见:https://jenkins.io/doc/book/pipeline/getting-started/#snippet-generator

答案 2 :(得分:0)

您可以使用Jenkins Job DSL插件来生成作业,管道,多分支管道... DSL允许定义作业,然后提供了一组有用的功能来配置常见的Jenkins项目。在生成作业之前,可以使用configure来直接访问config.xml。使用参数块,您可以轻松地定义任何类型的参数及其默认值和说明。请注意,此插件还与git和其他版本控制系统兼容。

jobDsl scriptText: ''' job('example') {
    parameters {
        stringParam('Parameter Name', 'Default Value' , 'Parameter Description')
    }
    scm {
        perforceP4('p4_credentials') {
            workspace {
                manual('ws_name', '//depot/Tools/build/... //ws_name/build/...')
            }
        configure { node ->
                    node / workspace / spec / clobber('true')
            }
        }
    }
}'''

参考文献:

https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob-scm-perforceP4

https://wiki.jenkins.io/display/JENKINS/Job+DSL+Plugin

答案 3 :(得分:0)

我确实在外面创建了它,并且有效!另外,我使用的是布尔值,并且在scripted版本中,它的工作方式就像是一种魅力

// Parameters for the build
properties([
  parameters([
     booleanParam(name: 'DEPLOY_SHA', defaultValue: false),
  ])
])

podTemplate(name: ptNameVersion, label: ptNameVersion, containers: [
...
...
] 

它显示参数

Screen Shot 2019-03-29 at 4 37 29 PM