首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为代码插件的Jenkins配置的参数化构建语法(JCasC)

作为代码插件的Jenkins配置的参数化构建语法(JCasC)
EN

Stack Overflow用户
提问于 2019-10-15 19:59:21
回答 1查看 1.7K关注 0票数 0

我正在尝试使用配置作为代码(JCasC)插件来创建一个接受构建参数的管道作业,但是我无法在线找到这方面的语法。我正在用YAML编写配置。

在GUI上,该字段称为“此构建是参数化的”,它位于“General”标题下。我需要定义两个字符串参数: CLUSTER_ID=cluster_id和OPENSHIFT_ADMINSTRATION_BRANCH=develop。

这是我试图编辑的yaml文件:

代码语言:javascript
复制
jobs:
  - script: >
      folder('test1'){
        pipelineJob('test1/seedJobTest') {
          description 'seedJobTest'
          logRotator {
            daysToKeep 10
          }
          definition {
            cpsScm {
              scm {
                git {
                  remote {
                    credentials "xxx"
                    url 'xxx'
                  }
                  branches 'refs/head/master'
                  scriptPath 'Jenkinsfile'
                  extensions { }
                }
              }
            }
          }
          configure { project ->
            project / 'properties' / 'EnvInjectJobProperty' {
              'on'('true')
            }
            project / 'properties' / 'org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty' {}
          }
        }
      }

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2019-12-31 17:46:35

解决方案

代码语言:javascript
复制
jobs:
  - script: >
      folder('test1'){
        pipelineJob('test1/seedJobTest') {
          description 'seedJobTest'
          logRotator {
            daysToKeep 10
          }
          parameters {
            stringParam("CLUSTER_ID", "cluster_id", "your description here")
            stringParam("OPENSHIFT_ADMINSTRATION_BRANCH", "develop", "your description here")
          }
          definition {
            cpsScm {
              scm {
                git {
                  remote {
                    credentials "xxx"
                    url 'xxx'
                  }
                  branches 'refs/head/master'
                  scriptPath 'Jenkinsfile'
                  extensions { }
                }
              }
            }
          }
          configure { project ->
            project / 'properties' / 'EnvInjectJobProperty' {
              'on'('true')
            }
            project / 'properties' / 'org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty' {}
          }
        }
      }

如何在未来解决这个问题- XML作业到DSL (Jenkins插件)

以下是我如何理解这类事情:

automate).

  • Install

  • 手动创建一个临时管道作业,在种子作业中使用您想要的东西(如果只是暂时的话),"XML“Jenkins插件。

  • 转到左侧的主Jenkins仪表板

  • ,您将找到"XML”。

  • 选择您创建的临时职务,然后单击“转换选定的DSL"

当我开始获得这个答案的params片段时,我做了上面描述的事情,但只创建了两个参数。最后我得到了这个:

代码语言:javascript
复制
pipelineJob("test") {
    description()
    keepDependencies(false)
    parameters {
        stringParam("CLUSTER_ID", "cluster_id", "your description here")
        stringParam("OPENSHIFT_ADMINSTRATION_BRANCH", "develop", "your description here")
    }
    definition {
        cpsScm {
""      }
    }
    disabled(false)
}

只读参数选项

还有一件事,万一它对你有用(就像对我一样)。如果您想要创建一个参数化的种子作业,但不希望这些作业在构建时是可编辑的,您可以安装“只读参数”Jenkins插件;然后,您可以这样做:

代码语言:javascript
复制
jobs:
  - script: >
      pipelineJob("Param Example") {
        description()
        keepDependencies(false)
        parameters {
          wHideParameterDefinition {
            name('AGENT')
            defaultValue('docker-host')
            description('Node on which to run.')
          }
          wHideParameterDefinition {
            name('ENV_FILE_DIR')
            defaultValue('local2')
            description('Name of environment directory which houses .env')
          }
          booleanParam("include_search_stack", false, "Build/run the local Fess, Elasticsearch, and Kibana containers.")
          booleanParam("SKIP_404_GENERATION", false, "Helpful sometimes during local development.")
        }
        definition {
          cpsScm {
            scm {
              git {
                remote {
                  url("https://myrepo/blah.git")
                  credentials("scm")
                }
                branch("master")
              }
            }
            scriptPath("pipeline/main/Jenkinsfile")
          }
        }
        disabled(false)
      }

在本例中,前两个参数AGENTENV_FILE_DIR是CasC的“硬编码”,因为这些参数在构建时是不可编辑的。但是,include_search_stackSKIP_404_GENERATION参数是可编辑的。我使用了这个混合的例子来说明这两种方法在同一个作业中都是可用的。

只读参数在我的一些用例中很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58401863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档