使用 baget 搭建 nuget 私有服务
現(xiàn)在幾乎所有語言都提供包管理工具,比如 JavaScript 的 npm ,Java 的 Maven ,Dart 的 pub 。.Net 程序當(dāng)然是 NuGet 。NuGet 也出現(xiàn)很多年了,奇怪的是居然還有很多人不知道。
現(xiàn)在軟件結(jié)構(gòu)越來越復(fù)雜,在多個項目中往往需要共享一些庫、組件等等。NuGet 為我們提供了方便的包管理功能。但是 NuGet 默認提供外網(wǎng)公開的服務(wù),如果我們希望在公司內(nèi)部或者自己家里進行一些庫的管理,那么就需要自己來搭建 NuGet 私服。
Nuget 私服有幾個工具可以搭建如官方的Nuget.Server 、ProGet 、BaGet 等。這里推薦 BaGet 這個工具,它跨平臺又非常輕量化,易于部署,一行 docker 命令就可以運行起來。這里必選吐槽下 Nuget.Server 做為 NuGet 官方提供的一個工具居然還是依賴 Framework 的。
運行 BaGet 服務(wù)
BaGet 有多種部署方式。比如可以從 Github 上拉取 release 后的發(fā)布文件手工 dotnet 運行,也可以直接使用 docker 容器化部署?,F(xiàn)在是容器化的時代,那么當(dāng)然首先 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-KEYStorage__Type=FileSystem Storage__Path=/var/baget/packages Database__Type=Sqlite Database__ConnectionString=Data?Source=/var/baget/baget.db Search__Type=Database先創(chuàng)建一個 baget.env 的環(huán)境變量配置文件
docker?run?--rm?--name?nuget-server?-p?5555:80?--env-file?baget.env?-v?"$(pwd)/baget-data:/var/baget"?loicsharma/baget:latest使用 docker run 命令運行
訪問一下這個服務(wù),可以看到服務(wù)成功運行起來了。但是現(xiàn)在一個包都沒有,所以顯示的是 nothing here ...
構(gòu)建 NuGet 包
要推送 NeGet 包,首先我們需要包我們的庫打包成 NuGet 包。
打包可以使用 nuget 的 cli 來打包。其實最簡單的是在我們的項目上右鍵屬性,在打包這個 tab 頁上勾選 “在構(gòu)建時生成 NuGet 包”,這樣在我們每次生成項目完成的時候會在bin目錄下生成對應(yīng)的 nuget 包。
推送 NuGet 包
Nuget 包打包完成后,就可以推送自己的包到這個服務(wù)了。
?dotnet?nuget?push?-s?http://localhost:5555/v3/index.json?.\AgileConfig.Client.1.1.8.11.nupkg使用 dotnet nuget push 命令進行推送
推送成功會顯示“已推送包”,期間有個警告,因為我們沒有設(shè)置 apikey ,這個忽略。
再次刷新 BaGet 的頁面,就可以看到我們剛才推送上去的包了。
使用 BaGet 源
為了能夠讓我們的 VisualStudio 能夠檢索 BaGet 服務(wù),我們需要進行簡單的配置。
打開 VS > 工具 > 選項 > NuGet 包管理器 > 程序包源,點擊綠色的加號,配置源名稱baget , 地址:http://192.168.0.117:5555/v3/index.json 點擊確定。
隨便打開一個項目解決方案,在 NuGet 包檢索頁面選擇程序包源給 “baget” ,瀏覽頁面就會列出這個源當(dāng)前具有的包。這樣就可以正常進行管理與安裝了。
總結(jié)
通過以上我們簡單的演示了如果通過 docker 命令來運行一個 BaGet 服務(wù)。BaGet 跨平臺、輕量化、易于部署,體驗非常不錯,大家可以試試。
https://github.com/loic-sharma/BaGet
關(guān)注我的公眾號一起玩轉(zhuǎn)技術(shù)
總結(jié)
以上是生活随笔為你收集整理的使用 baget 搭建 nuget 私有服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有BUG!!!慎用default文本
- 下一篇: 浅析 Dapr 里的云计算设计模式