將 NuGet Package 發行至 ProGet

之前 自建 NuGet Server 曾經介紹過使用 NuGet.Server 套件自建 NuGet server 來儲存 NuGet package,不過使用 NuGet.Server 套件在整個介面及管理功能上都過於簡陋,不適合當做正式服務,因此最後選擇 ProGet 這個產品來當做 NuGet server,過程中遭遇到問題,特別紀錄一下其中的眉眉角角

安裝 ProGet

  1. 下載 ProGet

    ProGet 有免費版跟付費版本差別,但安裝檔是相同的,實際安裝時才需選擇

    下載位置 :Download ProGet

  2. 安裝 ProGet

    安裝上沒有什麼特別之處,只要依實際情況設定即可

    • 授權宣告

      1agreement

    • 選擇版本

      2edition

    • 註冊

      3regit

    • 安裝路徑

      4installpath

    • 資料庫

      5db

    • Host 方式

      6host

    • 執行身份

      7account

    • 安裝

      8sumary

設定 ProGet

  1. 登入 ProGet

    預設帳號密碼:Admin/Admin

    9login

  2. 建立 Feed

    • Create New Feed

      10newfeed

    • Create Feed

      選擇 Feed Type 及設定 Feed name

      11createfeed

  3. 其他設定

    依實際環境調整

    12feedproperty

發行 Package

  1. Packages –> Add Package

    14addpackage

  2. 選擇發行方式

    15publishtype

使用 NuGet api 發行 Package 的安全性設定

這是本篇文章的重點,特別拉出來另外說明,可參照官方說明 - API Keys in ProGet

  • NuGet api 用法

    16nugetapi

  1. Feed 未設定 NuGet API Key,使用帳密上傳

    這是 ProGet 的預設做法,但跟其他 NuGet Server 做法不同

    • 使用 nuget api

    • 語法

      NuGet.exe push {package} -ApiKey {Account}:{Password} -Source http://{ProGet_Server}/nuget/{Feed_Name}/
      
    • 範例

      17nugetapipush

    • 使用 NuGet Package Explorer

      18npepublished

  2. Feed 設定 NuGet API Key,需允許匿名上傳

    未設定會出現 403 (Forbidden) 錯誤

    22nugetapi403

    23npe403

    • 設定 –> Manage Users & Tasks

      19manageuser

    • Tasks –> Add Permission

      20addpermission

    • Anonymous 加至 Principals,並把 Publish Packages 加至 Tasks

      21addprivilige

    • 成功上傳

      24nugetapiok

      25npeok

心得

ProGet 在使用流程還有不小的改善空間,也缺乏系統化的文件來讓第一次使用的人快速上手,以我為例,明明我已經有其他 NuGet server 的使用經驗,但在使用 ProGet 卻佔不到便宜,在權限問題上卡了好久

說明文件及畫面功能的文字也對不起來,明明是個簡單設定卻一直找不到,畫面與文件上的文字不一致造成不少誤導

參考資訊

  1. API Keys in ProGet