如何限制用户手动将任何内容部署到存储库中,同时允许用户从另一个存储库进行复制。
RepoA/Dir/File.txt
RepoB/Dir
我想允许从RepoA到RepoB的File.txt副本,这需要部署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")
} }
答案 0 :(得分:2)
如果要允许复制,只需添加一个检查,以验证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")
}
}