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

How to set the owner of a Jenkins folder when creating it with a seeder job?

我已经使用 Job DSL Plugin to create folders with a predefined collection of jobs inside. I also use the Ownership Plugin 编写了一个播种作业来控制哪些用户可以访问每个文件夹。

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

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

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

查看文件夹的配置 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 通过作业 DSL 创建该配置。

最后,我能够通过将当前使用的名称作为 currentBuild 变量的 Cause,然后使用 [=13] 将其分配给文件夹来做到这一点=] 步骤如下:

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

如果有人可以提供更简洁的方法来执行此操作,我会将其标记为已接受的答案。