I workflow di GitHub possono essere usati anche per eseguire dei processi ricorrenti che, per esempio, aggiornano le anagrafiche di alcune persone su base giornaliera, calcolano dei dati aggregati per generare dei report e così via. Spesso, queste operazioni, si basano sull'uso di SQL, in quanto c'è proprio la necessità di doversi collegare ad un database per leggere e processare i dati.
SQL Azure, però, non solo ha un accesso limitato da username e password (per semplificare, ma potrebbe anche essere RBAC con Microsoft Entra ID), ma c'è anche un secondo livello di controllo degli accessi basato sull'indirizzo IP. Se questo non è whitelisted nel firewall del SQL Server, allora non si potrà accedere al database ed elaborare i dati, anche se le credenziali di accesso sono giuste. Andando da portale di Azure, tuttavia, è piuttosto semplice aggiungere un indirizzo IP (o un range di questi), per fare in modo che ci si possa connettere da remoto, ma i runner di GitHub sono invece su un range dinamico di indirizzi, quindi non è possibile conoscerlo a priori.
Per questo motivo, si può usare questo "trucchetto" per abilitare la connessione ad Azure:
- name: Create firewall rule uses: azure/login@v1 with: creds: '${{ secrets.AZURE_CREDENTIALS }}'
La chiamata alla login di Azure, infatti, va anche ad aprire la connessione sul firewall di SQL, creando una connessione sicura.
A questo punto, ci basterà semplicemente invocare sqlcmd o simili, per intervenire sul database ed eseguire le operazioni che più ci interessano:
- name: Execute query shell: pwsh run: | sqlcmd -S <server>.database.windows.net -d <database-name> -U <user> -P '<password>' -Q "SELECT * FROM [table]" -o output.txt
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Usare il colore CSS per migliorare lo stile della pagina
Definire stili a livello di libreria in Angular
Cancellare una run di un workflow di GitHub
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Usare le navigation property in QuickGrid di Blazor
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Usare una container image come runner di GitHub Actions
Ottenere un token di accesso per una GitHub App