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
Utilizzare Container Queries nominali
Introduzione ai web component HTML
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Triggerare una pipeline su un altro repository di Azure DevOps
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Managed deployment strategy in Azure DevOps
Escludere alcuni file da GitHub Secret Scanning
Utilizzare i variable font nel CSS
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Generare una User Delegation SAS in .NET per Azure Blob Storage