MAIN MENU
Le blogue Devolutions

Annonces, mises à jour et analyses de Devolutions

Devolutions PowerShell Universal hosting a NuGet feed illustration for the blog.

Héberger un flux NuGet dans PowerShell Universal avec Sleet

Parcourez Sleet comme flux NuGet v3 statique, les dossiers publiés dans PowerShell Universal, Register-PSResourceRepository, un script de téléversement pour pousser des paquets, et un tableau dans le tableau de bord des résultats de Find-PSResource.

Selon la définition de Microsoft, NuGet est le gestionnaire de paquets pour .NET. Les outils clients NuGet permettent de produire et de consommer des paquets.

nuget.org et la PowerShell Gallery sont des exemples de flux NuGet. Ils permettent aux utilisateurs de publier des paquets pour que d’autres les consomment. Lorsque vous utilisez Publish-PSResource ou Publish-Module, vous créez un paquet NuGet et vous le publiez dans un flux.

Créer un flux NuGet dans PowerShell Universal

Les flux NuGet typiques reposent sur des milliers de lignes de code pour offrir des mécanismes robustes de stockage des métadonnées, de mise en cache et de recherche de paquets. Pour les utilisateurs qui ont un nombre limité de paquets, un outil peut créer des flux statiques : Sleet. L’outil en ligne de commande Sleet crée des fichiers JSON statiques et un stockage pour les paquets NuGet. Il ne prend pas en charge autant d’options que d’autres technologies, mais il offre de la simplicité.

Pour le reste de cet article, nous verrons comment utiliser Sleet pour créer un flux NuGet dans PowerShell Universal.

Installer Sleet

Vous pouvez installer Sleet comme outil global dotnet si le SDK .NET est installé.

dotnet tool install -g sleet

Une fois installé, vous pouvez simplement exécuter sleet pour accéder à l’outil.

Configurer un flux Sleet

Ensuite, configurons un flux Sleet simple. Créez un répertoire, puis une configuration Sleet locale.

New-Item -ItemType Directory C:\sleet\
Set-Location C:\sleet
sleet createconfig --local

Ouvrez le fichier sleet.json généré et configurez les propriétés du flux. L’URI de base pointera vers un dossier publié dans PowerShell Universal.

{
  "username": "",
  "useremail": "",
  "sources": [
    {
      "name": "myLocalFeed",
      "type": "local",
      "path": "C:\\sleet\\myfeed",
      "baseURI": "http://localhost:5000/feed/"
    }
  ]
}

Publier un paquet

Pour publier un paquet, vous pouvez utiliser la commande Sleet suivante contre un seul paquet NuGet ou un répertoire de paquets. J’ai publié Posh-SSH.

Invoke-WebRequest 'https://www.powershellgallery.com/api/v2/package/Posh-SSH/3.0.8' -OutFile "C:\Users\adamr\Downloads\posh-ssh.3.0.8.nupkg"
Set-Location C:\sleet
sleet push -s myLocalFeed "C:\Users\adamr\Downloads\posh-ssh.3.0.8.nupkg"

Sleet mettra à jour tous les fichiers de flux nécessaires, créera la bonne structure de dossiers et déplacera le nupkg dans le dossier de stockage flatcontainer.

Héberger dans PowerShell Universal

Ensuite, il faut configurer PowerShell Universal pour servir le flux NuGet. Nous pouvons le faire avec un dossier publié. Vous devrez indiquer le chemin du dossier du flux NuGet.

New-PSUPublishedFolder -Path C:\sleet\myfeed -RequestPath /feed

Vous pouvez vérifier que le flux est accessible en visitant l’URL suivante.

http://localhost:5000/feed/index.json

Enregistrer un dépôt PowerShellGet

PowerShellGet v3 est requis, car PowerShellGet v2 ne prend pas en charge les flux NuGet v3. Sleet ne génère que des flux NuGet v3.

Install-Module PowerShellGet -AllowPrerelease -Force

Une fois PowerShellGet v3 installé, vous pouvez utiliser Register-PSResourceRepository pour enregistrer votre nouveau flux.

Register-PSResourceRepository -Name 'MyLocalFeed' -Uri 'http://localhost:5000/feed/index.json'

Vous pouvez vérifier que le dépôt a été enregistré correctement avec Find-PSResource.

Find-PSResource -Name posh-ssh
Name     Version Prerelease Repository  Description
----     ------- ---------- ----------  -----------
Posh-SSH 3.0.8.0            MyLocalFeed Provide SSH and SCP functionality for executing commands against remot…

Vous pourrez aussi utiliser des commandes comme Save-PSResource.

Save-PSResource -Name posh-ssh -Path .\ -Repository MyLocalFeed

Téléverser de nouveaux paquets dans PowerShell Universal

Au lieu d’exécuter manuellement les commandes Sleet sur la machine PowerShell Universal, vous pouvez créer un script PSU qui accepte un fichier. Créez un nouveau script dans PSU avec le contenu suivant.

param(
     [File]$File
)

$Package = [IO.Path]::GetTempFileName()
[System.IO.File]::WriteAllBytes($Package, $File.Content)
Set-Location C:\sleet
sleet push -s myLocalFeed $Package

Une fois le script terminé, les fichiers du flux NuGet auront été mis à jour et le paquet sera disponible via les commandes PowerShellGet.

PowerShell Universal job output showing Sleet pushing PSWindowsUpdate to the local feed.
Sortie Sleet push dans PowerShell Universal
Find-PSResource -Name pswindowsupdate
Name            Version Prerelease Repository  Description
----            ------- ---------- ----------  -----------
PSWindowsUpdate 2.2.0.3            MyLocalFeed This module contain cmdlets to manage Windows Update Client.

Afficher les paquets dans un tableau de bord

Vous pouvez utiliser le cmdlet Find-PSResource pour afficher tous les paquets de votre flux.

New-UDDashboard -Title 'PowerShell Universal' -Content {
    $Packages = Find-PSResource -Name * -Repository MyLocalFeed | Select Name,Version,Description
    New-UDTable -Data $Packages
}
PowerShell Universal dashboard table listing Polly, Posh-SSH, and PSWindowsUpdate packages.
Paquets du flux Sleet dans un tableau de bord

Conclusion

Dans cet article, nous avons vu comment configurer un flux NuGet semi-statique avec Sleet et PowerShell Universal.

Prêt à construire? Téléchargez PowerShell Universal.