Pubblicare il primo pacchetto in un feed di Azure Artifacts

Azure Artifacts consente agli sviluppatori di gestire in modo efficiente tutte le dipendenze da un singolo feed. I feed in Azure Artifacts fungono da repository aziendali per l'archiviazione, la gestione e la condivisione di pacchetti, sia all'interno di un team, tra organizzazioni o pubblicamente su Internet. Azure Artifacts supporta un'ampia gamma di tipi di pacchetti, tra cui NuGet, npm, Python, Maven, Cargo e Pacchetti universali.

Questo articolo illustra come pubblicare il primo pacchetto NuGet in un feed di Azure Artifacts. Facoltativamente, è possibile seguire le istruzioni per usare GitHub Copilot per configurare il progetto e preparare il pacchetto per la pubblicazione.

Prerequisiti

Prodotto Requisiti
Azure DevOps - Un'organizzazione di Azure DevOps.
- Un progetto Azure DevOps .
- Scaricare e installare .NET SDK versione 9.0.200 o versione successiva.
GitHub Copilot (facoltativo) - Configurare GitHub Copilot e Visual Studio Code. Se non è ancora stata effettuata l'iscrizione, è disponibile una versione di valutazione gratuita di GitHub Copilot di 30 giorni.

Creare un feed

Se si dispone già di un feed, è possibile ignorare questa sezione. In caso contrario, seguire questa procedura per creare un nuovo feed in Azure Artifacts:

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Selezionare Artefatti, e quindi selezionare Crea feed.

  3. Specificare un nome descrittivo per il feed e impostarne La visibilità per definire chi può visualizzare i pacchetti nel feed. Definire l'ambito del feed e selezionare la casella di controllo Origini upstream se si desidera includere pacchetti da origini pubbliche.

  4. Al termine, fare clic su Crea.

    Screenshot che mostra come creare un nuovo feed in Azure DevOps Services.

  1. Accedere alla raccolta di Azure DevOps e quindi passare al progetto.

  2. Selezionare Artefatti, e quindi selezionare Crea feed.

  3. Specificare un nome descrittivo per il feed e impostarne La visibilità per definire chi può visualizzare i pacchetti nel feed. Definire l'ambito del feed e selezionare la casella di controllo Origini upstream se si desidera includere pacchetti da origini pubbliche.

  1. Al termine, fare clic su Crea.

    Screenshot che mostra come creare un nuovo feed in Azure DevOps Server 2022.

Preparare il pacchetto

In questo esempio si userà una libreria di classi .NET Core di esempio e si configureranno i metadati del pacchetto prima di compilare il progetto e creare un pacchetto NuGet pronto per la pubblicazione nel feed. Se non si ha ancora un progetto, seguire le istruzioni riportate in questa guida per creare una libreria di classi .NET con Visual Studio Code.

  1. Aprire il progetto in Visual Studio Code e quindi selezionare il file csproj . Aggiungere i metadati del pacchetto all'interno del <PropertyGroup> tag. Il file dovrebbe essere simile al seguente:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <RootNamespace>demo_class_library</RootNamespace>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    
        <PackageId>YOUR_PACKAGE_NAME</PackageId>
        <Version>YOUR_PACKAGE_VERSION</Version>
        <Authors>YOUR_NAME</Authors>
        <Company>YOUR_COMPANY</Company>
    
      </PropertyGroup>
    
    </Project>
    
  2. Eseguire il comando seguente nella directory del progetto per compilare il progetto e creare un pacchetto .nupkg . Il pacchetto si troverà nella bin\release cartella .

    dotnet pack
    

Configurare il provider di credenziali Azure Artifacts

Per eseguire l'autenticazione con il feed, è prima necessario installare il provider di credenziali Azure Artifacts. Usando il programma di installazione dello strumento incluso in dotnet, è possibile installare il provider di credenziali dall'interfaccia della riga di comando usando il comando seguente:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool

Se il file nuget.config a livello di repository è configurato per usare solo le origini di Azure Artifacts, esegui il comando di installazione da fuori di tale directory oppure imposta esplicitamente nuget.org come origine:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json

Facoltativamente, aggiungere lo strumento a una versione principale(ad esempio, nelle immagini del contenitore in cui la riproducibilità è importante):

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json

Primo utilizzo

La prima volta che si esegue un'operazione che richiede l'autenticazione, usare uno degli approcci seguenti:

  1. Esegui il comando con --interactive in modo che dotnet possa chiederti di accedere. Questo è l'approccio consigliato per la maggior parte degli scenari di sviluppo locali.

Prima di eseguire un comando interattivo, assicurarsi che il progetto sia configurato e che il feed venga aggiunto a nuget.config. Per informazioni dettagliate sull'installazione, vedere Configurazione del progetto.

Dopo aver configurato e connesso il progetto al feed, passare alla directory del progetto ed eseguire:

dotnet restore --interactive

Questo comando consente di accedere e acquisire un token di sessione. Dopo aver effettuato l'accesso, è possibile eseguire comandi autenticati senza --interactive finché il token di sessione memorizzato nella cache rimane valido. Per altre informazioni, vedere Session token cache locations.

  1. Per gli scenari non interattivi, ad esempio i contenitori Docker e l'automazione personalizzata, fornire le credenziali tramite le variabili environment.

Per Azure Pipelines, usare l'attività NuGetAuthenticate@1 per eseguire l'autenticazione nel feed prima di eseguire comandi come dotnet restore o dotnet nuget push. Per ulteriori dettagli, vedere Ripristinare i pacchetti NuGet con Azure Pipelines.

Connettersi a un feed

Seguire questa procedura per configurare il progetto e connettersi al feed di Azure Artifacts. Assicurarsi di aver installato il provider di credenziali di Azure Artifacts e la versione più recente di NuGet, come descritto nei prerequisiti.

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Selezionare Artefatti e quindi selezionare il tuo feed dal menu a discesa.

  3. Selezionare Connetti al feed e poi selezionare dotnet nella sezione NuGet.

  4. Seguire le istruzioni riportate nell'installazione di Project per configurare il file nuget.config. La struttura del file dovrebbe essere simile a una delle seguenti:

    • Feed con ambito di progetto:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • Feed con ambito organizzazione:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Accedere alla raccolta di Azure DevOps e quindi passare al progetto.

  2. Selezionare Artefatti e quindi selezionare il tuo feed dal menu a discesa.

  3. Selezionare Connetti al feed e quindi selezionare dotnet nel riquadro di spostamento a sinistra.

  4. Seguire le istruzioni nella sezione Configurazione progetto per configurare il file nuget.config .

    Screenshot che mostra come connettersi a un feed in Azure DevOps Server 2020 e 2022.

Pubblicare il pacchetto

Eseguire il comando seguente dalla directory del progetto per pubblicare il pacchetto nel feed di Azure Artifacts. Il --api-key parametro è obbligatorio, ma è possibile usare qualsiasi valore stringa durante la pubblicazione in Azure Artifacts.

dotnet nuget push --source <FEED_NAME> --api-key <ANY_STRING> <PACKAGE_PATH>

Passaggi successivi