前言
應該或許大概每個公司都會有自己的NuGet
包倉庫吧。
不會吧!不會吧!不會吧!不會還沒有自己的倉NuGet
倉庫吧!
開個玩笑,雖然我覺得有沒有無所謂,但是為了這篇部落格它必須有所謂。
在工具的選擇上我瞭解到的其實也不多,除了本文要說的BaGet
,還了解有Java
開發的Nexus
也支援NuGet
。
為什麼選擇BaGet
呢?因為他是asp.net core
開發的。
上手
1、下載
下載地址:https://github.com/loic-sharma/BaGet/tags
下載後的專案:
然後我們釋出專案,直接在專案的根目錄執行:dotnet publish
,釋出的檔案放在bin
資料夾最深處。
2、配置檔案appsettings.json
開啟發布後的資料夾,找到appsettings.json
檔案。
主要是修改ApiKey
和Database
資訊,我們這裡ApiKey先預設為空。
3、執行專案
直接雙擊資料夾的baget.exe
執行程式,dotnet run
也是可以的。
在瀏覽器訪問 http://localhost:5000
如果出現如下介面就表示啟動成功了
執行成功後,你配置的資料庫會新增一個庫,我這邊配置的是Mysql
3、推送包
我們進到網頁的 Upload
tab
欄可以看到不同工具上傳所用的命令
我們就採用第一種.NET CLI
的方式上傳。
在本地準備一個Nuget
包,我這邊已經準備好了(vs
右鍵屬性就有打包功能)。
然後進到cmd
命令列如下命令,由於我沒有配置ApiKey
,所以會提示
dotnet nuget push -s http://localhost:5000/v3/index.json datatekoms.utils.3.4.4.nupkg
推送成功後的頁面
資料庫會生成如下幾張表,Packages
存放的就是包的基本資訊。
然後進到專案的根目錄會看到我們上傳的包檔案(我這邊專案懶得啟動,所以用的是linux
下的截圖)
4、引用包
找到我們自己的包管理器地址
進到vs
的NuGet
包管理器配置包源
然後搜尋就可以找到我們推送的包了
docker
部署
docker
部署與正常部署asp.net core
專案一樣,唯一需要注意的是最好把包的地址掛載到本地,避免docker
重啟資料丟失。
docker run -itd --name baget.server -p 3579:80 -v /usr/local/baget/package:/app/packages baget-img
api-key
上面我們演示的是沒有設定ApiKey
,如果設定了ApiKey
我們再推送是會出現驗證失敗
這時候我們需要在命令後面加上我們設定的ApiKey
刪除包
刪除包的命令也很簡單
dotnet nuget delete -s http://localhost:50561/v3/index.json datatekoms.utils 3.4.4
由於我們對刪除行為的配置預設是隻刪除列表,不刪除檔案,所以執行刪除後檔案還是存在
如果想連帶檔案一起刪除,我們可以這樣配置,啟用硬刪除:HardDelete
BaGet
其他配置資訊可以參考官方文件:https://loic-sharma.github.io/BaGet/