Artifactory Ограничить загрузку в репозиторий, разрешить копирование из другого репо

Как запретить пользователям вручную развертывать что-либо в репозиторий, в то же время позволяя им копировать из другого репозитория.

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

person Mir S Mehdi    schedule 14.08.2014    source источник


Ответы (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")
    }  
}
person JBaruch    schedule 14.08.2014
comment
Спасибо JBaruch. Концепция сработала очень хорошо. Мне пришлось немного изменить синтаксис, чтобы он работал. String itemPath = item.repoPath.path !repositories.exists(RepoPathFactory.create('RepoA', itemPath)) - person Mir S Mehdi; 19.08.2014
comment
Я думаю, что ошибаюсь, с синтаксисом в приведенном выше комментарии, если я попытаюсь загрузить файл с тем же именем, которое существует в RepoA, он создаст файл в RepoB. - person Mir S Mehdi; 19.08.2014