如何使用播种机作业创建Jenkins文件夹的所有者?

时间:2017-08-22 13:48:16

标签: jenkins jenkins-job-dsl

我使用Job DSL Plugin编写了一个播种工作,用folders创建了Ownership Plugin内部预定义的作业集合。我还使用enter image description here来控制哪些用户可以访问每个文件夹。

现在我需要将触发播种器作业的用户指定为文件夹的主要所有者。

我尝试设置"将作业创建者指定为所有者"配置选项,但我得到的结果是创建的文件夹的所有者是SYSTEM。

{{3}}

有没有办法以编程方式以编程方式设置文件夹的主要所有者?

2 个答案:

答案 0 :(得分:1)

查看文件夹的配置XML以查看信息的存储方式:

<com.cloudbees.hudson.plugins.folder.Folder plugin="cloudbees-folder@6.1.2">
  <!-- ... -->
  <properties>
    <!-- ... -->
    <org.jenkinsci.plugins.ownership.model.folders.FolderOwnershipProperty plugin="ownership@0.10.0">
      <ownership>
        <ownershipEnabled>true</ownershipEnabled>
        <primaryOwnerId>admin</primaryOwnerId>
        <coownersIds class="sorted-set">
          <string>daspilker</string>
        </coownersIds>
      </ownership>
    </org.jenkinsci.plugins.ownership.model.folders.FolderOwnershipProperty>
    <!-- ... -->
  </properties>
  <!-- ... -->
</com.cloudbees.hudson.plugins.folder.Folder>

然后您可以使用Configure Block使用Job DSL创建该配置。

答案 1 :(得分:0)

最后,我能够通过将当前使用的名称作为Cause变量的currentBuild来执行此操作,然后使用configure将其分配给文件夹这样的步骤:

user = currentBuild.getCause(Cause.UserIdCause)
folder("MyFolder") {
    configure { folder ->
        folder / 'properties' / 'org.jenkinsci.plugins.ownership.model.folders.FolderOwnershipProperty' / 'ownership' {     
            primaryOwnerId(user.getUserId())
            ownershipEnabled('true')
        }
    }
}

如果任何人都可以提供一种不太冗长的方法来完成此操作,则将其标记为可接受的答案。