jenkins工作文件夹dsl添加属性

时间:2018-02-05 08:08:47

标签: jenkins-job-dsl

我想使用Jenkins DSL创建一个Jenkins文件夹。在创建文件夹时,我想添加一些自定义属性。我无法使用以下语法添加任何属性。应该是什么语法

folder('example-2') {
  displayName("testFolder")
  description("desc")
  properties{
     'key','value'
  }
}

3 个答案:

答案 0 :(得分:1)

这可能是因为定义文件夹属性的功能已从开源Folders Plugin中删除,现在只能在Cloudbees Enterprise Jenkins中使用。

  

我们决定将文件夹的基本功能发布为GitHub上托管的开源插件,就像其他Jenkins插件一样。这个4.0版本本身功能齐全,但Jenkins Enterprise(在Folders Plus插件中)保留了一些高级功能:Move动作,一些健康报告和图标,环境变量属性,从嵌套作业列表视图列中拉取信息,以及限制此文件夹中子项的种类选项。核心文件夹功能以及所有API和扩展点都可以在开源插件中找到。

阅读完整公告here

我自己一直在努力满足对文件夹级属性的需求,所以我已经开始使用自己的插件来满足这种需求。我称之为Folder Properties Plugin。如果您遇到任何问题,请在Git仓库中提交,如果您有任何疑问,可以将它们发布到插件的维基页面。

我希望这会有所帮助。

答案 1 :(得分:0)

public static void addFolderVariable(Folder folder, String variableName, String variableValue) {

    String elementName = 'com.cloudbees.hudson.plugins.folder.properties.EnvVarsFolderProperty'
    String variables = "$variableName=$variableValue"

    folder.with {
        configure {
            // Get previous values
            Node node = it / 'properties' / "$elementName" / 'properties'
            if (node.value()) {
                // Join them together
                String existingVariables = node.value()
                variables = "$existingVariables\n$variables"
            }
            // Assign it
            it / 'properties' / "$elementName" / 'properties' << "$variables"
        }
    }
}

这似乎适用于企业版。 (对不起,我不是一个Groovy开发人员,你可以看到)

答案 2 :(得分:0)

您在这里:

folder('example-2') {
  displayName("testFolder")
  description("desc")
  properties{
      configure {
          it / 'properties' / key1 << 'value1'
          it / 'properties' / key2 << 'value2'
      }
  }
}

该文件夹的属性documentation为空,这表明它不支持下面的任何内置语法。使用configure直接使用闭包来操纵XML。

您可以使用其出色的playground测试任何DSL。