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
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Creare form tipizzati con Angular
Effettuare il refresh dei dati di una QuickGrid di Blazor
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Creare alias per tipi generici e tuple in C#
Eseguire una query su SQL Azure tramite un workflow di GitHub
Generare la software bill of material (SBOM) in GitHub
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Code scanning e advanced security con Azure DevOps
Verificare la provenienza di un commit tramite le GitHub Actions