• BaGet搭建Nuget私仓(window10&docker)


    一、搭建背景

    在公司的日常开发中,不同项目会有公共的类库,搭建私仓,大家可通过Nuget进行类库的下载与更新,可减少后续维护工作量,今天分享一下如果使用Nuget搭建Nuget私仓。

    二、框架简介

    BaGet(发音为“baguette”)是一个轻量级的NuGet服务器。它是开源的、跨平台、可云部署的。
    您可以在首选的平台上运行BaGet:

    • 在您的计算机上
    • Docker
    • Azure
    • AWS
    • Google Cloud
    • Alibaba Cloud (Aliyun)

    三、私仓搭建

    1、环境

    操作系统:win10、CentOS 7
    Docker:20.10.21

    2、win10上部署

    2.1安装SDK

    1.请确保您已经安装了.NET SDK
    在这里插入图片描述

    2.2下载和解压BaGet包

    (1)地址:https://github.com/loic-sharma/BaGet/releases ,下载BaGet.zip即可,另外两个是源码文件
    在这里插入图片描述

    (2)解压到本地自定义目录即可,可看到有以下文件:
    在这里插入图片描述

    2.3运行项目

    (1)cmd命令行进入当前文件夹,并执行以下命令运行

    dotnet BaGet.dll
    
    • 1

    (2)访问http://localhost:5000/ ,可看到与官方的nuget长得一毛一样
    在这里插入图片描述

    2.4类库项目

    (1)创建一个名为【BaGetFirstLib】的类库项目
    在这里插入图片描述

    (2)创建一个名为【Test.cs】的文件,代码如下:

    namespace BaGetFirstLib
    {
        public class Test
        {
            /// 
            /// 打印Hello Word!  1.0版本
            /// 
            public void Fun()
            {
                Console.WriteLine("Hello Word!");
            }
            /// 
            /// 新版本增加一个打印自身命名   1.1版本
            /// 
            public static void Fun2()
            {
                Console.WriteLine($"{nameof(Fun2)}是静态方法,被直接调用了!");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    (3)选中项目->右键属性->包,按实际需要填写相关的信息即可(后续版本迭代,可更改“包版本”后,重新生成项目即可)
    在这里插入图片描述
    (4)重新生成项目或解决方案,可在bin/Debug目录下,看到打包好的文件,因为我打包了两次,所以这里有1.0和1.1
    在这里插入图片描述

    2.5将包发布到私有Nuget中

    (1)执行以下命令进行发布(注:BaGetFirstLib.1.0.0.nupkg为你打包的文件名)

    dotnet nuget push -s http://localhost:5000/v3/index.json BaGetFirstLib.1.0.0.nupkg
    
    • 1

    (2)重新访问http://localhost:5000,可看到已经将我们打包的类库文件上传上来了
    在这里插入图片描述

    2.6使用BaGetFirstLib

    (1)创建名为【BaGetConsoleApp01】的控制台项目
    (2)点击配置“程序包源”,如下图所示,输入以下内容配置引用本地仓库需要的信息

    Private Package source
    http://localhost:5000/v3/index.json
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    (3)安装BaGetFirstLib
    (4)Program.cs的内容替换如下:

    // See https://aka.ms/new-console-template for more information
    using BaGetFirstLib;
    Console.WriteLine("即将打印来自BaGetFirstLib的内容:");
    Test test = new Test();
    Console.WriteLine("New一个对象来调用方法:");
    test.Fun();
    
    Console.WriteLine("");
    Console.WriteLine("调用静态方法:");
    Test.Fun2();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (5)可看到成功运行BaGetFirstLib类库中封装的方法
    在这里插入图片描述

    2.7使用密码增加安全性

    上面我们publish的时候,都是不需要密码的,那如何配置publish时需要密码呢?步骤如下:
    (1)找到BaGet解压文件夹中的【appsettings.json】,并编辑【ApiKey】,设置为你自己想设置的密码
    在这里插入图片描述
    (2)此时重新执行会失败,如下图(注:这里我在原来的Test类中随意加了一段代码,发布了1.2版,因后续如果没任何更改,也不会重新推送上去的):
    在这里插入图片描述

    (3)添加输入密码变量及值,可成功推送
    在这里插入图片描述
    在这里插入图片描述

    3、Docker上部署

    3.1创建相关文件

    (1)创建一个名【baget】的文件夹,并在该文件夹中创建名为【baget-data】的文件夹,和【baget.env】文件,如下:

    [root ~]# cd /
    [root /]# ls
    bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    [root /]# cd home
    [root home]# ls
    baget
    [root home]# cd baget/
    [root baget]# ls
    baget-data  baget.env
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (2)使用vim baget.env 命令,往文件夹添加以下内容,其中ApiKey需要填写您的密码

    # The following config is the API Key used to publish packages.
    # You should change this to a secret value to secure your server.
    ApiKey=你的密码
    
    Storage__Type=FileSystem
    Storage__Path=/var/baget/packages
    Database__Type=Sqlite
    Database__ConnectionString=Data Source=/var/baget/baget.db
    Search__Type=Database
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (3)使用以下命令拉取docker镜像

    docker pull loicsharma/baget
    
    • 1
    3.2拉取镜像

    (4)运行BaGet,向外暴露的端口为5555,如果访问不了,则需要到对应的服务器(阿里云、腾讯云等)后台设置安全组。$(pwd)会自动读取baget.env中的ApiKey:

    3.3运行
    docker run --rm --name nuget-server -p 5555:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget" loicsharma/baget:latest
    
    • 1

    在这里插入图片描述

    3.4访问

    在这里插入图片描述

    四、结束

    文章到此结束,只能说:Good Good Study,Day Day Up!

  • 相关阅读:
    为什么MyBatis是Java数据库持久层的明智选择
    Linux command: ps and netstat
    【深度学习CV-baseline】GoogleNet-更深的卷积神经网络
    YoloV8改进策略:FastVit与YoloV8完美融合,重参数重构YoloV8网络(全网首发)
    kubeadm安装高可用k8s集群
    算法工程师跳槽至B站被原公司索赔200万,法院二审判决:无需赔偿
    代码随想录2.5——数组:904水果成篮、76最小覆盖子串
    ORACLE游标详解
    查询出跨4个表以上的查询
    wpf Viewport3D 学习
  • 原文地址:https://blog.csdn.net/qq_40600379/article/details/128051759