一款轻量级的NuGet服务器

一、简介

BaGet (发音为“baguette”) 是一个轻量级的 NuGet、Symbol 服务器。它是开源的、跨平台的和云化的,可以运行再自己得电脑、Docker、Azure、AWS、Google Cloud 、Alibaba Cloud (Aliyun) 等。支持 MySQL、SQLite:、SqlServer、PostgreSQL、Azure Table Storage 这些数据存储方式。

二、部署

BaGet 部署有两种方式,一种是使用 BaGet 已经准备好的 Applicatio 发布文件,另一种是使用 Source Code 自己进行发布,当然第一种相对简单,也是常用的部署方式。

2.1 Realease

在 GitHub 找到 BaGet 仓库,如下图点击 “BaGet latest realease” 进行下载 BaGet 官方提供的 realease 文件
一款轻量级的NuGet服务器_第1张图片
跳转到下面页面后,点击 BaGet.zip 进行下载 BaGet 发布的程序文件
一款轻量级的NuGet服务器_第2张图片
下载完成后 ,对 BaGet.zip 解压, 可以看到程序的发布文件,可以部署到自己想部署的地方,如下图
一款轻量级的NuGet服务器_第3张图片
试着在本地运行一下看看,在 Windows Terminal 中打开,然后运行下面命令,可以看到已经启动,通过本地 5000、5001 端口即可访问

dotnet BaGet.dll

一款轻量级的NuGet服务器_第4张图片
访问 http://localhost:5000/ 可以看到如下界面,是不是与 nuget.org web 很像,这里可以查询我们的包等操作
一款轻量级的NuGet服务器_第5张图片
如果有的小伙伴想装 B,隐藏 BaGet 标识,在 BaGet\wwwroot_content\BaGet.Web\css\site.css 添加下面 css 代码,即可把 BaGet 相关的链接隐藏

.main-container > div:last-child {
    display: none;
}
.navbar-nav > li:last-child {
    display: none;
}

一款轻量级的NuGet服务器_第6张图片

2.2 Source code

源码的方式,其实也就是自己发布一下 Source code 程序,好处是自己可以对 Source code 进行修改进行定制
一款轻量级的NuGet服务器_第7张图片
一款轻量级的NuGet服务器_第8张图片
一款轻量级的NuGet服务器_第9张图片
一款轻量级的NuGet服务器_第10张图片

三、Packages、DB

packages 文件夹,存储着 push 的包文件,这个文件夹及文件夹内的文件不可删除,删除或者丢失后会导致包下载失败
一款轻量级的NuGet服务器_第11张图片
DB 文件,在没有配置在线数据库的情况下,会使用默认的 SQLite DB,其文件存储在发布文件目录下,名为 baget.db 存储着包的各种信息,用于查询包信息使用,SQLite DB 文件可以使用 SQLiteSpy 进行查看
一款轻量级的NuGet服务器_第12张图片
一款轻量级的NuGet服务器_第13张图片

四、配置

BaGet 也有一些非常多得配置,如 ApiKey、复推策略、包存储介质等

4.1 ApiKey

ApiKey 用于安全问题, push 包时候的一个密码,可以防止不让别人随便推送。如下:

{
    "ApiKey": "NUGET-SERVER-API-KEY",
    ...
}

4.2 覆盖

正常情况下,push 一个包,如果 id 和版本已经被占用,是推送不上去的。可以通过设置来配置 BaGet 覆盖已经存在的包。如下:

{
    ...
    "AllowPackageOverwrites": true,
    ...
}

4.3 包存储

包的存储,默认是存储在程序目录下面,也可以配置 OSS 进行存储。如下:

{
    ...
  "Storage": {
    "Type": "FileSystem",
    "Path": ""
  },
    ...
}  
{
    ...
    "Storage": {
        "Type": "AliyunOss",
        "Endpoint": "oss-us-west-1.aliyuncs.com",
        "Bucket": "foo",
        "AccessKey": "",
        "AccessKeySecret": "",
        "Prefix": "lib/baget" // optional
    },
    ...
}

你可能感兴趣的:(.Net,架构,.net)