2025/03/13

如何使用 cURL 刪除與查詢 GitHub Packages 的 NuGet 套件版本

在 GitHub Packages 上,你可以透過 API 來查詢或刪除已發布的 NuGet 套件版本。本篇文章將介紹如何使用 curl 來執行這些操作。

🔍 查詢 NuGet 套件的所有版本

如果你想要取得某個 GitHub Organization 內的 NuGet 套件的所有版本,可以使用以下 curl 指令:

curl -H "Authorization: Bearer ghp_xxxxxx" \
     -H "Accept: application/vnd.github+json" \
     "https://api.github.com/orgs/YourOrgName/packages/nuget/ProjectName/versions"

這段指令會:

  • 使用 -H "Authorization: Bearer ghp_xxxxxx" 提供你的 GitHub Personal Access Token(PAT)來進行身份驗證。
  • 加上 -H "Accept: application/vnd.github+json" 以確保回傳的 JSON 資料格式符合最新 API 版本。
  • 向 GitHub API 發送請求,列出 Organization YourOrgName 下,NuGet 套件 ProjectName 的所有版本。

範例回應結果:

[
  {
    "id": 12345678,
    "name": "1.0.0",
    "created_at": "2024-03-13T12:34:56Z"
  },
  {
    "id": 87654321,
    "name": "0.9.0",
    "created_at": "2024-03-10T10:20:30Z"
  }
]

其中的 "id" 就是該版本的 Package ID,你可以用它來刪除該版本。

---

🗑️ 刪除特定的 NuGet 套件版本

如果你想要刪除某個特定版本的 NuGet 套件(例如 1.0.0),你需要取得對應的 Package ID,然後使用以下指令:

curl -X DELETE \
     -H "Authorization: Bearer ghp_xxxxxx" \
     "https://api.github.com/orgs/YourOrgName/packages/nuget/ProjectName/versions/YourPackageID"

這段指令會:

  • 使用 -X DELETE 發送刪除請求。
  • 使用 -H "Authorization: Bearer ghp_xxxxxx" 進行身份驗證。
  • 刪除 Organization YourOrgName 下,NuGet 套件 ProjectName 的特定版本(對應的 YourPackageID)。

如果刪除成功,GitHub API 會回傳類似以下的訊息:

{
  "message": "Package version deleted successfully."
}

⚠️ 注意事項

  • 請確保你的 GitHub Personal Access Token (PAT) 擁有 delete:packagesread:packages 權限,否則 API 會回傳 403 Forbidden
  • 刪除套件版本後,無法恢復,請謹慎操作!
  • 請使用你的 **Organization 名稱** 和 **專案名稱** 替換 YourOrgNameProjectName

🔗 延伸閱讀

透過這些 API,你可以自動化管理 GitHub Packages 的 NuGet 套件,提高開發與部署的效率!🚀