Maven篇----06 Nexus3中RestApi使用


Sonatype Nexus 3.0 版本提供 RestApi,它支持 Groovy API。
    其設計思路是:通過結合 Groovy 腳本來完成相關的功能,簡單來說需要用戶自行提供groovy腳本,nexus提供上傳和運行腳本的接口,雖然有些粗糙,但是大部分功能畢竟留出了一個方式供用戶去使用,至於groovy腳本中需要實現什么功能,那就看用戶需要。在一定程度上來說,算是一個能夠創造API的API。

1. API使用說明

1.1 使用步驟

步驟1: 以json文件為載體,創建可運行的groovy腳本

//腳本名稱會成為后續API的一部分,請注意命名
{
  "name": "腳本名稱",
  "type": "groovy",
  "content": "groovy語句"
}

步驟2: 上傳json文件
將步驟1中准備的文件作為POST請求的內容傳入

步驟3: 執行groovy文件
使用接口,執行在步驟2中上傳的groovy腳本

1.2 Script相關的接口

這里針對操作 script 的接口先說明一下。在swagger-ui中,包含有Nexus所有接口的請求模板,需要可自行查閱。

// 增加一個腳本 -- Add a new script
curl -X POST -u admin:admin123 --header "Content-Type: application/json" http://10.15.22.172:8081/nexus/service/rest/v1/script -d @rawrepotest1.json

// 列出所有上傳的腳本 -- List all stored scripts
curl -X GET -u admin:admin123 "http://10.15.22.172:8081/nexus/service/rest/v1/script" -H "accept: application/json"

// 通過名稱讀取腳本內容 -- Read stored script by name
curl -X GET -u admin:admin123 "http://10.15.22.172:8081/nexus/service/rest/v1/script/rawrepotest1" -H "accept: application/json"

// 通過名稱更新腳本內容 -- Update stored script by name
curl -X PUT -u admin:admin123 "http://10.15.22.172:8081/nexus/service/rest/v1/script/rawrepotest1" -H "accept: application/json" -H "Content-Type: application/json" -d

// 通過名稱刪除腳本 -- Delete stored script by name
curl -X DELETE -u admin:admin123 "http://10.15.22.172:8081/nexus/service/rest/v1/script/rawrepotest1" -H "accept: application/json"

// 通過名稱運行腳本 -- Run stored script by name
curl -X POST -u admin:admin123 --header "Content-Type: text/plain" http://10.15.22.172:8081/nexus/service/rest/v1/script/rawrepotest1/run

2. API使用實例

2.1. 如何在Nexus中創建一個maven2類型的repository。

步驟1: 以json文件為載體,創建可運行的groovy腳本
因為創建repository需要指定blob,所以這里創建如下的json文件:

$ cat maven2test1.json 
{
  "name" : "maven2test1",
  "content" : "def maven2Store = blobStore.createFileBlobStore('maven2test1', 'maven2');repository.createMavenHosted('maven2test1', maven2Store.name);",
  "type" : "groovy"
} 

步驟2: 上傳json文件

$ curl -X POST -u admin:admin123 --header "Content-Type: application/json" http://localhost:32004/service/siesta/rest/v1/script -d @maven2test1.json

步驟3: 執行groovy文件

$ curl -X POST -u admin:admin123 --header "Content-Type: text/plain" http://localhost:32004/service/siesta/rest/v1/script/maven2test1/run
//調用成功返回報文
{
  "name" : "maven2test1",
  "result" : "RepositoryImpl$$EnhancerByGuice$$c5f0822b{type=hosted, format=maven2, name='maven2test1'}"
}

參考資料

Nexus基礎:使用Api進行操作
https://blog.csdn.net/liumiaocn/article/details/83734437

REST and Integration API
https://help.sonatype.com/repomanager3/rest-and-integration-api

Sonatype Nexus 3.0. Using the new Groovy API
https://technology.amis.nl/2016/10/27/sonatype-nexus-3-0-using-the-new-groovy-api/

How to delete docker images from Nexus Repository Manager
https://support.sonatype.com/hc/en-us/articles/360009696054-How-to-delete-docker-images-from-Nexus-Repository-Manager


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM