二、Sonatype Nexus Repository REST API 深度入門

1. Nexus Repository 簡介

Sonatype Nexus Repository(以下簡稱 Nexus)是一款功能強大的制品庫管理工具,支持 Maven、npm、Docker、PyPI 等多種格式。通過 Nexus REST API,你可以在 CI/CD 管道中無縫地完成倉庫創(chuàng)建、權(quán)限配置、構(gòu)件上傳與清理等關(guān)鍵操作,大幅提升 DevOps 自動化效率。

2. Nexus API 架構(gòu)與端點

Nexus 3.x 版本主要提供以下 REST 接口:

根路徑 描述
/service/rest/v1/ 核心倉庫管理(Repository)
/service/rest/v1/script 腳本管理與執(zhí)行(Groovy)
/service/rest/v1/security 用戶、角色與權(quán)限配置

3. 實戰(zhàn):四步在 CI/CD 中創(chuàng)建 Maven 倉庫

以下示例展示如何在 Jenkins Pipeline 中通過 REST API 自動創(chuàng)建一個 Maven Hosted 倉庫,并賦予特定角色權(quán)限。

3.1 準備 Groovy 腳本 createMavenRepo.groovy

import org.sonatype.nexus.repository.storage.WritePolicy
repository.createMavenHosted(
  'internal-maven',            // 倉庫名稱
  'maven2',                    // 格式
  'default',                   // Blob store
  true,                        // 發(fā)布策略
  WritePolicy.ALLOW,           // 寫入策略
  false,                       // 暫存策略
  null                         // 恢復策略
)

3.2 上傳并執(zhí)行腳本

# 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. 執(zhí)行腳本
curl -u admin:admin123 \
  -X POST http://nexus.example.com/service/rest/v1/script/createMavenRepo/run

> 提示:在 Jenkins Pipeline 中,可使用 sh 步驟依次執(zhí)行上述命令,并在參數(shù)化構(gòu)建時傳入倉庫名稱、Blob store 等。

4. 構(gòu)件上傳與清理


三、Cisco Nexus 交換機 NX?API 快速上手

1. 什么是 NX?API?

NX?API 是 Cisco Nexus 網(wǎng)絡(luò)設(shè)備提供的 API 接口,允許開發(fā)者用 HTTP/HTTPS 調(diào)用 CLI 命令,實現(xiàn)與交換機的編程式交互。支持 JSONXML 格式,結(jié)合 JSON?RPC 可模擬 CLI 行為。

2. 啟用與安全配置

conf t
  feature nxapi
  nxapi http port 80
  nxapi https port 443
  ip http secure-server
end

3. 請求示例

3.1 JSON?RPC 調(diào)用

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"
  }
}

> 返回示例包含設(shè)備型號、IOS 版本等信息,通過 JSON 路徑快速解析。

3.2 RESTConf 對象模型

部分新機型支持 RESTConf(基于 YANG 數(shù)據(jù)模型),可用 curl -X GET https:// < switch > /restconf/data/interfaces 獲取接口列表信息。


四、工具與腳本集成

場景 工具/庫 說明
Nexus 自動化 curl + Groovy 官方推薦腳本上傳方式,配合 CI/CD 完全無狀態(tài)調(diào)用
API 文檔交互 Swagger UI 在線調(diào)試與請求生成
NX?API 調(diào)用 Postman/Insomnia 支持存儲環(huán)境變量、Token 管理、請求示例導出
網(wǎng)絡(luò)自動化腳本 Python + requests 使用 requests 庫發(fā)送 JSON?RPC,結(jié)合 NXTookit 庫

五、最佳實踐與安全建議

  1. 憑證管理:將 admin 憑證和 API Token 存放在 Vault、Jenkins 憑證中,避免硬編碼。
  2. 最小權(quán)限原則:為 CI/CD 服務(wù)賬號創(chuàng)建專屬角色,僅包含所需倉庫和操作權(quán)限。
  3. 審計日志:定期導出 Nexus 審計日志與 NX?API 調(diào)用記錄,以便追溯與合規(guī)。
  4. 性能監(jiān)控:利用 Nexus 內(nèi)部 /service/rest/v1/status 和 NX?API Sandbox 監(jiān)測接口健康狀況。
  5. 版本兼容:關(guān)注 Nexus 與 Nexus Pro、NX OS 版本差異,升級前務(wù)必在測試環(huán)境驗證 API 行為。

六、實踐案例:CI/CD 與網(wǎng)絡(luò)統(tǒng)一自動化

一個真實案例顯示,某大型電商團隊將 Nexus API 與 NX?API 集成至同一 Jenkins Pipeline:

  1. 構(gòu)件發(fā)布:構(gòu)建完成后,調(diào)用 Nexus API 創(chuàng)建臨時 Maven 倉庫并上傳快照。
  2. 網(wǎng)絡(luò)配置:并行觸發(fā) Python 腳本,通過 NX?API 動態(tài)修改流量鏡像、ACL 規(guī)則。
  3. 回滾機制:若任一步驟失敗,Pipeline 調(diào)用 Nexus API 刪除臨時倉庫,并通過 NX?API 恢復交換機配置。
  4. 監(jiān)控與告警:所有 API 調(diào)用結(jié)果推送到 ELK Stack,關(guān)聯(lián) Grafana 儀表盤監(jiān)控指標。

該流程實現(xiàn)制品管理與網(wǎng)絡(luò)變更統(tǒng)一編排,推送速度提升 40%,故障恢復時間縮短 60%。


七、總結(jié)與下一步

本文系統(tǒng)梳理了 Nexus API 在制品管理與網(wǎng)絡(luò)自動化中的雙重價值,涵蓋:

下一步建議

掌握 Nexus API,你將擁有貫通制品倉庫與網(wǎng)絡(luò)設(shè)備的自動化金鑰,開啟 DevOps + NetOps 新篇章!

原文引自YouTube視頻:https://www.youtube.com/watch?v=_tn1dDmxiBw

上一篇:

如何通過 Evernote API 進行多媒體筆記的創(chuàng)建

下一篇:

深入解析谷歌翻譯API:基于Gemini的規(guī)模化高質(zhì)量翻譯與創(chuàng)新應(yīng)用
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費