Avvio rapido: usare GitHub Actions per connettersi a Database di Azure per MySQL - Server flessibile
Usare un flusso di lavoro GitHub Actions per distribuire aggiornamenti di database al server flessibile di Database di Azure per MySQL.
Prerequisiti
Saranno necessari gli elementi seguenti:
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Un account GitHub. Se non si ha un account GitHub, è possibile iscriversi gratuitamente.
Un repository GitHub con i dati di esempio (
data.sql
).Importante
Questa guida introduttiva presuppone che sia stato clonato un repository GitHub nel computer, in modo da poter aggiungere l'indirizzo IP associato a una regola del firewall, se necessario.
Un’istanza del server flessibile di Database di Azure per MySQL.
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. Questa definizione contiene i vari 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. |
Distribuzione | 1. Distribuire il database. |
Generare le credenziali per la distribuzione
Creare un'entità servizio con il comando az ad sp create-for-rbac dell'interfaccia della riga di comando di Azure. Eseguire questo comando con Azure Cloud Shell nel portale di Azure oppure selezionando il pulsante Prova.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Il parametro --json-auth
è disponibile nelle versioni >dell'interfaccia della riga di comando di Azure = 2.51.0. Versioni precedenti a questo utilizzo --sdk-auth
con un avviso di deprecazione.
Nell'esempio precedente sostituire i segnaposto con l'ID sottoscrizione e il nome del gruppo di risorse. L'output è un oggetto JSON con le credenziali di assegnazione di ruolo che forniscono l'accesso all'app del servizio app simile a questo esempio. Copiare l'oggetto JSON per un uso successivo.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Copiare la stringa di connessione MySQL
Nel portale di Azure passare all’istanza del server flessibile di Database di Azure per MySQL e aprire Impostazioni>Stringhe di connessione. Copiare la stringa di connessione per ADO.NET. Sostituire i valori segnaposto your_database
e your_password
.
Importante
- Per il server singolo di Database di Azure per MySQL, usare Uid=adminusername@servername. Si noti che il @servername è obbligatorio.
- Per Database di Azure per MySQL server flessibile, usare Uid=adminusername senza .@servername
La stringa di connessione verrà usata come segreto GitHub.
Configurare i segreti di GitHub
In GitHub, andare al proprio repository.
Passare a Impostazioni nel menu di spostamento.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto repository.
Incollare l'intero output JSON del comando dell'interfaccia della riga di comando di Azure nel campo del valore del segreto. Assegnare al segreto il nome
AZURE_CREDENTIALS
.Selezionare Aggiungi segreto.
Aggiungere il flusso di lavoro
Passare ad Actions per il repository GitHub.
Selezionare Set up your workflow yourself (Configurare manualmente il flusso di lavoro).
Eliminare tutti quello che segue la sezione
on:
del file del flusso di lavoro. Ad esempio, il flusso di lavoro rimanente potrebbe essere simile al seguente.name: CI on: push: branches: [ main ] pull_request: branches: [ main ]
Rinominare il flusso di lavoro
MySQL for GitHub Actions
e aggiungere le azioni checkout e login. Queste azioni eseguiranno il checkout del codice del sito e l'autenticazione con Azure usando il segreto GitHubAZURE_CREDENTIALS
creato in precedenza.name: MySQL 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@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
Usare l'azione di distribuzione di Azure MySQL per connettersi all'istanza di MySQL. Sostituire
MYSQL_SERVER_NAME
con il nome del server. È necessario avere un file di dati MySQL denominatodata.sql
al livello radice del repository.- uses: azure/mysql@v1 with: server-name: MYSQL_SERVER_NAME connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }} sql-file: './data.sql'
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/workflows
del repository.name: MySQL 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@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/mysql@v1 with: server-name: MYSQL_SERVER_NAME connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }} sql-file: './data.sql' # Azure logout - name: logout run: | az logout
Esaminare la distribuzione
Passare ad Actions per il repository GitHub.
Aprire il primo risultato per visualizzare i log dettagliati dell'esecuzione del flusso di lavoro.
Pulire le risorse
Quando il database del server flessibile di Database di Azure per MySQL e il repository non sono più necessari, pulire le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.