BaGet construit un entrepôt privé Nuget (window10 & docker)

1. Construire l'arrière-plan

Dans le développement quotidien de l'entreprise, différents projets auront des bibliothèques de classes publiques et construiront des entrepôts privés. Vous pouvez télécharger et mettre à jour les bibliothèques de classes via Nuget, ce qui peut réduire la charge de travail de maintenance ultérieure. Aujourd'hui, je vais partager comment utiliser Nuget pour construire Entrepôts privés Nuget.

2. Introduction au cadre

BaGet (prononcé "baguette") est un serveur NuGet léger. Il est open source, multiplateforme et déployable dans le cloud.
Vous pouvez exécuter BaGet sur votre plateforme préférée :

  • sur ton ordinateur
  • Docker
  • Azur
  • AWS
  • Google Cloud
  • Nuage d'Alibaba (Aliyun)

3. Construction d'entrepôts privés

1. Environnement

Système d'exploitation : Win10, Docker CentOS 7
: 20.10.21

2. Déployer sur win10

2.1 Installer le SDK

1. Assurez-vous d'avoir installé le SDK .NET
insérez la description de l'image ici

2.2 Télécharger et décompresser le package BaGet

(1) Adresse : https://github.com/loic-sharma/BaGet/releases, il suffit de télécharger BaGet.zip , les deux autres sont des fichiers de code source
insérez la description de l'image ici

(2) Décompressez-le dans un répertoire personnalisé local et vous pourrez voir les fichiers suivants :
insérez la description de l'image ici

2.3 Exécuter le projet

(1) La ligne de commande cmd entre dans le dossier actuel et exécute la commande suivante pour exécuter

dotnet BaGet.dll

(2) Visitez http://localhost:5000/, vous pouvez voir qu'il ressemble au nuget officiel
insérez la description de l'image ici

2.4 Projet de bibliothèque de classes

(1) Créez un projet de bibliothèque de classes nommé [BaGetFirstLib]
insérez la description de l'image ici

(2) Créez un fichier nommé [Test.cs], le code est le suivant :

namespace BaGetFirstLib
{
    
    
    public class Test
    {
    
    
        /// <summary>
        /// 打印Hello Word!  1.0版本
        /// </summary>
        public void Fun()
        {
    
    
            Console.WriteLine("Hello Word!");
        }
        /// <summary>
        /// 新版本增加一个打印自身命名   1.1版本
        /// </summary>
        public static void Fun2()
        {
    
    
            Console.WriteLine($"{
      
      nameof(Fun2)}是静态方法,被直接调用了!");
        }
    }
}

(3) Sélectionnez le projet->clic droit propriétés->package, et remplissez les informations pertinentes en fonction des besoins réels (itérations de version ultérieures, vous pouvez changer la "version du package" puis régénérer le projet) (4) Régénérer le project ou
insérez la description de l'image ici
solution , vous pouvez voir les fichiers empaquetés dans le répertoire bin/Debug, car je les ai empaquetés deux fois, donc voici 1.0 et 1.1
insérez la description de l'image ici

2.5 Publier le package sur Nuget privé

(1) Exécutez la commande suivante pour publier (Remarque : BaGetFirstLib.1.0.0.nupkg est le nom du fichier que vous avez empaqueté)

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

(2) Visitez à nouveau http://localhost:5000, et vous pouvez voir que le fichier de bibliothèque de classes que nous avons empaqueté a été téléchargé
insérez la description de l'image ici

2.6 Utilisation de BaGetFirstLib

(1) Créez un projet de console nommé [BaGetConsoleApp01]
(2) Cliquez pour configurer la "source du package", comme indiqué dans la figure ci-dessous, entrez le contenu suivant pour configurer les informations requises pour référencer l'entrepôt local

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

insérez la description de l'image ici
insérez la description de l'image ici

(3) Installez BaGetFirstLib
(4) Remplacez le contenu de Program.cs comme suit :

// 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();

(5) Vous pouvez voir que la méthode encapsulée dans la bibliothèque de classes BaGetFirstLib a été exécutée avec succès
insérez la description de l'image ici

2.7 Utiliser des mots de passe pour plus de sécurité

Lorsque nous publions ci-dessus, aucun mot de passe n'est requis, alors comment configurer le mot de passe à exiger lors de la publication ? Les étapes sont les suivantes :
(1) Recherchez [appsettings.json] dans le dossier de décompression BaGet et modifiez [ApiKey], définissez-le sur le mot de passe que vous souhaitez définir (
insérez la description de l'image ici
2) À ce stade, la réexécution échouera, car illustré dans la figure ci-dessous (Remarque : ici, un morceau de code a été ajouté au hasard à la classe Test d'origine, et la version 1.2 a été publiée, car s'il n'y a pas de changement à l'avenir, il ne sera pas repoussé) :
insérez la description de l'image ici

(3) Ajoutez des variables et des valeurs de mot de passe d'entrée, qui peuvent être poussées avec succès
insérez la description de l'image ici
insérez la description de l'image ici

3. Déployer sur Docker

3.1 Créer des fichiers associés

(1) Créez un dossier nommé [baget], et créez un dossier nommé [baget-data] dans ce dossier, et un fichier nommé [baget.env], comme suit :

[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

(2) Utilisez la commande vim baget.env pour ajouter le contenu suivant au dossier, où ApiKey doit remplir votre mot de passe

# 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

(3) Utilisez la commande suivante pour extraire l'image docker

docker pull loicsharma/baget

3.2 Tirer l'image

(4) Exécutez BaGet et le port exposé est 5555. Si vous ne pouvez pas y accéder, vous devez configurer un groupe de sécurité en arrière-plan du serveur correspondant (Alibaba Cloud, Tencent Cloud, etc.). $(pwd) lira automatiquement l'ApiKey dans baget.env :

3.3 courir

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

insérez la description de l'image ici

3.4 Accès

insérez la description de l'image ici

4. Fin

C'est la fin de l'article, je ne peux que dire : Good Good Study, Day Day Up !

Je suppose que tu aimes

Origine blog.csdn.net/qq_40600379/article/details/128051759
conseillé
Classement