個人NuGet服務搭建,BaGet保姆及部署教程

暢飲無緒發表於2022-05-17

前言

應該或許大概每個公司都會有自己的NuGet包倉庫吧。

不會吧!不會吧!不會吧!不會還沒有自己的倉NuGet倉庫吧!

開個玩笑,雖然我覺得有沒有無所謂,但是為了這篇部落格它必須有所謂。

在工具的選擇上我瞭解到的其實也不多,除了本文要說的BaGet,還了解有Java開發的Nexus也支援NuGet

為什麼選擇BaGet呢?因為他是asp.net core開發的。

image

上手

1、下載

下載地址:https://github.com/loic-sharma/BaGet/tags

image

下載後的專案:

image

然後我們釋出專案,直接在專案的根目錄執行:dotnet publish,釋出的檔案放在bin資料夾最深處。

2、配置檔案appsettings.json

開啟發布後的資料夾,找到appsettings.json檔案。

image

主要是修改ApiKeyDatabase資訊,我們這裡ApiKey先預設為空。

3、執行專案

直接雙擊資料夾的baget.exe執行程式,dotnet run也是可以的。

image

在瀏覽器訪問 http://localhost:5000 如果出現如下介面就表示啟動成功了

image

執行成功後,你配置的資料庫會新增一個庫,我這邊配置的是Mysql

image

3、推送包

我們進到網頁的 Upload tab欄可以看到不同工具上傳所用的命令

image

我們就採用第一種.NET CLI的方式上傳。

在本地準備一個Nuget包,我這邊已經準備好了(vs右鍵屬性就有打包功能)。

image

image

然後進到cmd命令列如下命令,由於我沒有配置ApiKey,所以會提示

dotnet nuget push -s http://localhost:5000/v3/index.json datatekoms.utils.3.4.4.nupkg

image

推送成功後的頁面

image

資料庫會生成如下幾張表,Packages存放的就是包的基本資訊。

image

image

然後進到專案的根目錄會看到我們上傳的包檔案(我這邊專案懶得啟動,所以用的是linux下的截圖)

image

4、引用包

找到我們自己的包管理器地址

image

進到vsNuGet包管理器配置包源

image

然後搜尋就可以找到我們推送的包了

image

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我們再推送是會出現驗證失敗

image

image

這時候我們需要在命令後面加上我們設定的ApiKey

image

刪除包

刪除包的命令也很簡單

dotnet nuget delete -s http://localhost:50561/v3/index.json datatekoms.utils 3.4.4

image

由於我們對刪除行為的配置預設是隻刪除列表,不刪除檔案,所以執行刪除後檔案還是存在

image

如果想連帶檔案一起刪除,我們可以這樣配置,啟用硬刪除:HardDelete

image

BaGet其他配置資訊可以參考官方文件:https://loic-sharma.github.io/BaGet/

相關文章