最近安裝NuGet私服,試用NuGet Servrer 1.7版,發現1.4版起NuGet Server加入了用nuget.exe上傳程式包的功能。

安裝好伺服器後,並在web.config中設定apiKey參數,基本上等同上傳密碼,只要知道apiKey就可使用nuget.exe上傳及刪除NuGet Server程式包。apiKey要注意密碼強度並嚴防外洩,GUID是很不錯的選擇,此處為求簡短易讀,暫用著名的展示用密碼--p@ ssW0rd當作apiKey。

要進行上傳還需要nuget.exe工具程式,要取得可先下載NuGet.exe Command Line bootstrapper,執行後會自動下載最新版,接著即可用
nuget push some.nupkg –s httq://yourNuGetServer/ your_password
指令將程式包上傳到NuGet Server的Packages目錄。

不過,遇上一段小插曲,使用NuGet Server 1.7版,上傳後會回應"Your package was pushed",但卻怎麼都不會新增到Packages目錄,檢視IIS Log及使用ProcMon觀察均未發現錯誤跡象,感覺上NuGet Server收下上傳內容,什麼事都沒做卻回應"搞定了"。

最後,從CodePlex下載NuGet Server 1.9版原始程式碼自行編譯,push/delete功能在1.9版一切正常,測試結果如下:

補充兩點:

  1. 當使用不正確的apiKey(如上圖中的wrongPassword),push仍會得到Your package was pushed訊息(但程式包並未上傳成功),但delete時則會抛回Access denied for package '...'
  2. nuget list可列舉伺服器上的程式包清單,但-s參數指定URL時要多加/nuget,與push/delete不同。

Comments

Be the first to post a comment

Post a comment