Azure Pipelines for Azure Database for MySQL: Servidor flexible
Después de cada compilación correcta con Azure Pipelines, puede implementar automáticamente las actualizaciones de base de datos en Servidor flexible de Azure Database for MySQL. Se puede usar una tarea de la CLI de Azure para actualizar la base de datos con un archivo SQL o un script SQL insertado en la base de datos. Esta tarea se puede ejecutar en agentes multiplataforma que se ejecutan en los sistemas operativos Linux, macOS o Windows.
Requisitos previos
Una cuenta de Azure. Si no tiene una, obtenga la versión de evaluación gratuita.
Una conexión de servicio de Azure Resource Manager a la cuenta de Azure
Los agentes hospedados por Microsoft tienen la CLI de Azure preinstalada. Si usa agentes privados en su lugar, instale la CLI de Azure en los equipos donde se ejecute el agente de compilación y versión. Si ya hay un agente en el equipo donde la CLI de Azure está instalada, reinícielo para asegurarse de que se actualizan todas las variables de fase pertinentes.
En este tutorial rápido se usan como punto de partida los recursos creados en una de estas guías:
- Para crear una instancia de Azure Database for MySQL: servidor flexible, use Inicio rápido: Creación de una instancia de Azure Database for MySQL con Azure Portal o Inicio rápido: Creación de una instancia de Azure Database for MySQL: servidor flexible mediante la CLI de Azure.
Uso de un archivo SQL
En el siguiente ejemplo, se muestra cómo pasar argumentos de base de datos y ejecutar el comando execute
.
- task: AzureCLI@2
displayName: Azure CLI
inputs:
azureSubscription: <Name of the Azure Resource Manager service connection>
scriptLocation: inlineScript
arguments:
-SERVERNAME mydemoserver `
-DBNAME pollsdb `
-DBUSER pollsdbuser`
-DBPASSWORD pollsdbpassword
inlineScript: |
az login --allow-no-subscription
az mysql flexible-server execute --name $(SERVERNAME) \
--admin-user $(DBUSER) --admin-password '$(DBPASSWORD)' \
--database-name $(DBNAME) \
--file-path /code/sql/db-schema-update.sql
Uso de un script SQL insertado
En el siguiente ejemplo, se muestra cómo ejecutar un script SQL insertado con el comando execute
.
- task: AzureCLI@2
displayName: Azure CLI
inputs:
azureSubscription: <Name of the Azure Resource Manager service connection>
scriptLocation: inlineScript
arguments:
-SERVERNAME mydemoserver `
-DBNAME pollsdb `
-DBUSER pollsdbuser`
-DBPASSWORD pollsdbpassword
-INLINESCRIPT
inlineScript: |
az login --allow-no-subscription
az mysql flexible-server execute --name $(SERVERNAME) \
--admin-user $(DBUSER) --admin-password '$(DBPASSWORD)' \
--database-name $(DBNAME) \
--query-text "UPDATE items SET items.retail = items.retail * 0.9 WHERE items.id =100;"
Entradas de la tarea
Puede ver la lista completa de todas las entradas de la tarea al usar una tarea de la CLI de Azure con Azure Pipelines.
Parámetro | Descripción |
---|---|
azureSubscription | (Obligatorio) Proporcione la suscripción de Azure Resource Manager de la implementación. Este parámetro se muestra únicamente cuando la versión de la tarea seleccionada es 0.*, ya que la versión 1.0 de la tarea de la CLI de Azure solo admite suscripciones Azure Resource Manager. |
scriptType | (Obligatorio) Proporcione el tipo de script. Los scripts admitidos son PowerShell, PowerShell Core, Bat, Shell y script. Cuando se ejecuta en un agente de Linux, seleccione una de las siguientes opciones: bash o pscore . Cuando se ejecuta en un agente de Windows, seleccione una de las siguientes opciones: batch , ps o pscore . |
scriptLocation | (Obligatorio) Proporcione la ruta de acceso al script, por ejemplo, la ruta de acceso del archivo real, o use Inline script al especificar scripts insertados. El valor predeterminado es scriptPath . |
scriptPath | (Obligatorio) Ruta de acceso completa del script (.ps1, .bat o .cmd si se usa un agente basado en Windows, o .ps1 o .sh si se usa un agente basado en Linux), o bien la ruta de acceso correspondiente al directorio de trabajo predeterminado. |
inlineScript | (Obligatorio) Aquí se pueden escribir los scripts insertados. Si usa un agente de Windows, use PowerShell, PowerShell Core o scripts por lotes; si usa un agente basado en Linux, use en su lugar scripts de PowerShell Core o de shell. En los archivos por lotes, use el prefijo "call" antes de cada comando de Azure. También se pueden pasar variables predefinidas y personalizadas a este script mediante argumentos. Ejemplo para PowerShell, PowerShellCore y el shell: az --version az account show Ejemplo para script por lotes: call az --version call az account show |
argumentos | (Opcional) Proporcione todos los argumentos pasados al script. Por ejemplo, -SERVERNAME mydemoserver . |
powerShellErrorActionPreference | (Opcional) Antepone la línea $ErrorActionPreference = 'VALUE' al inicio del script de PowerShell o PowerShell Core. El valor predeterminado es stop. Los valores admitidos son stop, continue y silentlyContinue. |
addSpnToEnvironment | (Opcional) Agrega el identificador de la entidad de servicio y la clave del punto de conexión de Azure que haya elegido al entorno de ejecución del script. En el script se pueden usar estas variables: $env:servicePrincipalId, $env:servicePrincipalKey y $env:tenantId. Esto solo se respeta cuando el punto de conexión de Azure tiene un esquema de autenticación de entidad de servicio. El valor predeterminado es false. |
useGlobalConfig | (Opcional) Si es false, esta tarea usará su propio directorio de configuración de la CLI de Azure independiente. Se puede usar para ejecutar tareas de la CLI de Azure en versiones paralelas. Valor predeterminado: false |
workingDirectory | (Opcional) Directorio de trabajo actual donde se ejecuta el script. Si está vacío, es la raíz del repositorio (compilación) o de los artefactos (versión), que es $(System.DefaultWorkingDirectory). |
failOnStandardError | (Opcional) Si es true, la tarea no se llevará a cabo cuando se escriban errores en la secuencia StandardError. Anule la selección de la casilla para omitir los errores estándar y basarse en los códigos de salida para determinar el estado. El valor predeterminado es false. |
powerShellIgnoreLASTEXITCODE | (Opcional) Si es false, la línea if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } se anexa al final del script. Esto hará que el último código de salida de un comando externo se propague como el código de salida de PowerShell. De lo contrario, la línea no se anexa al final del script. El valor predeterminado es false. |
Si tiene problemas con la tarea de la CLI, consulte Solución de problemas de ejecuciones de canalizaciones. |