Nexus以非交互方式配置初始存储库

时间:2019-05-09 07:42:41

标签: continuous-integration nexus nexus3

我想为我们的nexus实例创建一个泊坞窗,其中已创建了正确的存储库,代理等。

this question的启发,我开始使用脚本API来配置我的存储库。通过该API配置的存储库虽然不能像手动配置的那样工作(可悲;特别是如果您想象我在使用未公开的脚本API进行配置时遇到的麻烦...)。因此,如果您真的想了解详细信息,我已经提交了一个错误:https://issues.sonatype.org/browse/NEXUS-19891

现在我的问题是:还有另一种非交互方式配置存储库的方法吗?

对于jenkins,可以在/usr/share/jenkins/ref中放入一些默认配置,然后将这些默认配置仅在首次启动时使用;给您一个初始配置。我想知道nexus是否存在类似的东西?还是我不知道的其他方式?

1 个答案:

答案 0 :(得分:0)

我使用python做类似的事情:

curl -X POST -u admin:admin123 --header 'Content-Type: application/json' http://localhost:8081/service/rest/v1/script -d '{"name":"test","type":"groovy","content":"repository.createYumProxy('\''test'\'', '\''http://repository:8080/'\'')"}'
curl -X POST -u admin:admin123 --header "Content-Type: text/plain" 'http://127.0.0.1:8081/service/rest/v1/script/test/run'

我发布的确切脚本(在这里比所有那些转义引号更具可读性):

repository.createYumProxy('{name}', '{url}');
configuration = repository.repositoryManager.get('{name}').configuration.copy();
configuration.attributes['proxy'] = [
    remoteUrl : "{url}",
    contentMaxAge : 0,
    metadataMaxAge : 0
]
configuration.attributes['negativeCache'] = [
    timeToLive : 1.0
]
repository.repositoryManager.update(configuration)

在我的案例中缺少的部分是repositoryManager.update()。如票证上所述:

  

我认为脚本中缺少的重要事项是您没有使用新的(复制的)配置来更新repositoryManager(这会导致存储库停止/启动并因此重新加载配置)