Jenkins多分支流水线配置copyArtifact权限的正确Groovy语法
问题原因
报错是因为copyArtifactPermissionProperty不属于多分支流水线根节点的properties上下文,该配置是多分支下每个分支任务的属性,需要配置到分支属性策略的属性块中。
多分支流水线的每个分支会生成独立的子任务,Copy Artifact的权限需要继承自分支的公共属性,因此不能在根任务的全局properties里定义。
正确写法
你需要将权限配置放到defaultBranchPropertyStrategy下的props块中,修改后的代码如下:
multibranchPipelineJob("my_project") { branchSources { branchSource { source { git { remote("my_repo") credentialsId(${credential_id}) traits { gitBranchDiscovery() cleanBeforeCheckoutTrait { extension { deleteUntrackedNestedRepositories(false) } } } } } strategy { defaultBranchPropertyStrategy { props { // 在这里添加copyArtifact权限配置 copyArtifactPermissionProperty { projectNames('*') } } } } } } triggers { periodic(5) } orphanedItemStrategy { discardOldItems { // numToKeep(20) } } if ("jenkinsfile") { factory { workflowBranchProjectFactory { scriptPath("jenkinsfile") } } } }
注意事项
- 需确保Jenkins已安装Copy Artifact插件,版本不低于1.46,才支持多分支流水线的分支属性配置
- 如果需要限制特定项目可以拉取制品,把
'*'替换为对应项目的名称列表即可,多个项目用逗号分隔:projectNames('projectA', 'projectB')
内容的提问来源于stack exchange,提问作者nixmind
相关产品推荐
相关产品推荐

