Quando si lavora nel mondo open source o per una grande azienda, spesso di incorre nella necessità di dover pubblicare delle librerie così che gli altri possano riutilizzare determinati processi/script di codice. In GitHub, la procedura per pubblicare un pacchetto di NuGet è leggermente diversa rispetto a quanto faremmo in Azure DevOps. Vediamo come.
Per semplicità, infatti, in Azure DevOps spesso si sfrutta il task NuGetCommand, potenzialmente unito al NuGetAuthenticate, per autenticarsi nel feed privato e pubblicare un qualsiasi pacchetto di NuGet. In GitHub, invece, dobbiamo prendere la strada leggermente più lunga, andando a lavorare con i comandi della CLI.
In prima istanza è necessario configurare una nuova sorgente, se non è già stato fatto di default, nel nuget.config, che punta al feed di GitHub dell'utente/organizzazione. E' di solito preferibile farlo dal workflow in automatico poichè sui runner non-Windows, la password deve per forza essere dichiarata in chiaro.
- name: Configure GitHub source shell: pwsh run: | dotnet nuget add source ` "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" ` --name "github-ci" ` --username "${{ github.repository_owner }}" ` --store-password-in-clear-text ` --password "${{ secrets.GITHUB_TOKEN }}"
Il secondo e ultimo passaggio consiste proprio nella pubblicazione del pacchetto. Abbiamo dato per scontato che questo sia già stato creato, poichè i comandi di dotnet pack variano a seconda dell'esigenza. Sfruttando il comando dotnet nuget push andiamo a pubblicare il pacchetto sulla sorgente impostata, ovvero il feed di GitHub.
- name: Publish to GitHub packages shell: pwsh run: | dotnet nuget push ` *.nupkg ` --api-key ${{ secrets.GITHUB_TOKEN }} ` --source "github-ci" ` --skip-duplicate
Lo stesso processo è comunque realizzabile in Azure DevOps, sfruttando gli appositi task di pwsh.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Usare le navigation property in QuickGrid di Blazor
Fornire parametri ad un Web component HTML
Gestire gli accessi con Token su Azure Container Registry
Gestione degli eventi nei Web component HTML
Configurare lo startup di applicazioni server e client con .NET Aspire
Gestire la cancellazione di una richiesta in streaming da Blazor
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Generare la software bill of material (SBOM) in GitHub
Loggare le query più lente con Entity Framework
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database