使用 baget 搭建 nuget 私有服務

現在幾乎所有語言都提供包管理工具,比如 JavaScript 的 npm ,Java 的 Maven ,Dart 的 pub 。.Net 程序當然是 NuGet 。NuGet 也出現很多年了,奇怪的是居然還有很多人不知道。
現在軟件結構越來越複雜,在多個項目中往往需要共享一些庫、組件等等。NuGet 爲我們提供了方便的包管理功能。但是 NuGet 默認提供外網公開的服務,如果我們希望在公司內部或者自己家裏進行一些庫的管理,那麼就需要自己來搭建 NuGet 私服。
Nuget 私服有幾個工具可以搭建如官方的Nuget.Server 、ProGet 、BaGet 等。這裏推薦 BaGet 這個工具,它跨平臺又非常輕量化,易於部署,一行 docker 命令就可以運行起來。這裏必選吐槽下 Nuget.Server 做爲 NuGet 官方提供的一個工具居然還是依賴 Framework 的。

運行 BaGet 服務

BaGet 有多種部署方式。比如可以從 Github 上拉取 release 後的發佈文件手工 dotnet 運行,也可以直接使用 docker 容器化部署。現在是容器化的時代,那麼當然首先 docker 部署咯。

# The following config is the API Key used to publish packages.
# You should change this to a secret value to secure your server.
ApiKey=NUGET-SERVER-API-KEY

Storage__Type=FileSystem
Storage__Path=/var/baget/packages
Database__Type=Sqlite
Database__ConnectionString=Data Source=/var/baget/baget.db
Search__Type=Database

先創建一個 baget.env 的環境變量配置文件

docker run --rm --name nuget-server -p 5555:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget" loicsharma/baget:latest

使用 docker run 命令運行

訪問一下這個服務,可以看到服務成功運行起來了。但是現在一個包都沒有,所以顯示的是 nothing here ...

構建 NuGet 包

要推送 NeGet 包,首先我們需要包我們的庫打包成 NuGet 包。

打包可以使用 nuget 的 cli 來打包。其實最簡單的是在我們的項目上右鍵屬性,在打包這個 tab 頁上勾選 “在構建時生成 NuGet 包”,這樣在我們每次生成項目完成的時候會在bin目錄下生成對應的 nuget 包。

推送 NuGet 包

Nuget 包打包完成後,就可以推送自己的包到這個服務了。

 dotnet nuget push -s http://localhost:5555/v3/index.json .\AgileConfig.Client.1.1.8.11.nupkg

使用 dotnet nuget push 命令進行推送

推送成功會顯示“已推送包”,期間有個警告,因爲我們沒有設置 apikey ,這個忽略。

再次刷新 BaGet 的頁面,就可以看到我們剛纔推送上去的包了。

使用 BaGet 源

爲了能夠讓我們的 VisualStudio 能夠檢索 BaGet 服務,我們需要進行簡單的配置。

打開 VS > 工具 > 選項 > NuGet 包管理器 > 程序包源,點擊綠色的加號,配置源名稱baget , 地址:
http://192.168.0.117:5555/v3/index.json 點擊確定。

隨便打開一個項目解決方案,在 NuGet 包檢索頁面選擇程序包源給 “baget” ,瀏覽頁面就會列出這個源當前具有的包。這樣就可以正常進行管理與安裝了。

總結

通過以上我們簡單的演示瞭如果通過 docker 命令來運行一個 BaGet 服務。BaGet 跨平臺、輕量化、易於部署,體驗非常不錯,大家可以試試。
https://github.com/loic-sharma/BaGet

關注我的公衆號一起玩轉技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章