
什么是 API Key 密鑰以及如何使用它們?
Sonatype Nexus Repository(以下簡稱 Nexus)是一款功能強大的制品庫管理工具,支持 Maven、npm、Docker、PyPI 等多種格式。通過 Nexus REST API,你可以在 CI/CD 管道中無縫地完成倉庫創建、權限配置、構件上傳與清理等關鍵操作,大幅提升 DevOps 自動化效率。
Nexus 3.x 版本主要提供以下 REST 接口:
根路徑 | 描述 |
---|---|
/service/rest/v1/ |
核心倉庫管理(Repository) |
/service/rest/v1/script |
腳本管理與執行(Groovy) |
/service/rest/v1/security |
用戶、角色與權限配置 |
http:// < nexus-host > /service/rest/swagger.json
,即可獲得完整 JSON 定義,并可在 Swagger UI 中交互測試。以下示例展示如何在 Jenkins Pipeline 中通過 REST API 自動創建一個 Maven Hosted 倉庫,并賦予特定角色權限。
createMavenRepo.groovy
import org.sonatype.nexus.repository.storage.WritePolicy
repository.createMavenHosted(
'internal-maven', // 倉庫名稱
'maven2', // 格式
'default', // Blob store
true, // 發布策略
WritePolicy.ALLOW, // 寫入策略
false, // 暫存策略
null // 恢復策略
)
# 1. 上傳腳本
curl -u admin:admin123 \
-X POST http://nexus.example.com/service/rest/v1/script \
-H "Content-Type: application/json" \
-d '{
"name": "createMavenRepo",
"type": "groovy",
"content": "'"$(sed ':a;N;$!ba;s/\n/\\n/g' createMavenRepo.groovy)"'"
}'
# 2. 執行腳本
curl -u admin:admin123 \
-X POST http://nexus.example.com/service/rest/v1/script/createMavenRepo/run
> 提示:在 Jenkins Pipeline 中,可使用 sh
步驟依次執行上述命令,并在參數化構建時傳入倉庫名稱、Blob store 等。
POST /service/rest/v1/components?repository= < repo >
上傳多種格式制品。/service/rest/v1/tasks
,創建清理任務(Cleanup policy),定期刪除快照、過期制品,避免存儲爆滿。NX?API 是 Cisco Nexus 網絡設備提供的 API 接口,允許開發者用 HTTP/HTTPS 調用 CLI 命令,實現與交換機的編程式交互。支持 JSON 和 XML 格式,結合 JSON?RPC 可模擬 CLI 行為。
conf t
feature nxapi
nxapi http port 80
nxapi https port 443
ip http secure-server
end
ip http secure-server
,并綁定合法證書。POST https://nexus-switch/api/ins
Content-Type: application/json
{
"ins_api": {
"version": "1.0",
"type": "cli_show",
"chunk": "0",
"sid": "1",
"input": "show version",
"output_format": "json"
}
}
> 返回示例包含設備型號、IOS 版本等信息,通過 JSON 路徑快速解析。
部分新機型支持 RESTConf(基于 YANG 數據模型),可用 curl -X GET https:// < switch > /restconf/data/interfaces
獲取接口列表信息。
場景 | 工具/庫 | 說明 |
---|---|---|
Nexus 自動化 | curl + Groovy | 官方推薦腳本上傳方式,配合 CI/CD 完全無狀態調用 |
API 文檔交互 | Swagger UI | 在線調試與請求生成 |
NX?API 調用 | Postman/Insomnia | 支持存儲環境變量、Token 管理、請求示例導出 |
網絡自動化腳本 | Python + requests | 使用 requests 庫發送 JSON?RPC,結合 NXTookit 庫 |
admin
憑證和 API Token 存放在 Vault、Jenkins 憑證中,避免硬編碼。/service/rest/v1/status
和 NX?API Sandbox 監測接口健康狀況。一個真實案例顯示,某大型電商團隊將 Nexus API 與 NX?API 集成至同一 Jenkins Pipeline:
該流程實現制品管理與網絡變更統一編排,推送速度提升 40%,故障恢復時間縮短 60%。
本文系統梳理了 Nexus API 在制品管理與網絡自動化中的雙重價值,涵蓋:
下一步建議:
掌握 Nexus API,你將擁有貫通制品倉庫與網絡設備的自動化金鑰,開啟 DevOps + NetOps 新篇章!
原文引自YouTube視頻:https://www.youtube.com/watch?v=_tn1dDmxiBw