【问题标题】:nexus configure initial repositories non-interactivelynexus 以非交互方式配置初始存储库
【发布时间】:2019-06-11 16:52:27
【问题描述】:

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

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

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

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

【问题讨论】:

  • 关于 nexus,您可以注册 groovy 脚本,稍后您将调用这些脚本来完成您期望的工作。我维护一个 ansible 角色,它在我们使用此功能的地方安装和提供关系(即“自制 API”)。 See this example。预期的数据结构是[{name: reponame, type: repotype, format: repoformat, blob_store: blobstorename, ...}, {...}] 如果您有兴趣,请参阅脚本以获取有关可能参数的更多信息(以及项目根目录中的角色文档)。注意:你的问题是私人的
  • @Zeitounator 你是对的;问题是私人的;我没有注意到这一点。我在我的问题中粘贴了全部内容。

标签: continuous-integration nexus nexus3


【解决方案1】:

我用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(这会导致存储库停止/启动并因此重新加载配置)

【讨论】:

    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 2017-07-10
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多