<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>CI/CD | The .NET Blog</title><link>https://thedotnetblog.com/it/tags/ci/cd/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>it</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Wed, 15 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/it/tags/ci/cd/index.xml" rel="self" type="application/rss+xml"/><item><title>Smettetela di Trattare i Database come Fiocchi di Neve Speciali: Azure DevOps + SQL Projects nel Modo Giusto</title><link>https://thedotnetblog.com/it/news/emiliano-montesdeoca/azure-devops-sql-projects-ci-cd-fundamentals/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/it/news/emiliano-montesdeoca/azure-devops-sql-projects-ci-cd-fundamentals/</guid><description>Il modello pipeline di SQL Projects in Azure DevOps dimostra che la consegna dei database può essere ripetibile, sicura e testabile quando i team adottano la disciplina CI/CD code-first.</description><content:encoded>&lt;p&gt;Molti team affermano di fare DevOps, poi distribuiscono le modifiche al database manualmente dal laptop di qualcuno. Quella contraddizione è esattamente ciò che questa guida Azure SQL risolve. SQL projects più pipeline Azure DevOps rendono la consegna dei database deterministica, verificabile e sufficientemente sicura per flussi di lavoro di produzione reali.&lt;/p&gt;
&lt;p&gt;Fonte originale: &lt;a href="https://devblogs.microsoft.com/azure-sql/fundamentals-of-azure-devops-with-sql-projects/"&gt;https://devblogs.microsoft.com/azure-sql/fundamentals-of-azure-devops-with-sql-projects/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La parte più forte dell&amp;rsquo;approccio non è la sintassi YAML, è la &lt;strong&gt;sequenza di disciplina&lt;/strong&gt;: build prima, publish dopo, e proteggi il percorso di deployment con privilegio minimo e identità senza password. Costruire un &lt;code&gt;.sqlproj&lt;/code&gt; con &lt;code&gt;dotnet build&lt;/code&gt; valida la compatibilità con la piattaforma di destinazione in anticipo e produce un artefatto DACPAC che può essere promosso attraverso gli ambienti.&lt;/p&gt;
&lt;p&gt;Il mio punto di vista è diretto: &lt;strong&gt;se il tuo schema non viene costruito in CI, il tuo processo di qualità del database è basato principalmente sulla speranza&lt;/strong&gt;. Il successo locale in SSMS o VS Code non è una garanzia di rilascio.&lt;/p&gt;
&lt;p&gt;Il design del deployment è anche rinfrescante &lt;strong&gt;pragmatico&lt;/strong&gt;. Usa connessioni di servizio legate a identità Entra, concedi ruoli database con ambito per il confronto di schema e dati, e automatizza l&amp;rsquo;apertura temporanea del firewall per gli IP del runner con pulizia garantita. Questo è il tipo di igiene operativa che i team saltano fino a quando una revisione di una violazione non li costringe a riconsiderare tutto.&lt;/p&gt;
&lt;h3 id="raccomandazioni-pratiche-da-applicare-immediatamente"&gt;Raccomandazioni pratiche da applicare immediatamente&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Separa le pipeline di build e deploy.&lt;/strong&gt; La build dovrebbe essere eseguita sui cambiamenti di branch e fallire velocemente. Il deploy dovrebbe essere specifico per ambiente e regolato da policy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archivia le stringhe di connessione target&lt;/strong&gt; e i metadati dell&amp;rsquo;infrastruttura in variabili di pipeline protette, e ruota le revisioni di governance per le assegnazioni di ruolo regolarmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantieni le versioni di SqlPackage esplicite e bloccate in CI&lt;/strong&gt; per evitare cambiamenti di comportamento a sorpresa.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Non privilegiare troppo presto.&lt;/strong&gt; Partire con &lt;code&gt;db_ddladmin&lt;/code&gt;, &lt;code&gt;db_datareader&lt;/code&gt; e &lt;code&gt;db_datawriter&lt;/code&gt; è una base migliore che assegnare &lt;code&gt;db_owner&lt;/code&gt; a ogni principale della pipeline &amp;ldquo;tanto per farlo funzionare.&amp;rdquo; Scala solo quando un requisito concreto di deployment dimostra che è necessario.&lt;/p&gt;
&lt;p&gt;Un&amp;rsquo;altra conclusione importante è la &lt;strong&gt;portabilità&lt;/strong&gt;. Poiché SQL Projects funzionano sulla toolchain .NET SDK, questo pattern non è solo per Azure DevOps. Gli stessi fondamenti si traducono in GitHub Actions o altri orchestratori, il che rende questa guida strategica, non vincolata a una piattaforma.&lt;/p&gt;
&lt;h2 id="in-sintesi"&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Se la tua organizzazione tratta ancora la consegna dello schema come un processo speciale al di fuori del CI/CD delle app, questo è il tuo modello di migrazione. Non hai bisogno di platform engineering eroica. Hai bisogno di &lt;strong&gt;coerenza, sicurezza basata sull&amp;rsquo;identità&lt;/strong&gt; e la volontà di smettere di spedire modifiche al database attraverso percorsi di privilegio ad hoc.&lt;/p&gt;
&lt;p&gt;I team che lo faranno spediranno più velocemente con meno rollback. I team che rimanderanno continueranno a pagare la tassa nascosta dei deployment manuali del piano dati.&lt;/p&gt;</content:encoded></item></channel></rss>