Artifactory限制上载到存储库,允许从另一个repo复制
如何限制用户手动将任何内容部署到存储库中,同时允许他们从另一个存储库进行复制Artifactory限制上载到存储库,允许从另一个repo复制,artifactory,Artifactory,如何限制用户手动将任何内容部署到存储库中,同时允许他们从另一个存储库进行复制 RepoA/Dir/File.txt RepoB/Dir 我想允许将File.txt从RepoA复制到RepoB,这需要对RepoB的部署权限。但是,我还想将手动部署限制为RepoB。任何进入RepoB的内容都只能来自RepoA 我用beforeCreate模块的用户插件尝试了这一点,这限制了手动上传,但是也限制了复制功能 storage{ beforeCreate { item -> log
RepoA/Dir/File.txt
RepoB/Dir
我想允许将File.txt从RepoA复制到RepoB,这需要对RepoB的部署权限。但是,我还想将手动部署限制为RepoB。任何进入RepoB的内容都只能来自RepoA
我用beforeCreate模块的用户插件尝试了这一点,这限制了手动上传,但是也限制了复制功能
storage{
beforeCreate { item ->
log.debug("ENTER storage -> beforeCreate")
if (item.getRepoKey().equals("RepoB")) {
throw new CancelException("Artifact create not permitted", 403)
}
log.debug("EXIT storage -> beforeCreate")
} }
如果您想允许复制,只需添加一个检查来验证
RepoA
中是否存在相同的路径(工件)。如果有-允许:
storage {
beforeCreate { item ->
log.debug("ENTER storage -> beforeCreate")
if (item.getRepoKey().equals("RepoB") &&
!repositories.exist(RepoPathFactory.create('RepoA', item.repoPath)) {
throw new CancelException("Artifact create not permitted", 403)
}
log.debug("EXIT storage -> beforeCreate")
}
}
谢谢JBaruch,这个概念很好地解决了。为了让它工作,我不得不稍微修改一下语法<代码>字符串itemPath=item.repoPath.path
!repositories.exists(RepoPathFactory.create('RepoA',itemPath))
我认为我错了,根据上面注释中的语法,如果我尝试上载一个与RepoA中存在的文件同名的文件,它会在RepoA中创建该文件