【问题标题】:Artifactory Restrict upload to repository, allow copy from another repoArtifactory 限制上传到存储库,允许从另一个存储库复制
【发布时间】:2014-08-14 16:15:19
【问题描述】:

如何限制用户手动将任何内容部署到存储库中,同时允许他们从另一个存储库复制。

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")
}  }

【问题讨论】:

    标签: artifactory


    【解决方案1】:

    如果您想允许复制,只需添加一个检查以验证 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,这个概念非常成功。我不得不稍微改变一下语法才能让它工作。 String itemPath = item.repoPath.path!repositories.exists(RepoPathFactory.create('RepoA', itemPath))
    • 我认为我错了,使用上面评论中的语法,如果我尝试上传 RepoA 中存在的同名文件,它会在 RepoB 中创建文件
    猜你喜欢
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多