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
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Utilizzare Copilot con Azure Cosmos DB
Creare un'applicazione React e configurare Tailwind CSS
Eseguire le GitHub Actions offline
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Disabilitare automaticamente un workflow di GitHub (parte 2)
Estrarre dati randomici da una lista di oggetti in C#
Migliorare l'organizzazione delle risorse con Azure Policy
Eseguire una query su SQL Azure tramite un workflow di GitHub
Utilizzare un service principal per accedere a Azure Container Registry
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Generare la software bill of material (SBOM) in GitHub
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub