Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:Database SQL di Azure
Inizia con GitHub Actions utilizzando un flusso di lavoro per distribuire aggiornamenti del database a Database SQL di Azure.
Prerequisiti
È necessario:
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un repository GitHub con un pacchetto dacpac (
Database.dacpac). Se non si ha un account GitHub, è possibile iscriversi gratuitamente. - Database SQL di Azure. Avvio rapido: creare un database SQL di Azure singolo.
- File con estensione .dacpac da importare nel database.
Panoramica dei file del flusso di lavoro
Un flusso di lavoro GitHub Actions viene definito da un file YAML (con estensione yml) nel percorso /.github/workflows/ del repository. Questo file include i passaggi e i parametri che costituiscono il flusso di lavoro.
Il file è costituito da due sezioni:
| Sezione | Attività |
|---|---|
| Autenticazione | 1. Generare le credenziali per la distribuzione. |
| Distribuire | 2. Distribuire il database. |
Generare le credenziali per la distribuzione
Per usare l'azione di accesso di Azure con OIDC, è necessario configurare una credenziale di identità federata in un'applicazione Microsoft Entra o in un'identità gestita assegnata dall'utente.
Opzione 1: Applicazione Microsoft Entra
- Creare un'applicazione Microsoft Entra con un'entità servizio tramite il portale di Azure, Azure CLI o Azure PowerShell.
- Copia i valori per Client ID, Subscription ID e Directory (tenant) ID per utilizzarli successivamente nel flusso di lavoro di GitHub Actions.
- Assegna un ruolo appropriato all'entità servizio tramite il portale di Azure, Azure CLI o Azure PowerShell.
- Configurare una credenziale di identità federata in un'applicazione Microsoft Entra per considerare attendibili i token rilasciati da GitHub Actions nel repository GitHub.
Opzione 2: Identità gestita assegnata dall'utente
- Creare un'identità gestita assegnata dall'utente.
- Copiare i valori per ID Client, ID Sottoscrizione e ID Directory (tenant) da utilizzare successivamente nel flusso di lavoro di GitHub Actions.
- Assegnare un ruolo appropriato all'identità gestita assegnata dall'utente.
- Configurare una credenziale di identità federata in un'identità gestita assegnata dall'utente per considerare attendibili i token emessi da GitHub Actions nel repository GitHub.
Copiare la stringa di connessione SQL
Nel portale di Azure passare al database SQL di Azure e aprire Impostazioni>Stringhe di connessione. Copiare la stringa di connessione per ADO.NET. Sostituire i valori dei segnaposto your_database e your_password.
La stringa di connessione verrà usata come segreto GitHub AZURE_SQL_CONNECTION_STRING.
Configurare i segreti di GitHub
Devi fornire l'ID client, l'ID directory (tenant) e l'ID sottoscrizione della tua applicazione all'azione di accesso. Questi valori possono essere forniti direttamente nel flusso di lavoro oppure possono essere archiviati nei segreti gitHub e riportati nel flusso di lavoro. Salvare i valori come segreti GitHub è l'opzione più sicura.
In GitHub, andare al proprio repository.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto del repository.
Annotazioni
Per migliorare la sicurezza del flusso di lavoro nei repository pubblici, usare i segreti dell'ambiente anziché i segreti del repository. Se l'ambiente richiede l'approvazione, un'attività non può accedere ai segreti dell'ambiente fino a quando non viene approvata da uno dei revisori richiesti.
Creare segreti per
AZURE_CLIENT_ID,AZURE_TENANT_IDeAZURE_SUBSCRIPTION_ID. Copiare questi valori dall'applicazione Microsoft Entra o dall'identità gestita assegnata dall'utente per i segreti GitHub:segreto GitHub Applicazione Microsoft Entra o identità gestita assegnata dall'utente AZURE_CLIENT_ID ID cliente AZURE_SUBSCRIPTION_ID ID sottoscrizione AZURE_TENANT_ID ID della directory (tenant) Annotazioni
Per motivi di sicurezza, è consigliabile usare i segreti di GitHub anziché passare i valori direttamente al flusso di lavoro.
Aggiungere il segreto della stringa di connessione SQL
In GitHub, andare al proprio repository.
Passare a Impostazioni nel menu di spostamento.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto del repository.
Incollare la stringa di connessione SQL. Assegnare al segreto il nome
AZURE_SQL_CONNECTION_STRING.Selezionare Aggiungi segreto.
Aggiungi il flusso di lavoro
Passare ad Actions per il repository GitHub.
Selezionare Set up your workflow yourself (Configurare manualmente il flusso di lavoro).
Eliminare tutto dopo la sezione
on:del file del flusso di lavoro. Ad esempio, il flusso di lavoro rimanente può essere simile al seguente.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]Rinominare il flusso di lavoro
SQL for GitHub Actionse aggiungere le azioni checkout e login. Queste azioni eseguiranno il checkout del codice del sito e l'autenticazione con Azure usando il segreto GitHubAZURE_CREDENTIALScreato in precedenza.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Usare l'azione Azure SQL Deploy per connettersi all'istanza SQL. È necessario avere un pacchetto dacpac (
Database.dacpac) al livello radice del repository. Usa il segretoAZURE_SQL_CONNECTION_STRINGdi GitHub creato precedentemente.- uses: azure/sql-action@v2.3 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'publish'Completare il flusso di lavoro aggiungendo un'azione di disconnessione da Azure. Ecco il flusso di lavoro completato. Il file verrà visualizzato nella cartella
.github/workflowsdel repository.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/sql-action@v2.3 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'publish' # Azure logout - name: logout run: | az logout
Rivedi la tua distribuzione
Vai a Actions per il tuo repository GitHub.
Aprire il primo risultato per visualizzare i log dettagliati dell'esecuzione del flusso di lavoro.
Pulire le risorse
Quando il database SQL di Azure e il repository non sono più necessari, pulire le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.