尝试使用 REST API 在 sonatype Nexus 中创建存储库


如何

通过 REST API 创建存储库,并希望有人可以帮助我使用所使用的 xml 和 curl 脚本。

TLDR

对于 Nexus3,请使用此处的示例脚本之一,通过脚本 API 创建所需的存储库。


声纳型连接 3

自版本 2 以来,REST API 已经(我认为仍在进行)一些改进。

存储库接口

当前的存储库 API 处于测试阶段,并且只有一个端点来列出存储库...所以这是行不通的。

脚本接口

脚本API(v1,不是BETA)允许通过Groovy访问底层Nexus库。您可以使用此 API 创建和执行脚本以创建存储库。

例如,创建 NPM 存储库

创建

脚本以创建 NPM 存储库,然后执行该脚本。

curl -X POST -u admin:admin123 --header 'Content-Type: application/json' 
    http://127.0.0.1:8081/service/rest/v1/script 
    -d '{"name":"npm","type":"groovy","content":"repository.createNpmHosted('''npm-internal''');repository.createNpmProxy('''npmjs-org''','''https://registry.npmjs.org''');repository.createNpmGroup('''npm-all''',['''npmjs-org''','''npm-internal'''])"}'
curl -X POST -u admin:admin123 --header "Content-Type: text/plain" 'http://127.0.0.1:8081/service/rest/v1/script/npm/run'

推荐阅读:

  • 编写脚本
  • 管理和运行脚本
  • 例子

首先,如果您对如何做这些事情感到好奇,您可以使用我们在Sonatype上发表的这篇文章来学习如何学习Nexus Repository 2 REST API:http://www.sonatype.org/nexus/2015/01/26/learn-the-nexus-rest-api-automating-sonatype-nexus/

其次,这是我们的一位内部团队成员想出的一个例子:

这是对 http://localhost:8081/nexus/service/local/repositories 的 POST 请求。你可以像这样用 curl 使用它:

curl -H "Content-Type: application/json" -d @repo.json -u admin:admin123 http://localhost:8081/nexus/service/local/repositories

下面是上面引用的"repo.json"文件的一些示例内容,它展示了如何创建代理 Maven 存储库。请注意,创建其他类型的存储库的有效负载会有所不同,请使用上面的文章找出这些负载。

{
    "data": {
        "repoType": "proxy",
        "id": "somerepo",
        "name": "Some Repo Name",
        "browseable": true,
        "indexable": true,
        "notFoundCacheTTL": 1440,
        "artifactMaxAge": -1,
        "metadataMaxAge": 1440,
        "itemMaxAge": 1440,
        "repoPolicy": "RELEASE",
        "provider": "maven2",
        "providerRole": "org.sonatype.nexus.proxy.repository.Repository",
        "downloadRemoteIndexes": true,
        "autoBlockActive": true,
        "fileTypeValidation": true,
        "exposed": true,
        "checksumPolicy": "WARN",
        "remoteStorage": {
            "remoteStorageUrl": "http://someplace.com/repo",
            "authentication": null,
            "connectionSettings": null
        }
    }
}

最新更新