使用播种机作业创建 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')
}
}
}
如果有人可以提供更简洁的方法来执行此操作,我会将其标记为已接受的答案。
我已经使用 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')
}
}
}
如果有人可以提供更简洁的方法来执行此操作,我会将其标记为已接受的答案。