我使用Job DSL Plugin编写了一个播种工作,用folders创建了Ownership Plugin内部预定义的作业集合。我还使用来控制哪些用户可以访问每个文件夹。
现在我需要将触发播种器作业的用户指定为文件夹的主要所有者。
我尝试设置"将作业创建者指定为所有者"配置选项,但我得到的结果是创建的文件夹的所有者是SYSTEM。
{{3}}
有没有办法以编程方式以编程方式设置文件夹的主要所有者?
答案 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')
}
}
}
如果任何人都可以提供一种不太冗长的方法来完成此操作,则将其标记为可接受的答案。