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
Creare una libreria CSS universale: Clip-path
Triggerare una pipeline su un altro repository di Azure DevOps
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Creare una libreria CSS universale - Rotazione degli elementi
Ottenere un token di accesso per una GitHub App
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Migliorare l'organizzazione delle risorse con Azure Policy
Change tracking e composition in Entity Framework
Gestire la cancellazione di una richiesta in streaming da Blazor
Introduzione alle Container Queries
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps