本文摘自PZY,原文鏈接:https://pzy.io/archives/2020/3/baget-tutorial-1.html
對于 .NET 開發者來說,nuget 是必不可少的程式包管理工具,相應地,大部分開發團隊都需要在內部搭建 Nuget 服務器,以管理私有 nupkg 包,本教程所使用的 Nuget 服務器,不是微軟官方的,而是 BaGet,BaGet 是一款基于 .NET 開發的輕量級的 NuGet 服務器,它是開源、跨平臺和云原生的,
Nuget 服務器
Baget - Nuget 服務器
BaGet 可以運行的平臺有:本地計算機、Docker、AWS、Azure、Google Cloud 和阿里云,本文只談在本地計算機上運行 BaGet,
運行(Run)
由于 BaGet 是基于 .NET 開發的,首先需要下載并安裝 .NET Core SDK,然后下載并提取 BaGet 最新版本,再用 dotnet BaGet.dll 啟動服務,最后在瀏覽器中瀏覽http://localhost:5000/,
運行 Baget 成功后,可通過編輯 appsettings.json檔案來修改 BaGet 的配置, 有關配置的完整串列,請參閱下文的 BaGet 配置,
配置(Configure)
您可以通過編輯 appsettings.json 檔案來修改 BaGet 的配置,
需要API密鑰
您可以要求用戶提供密碼(稱為API密鑰)來發布程式包, 為此,您可以在 ApiKey 欄位中設定所需的 API 密鑰,
{
"ApiKey": "NUGET-SERVER-API-KEY",
...
}
用戶現在必須提供 API 密鑰來推送軟體包:
dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY package.1.0.0.nupkg
啟用直通快取
直通快取可以從上游源索引軟體包,使用直通快取需要執行以下操作:
如果從 nuget.org 還原的速度很慢,則可以加快構建速度
在離線情況下啟用程式包還原
以下鏡像設定將 BaGet 配置為從 nuget.org 索引包:
{
... "Mirror": { "Enabled": true, "PackageSource": "https://api.nuget.org/v3/index.json" },
...
}
注意:PackageSource 是 NuGet 服務索引值,
啟用包硬洗掉
為了防止出現“左鍵盤(left pad)”問題,BaGet的默認配置不允許洗掉程式包, 每當 BaGet 收到軟體包洗掉請求時,它都會“取消列出”軟體包, 未列出的軟體包是無法發現的,但如果您知道該軟體包的 ID 和版本,仍可以下載, 您可以通過設定 PackageDeletionBehavior 來覆寫此行為:
{
...
"PackageDeletionBehavior": "HardDelete",
...
}
啟用包覆寫
通常,如果已經獲取 ID 和版本,BaGet 將拒絕軟體包上傳, 您可以通過設定AllowPackageOverwrites將 BaGet 配置為覆寫現有的軟體包:
{
...
"AllowPackageOverwrites": true,
... }
資料庫配置
BaGet 支持多個資料庫引擎來存盤軟體包資訊,支持的資料庫有:MySQL、SQLite、SQLServer、PostgreSQL、AzureTable,每個資料庫引擎都需要一個連接字串來配置連接, 請訪問 ConnectionStrings.com,以了解如何為每個資料庫引擎創建正確的連接字串,
您可以使用環境變數或通過編輯appsettings.json檔案來配置所選的資料庫引擎,
環境變數
有兩個與資料庫配置有關的環境變數, 它們是:
Database__Type: 要使用的資料庫引擎,它應是上面列出的資料庫之一,例如 PostgreSql 或 Sqlite ,
Database__ConnectionString:資料庫引擎的連接字串,
appsettings.json
資料庫設定位于 appsettings.json 組態檔中的 Database 鍵下:
{
...
"Database": {
"Type": "Sqlite",
"ConnectionString": "Data Source=baget.db"
},
...
}
有兩個與資料庫配置有關的設定:
型別:要使用的資料庫引擎,它應是上面列出的資料庫之一,例如 PostgreSql 或 Sqlite,
ConnectionString:資料庫引擎的連接字串,
由于時間關系,本文暫時寫到這里,下文將敘述搭建私有 Nuget 服務器教程后續內容,比如 Docker 部署,包推送等等,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/54775.html
標籤:.NET Core
